二.Spring Cloud服务消费者实践(Rest + Ribbon)

开宗明义
在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的,Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。

ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。

1 创建第二个服务

1.1修改service-hi的端口,以此作为第二个服务


Screenshot from 2018-02-21 18-48-59.png

1.2 启动第二个服务


Screenshot from 2018-02-21 18-51-16.png

1.3 通过浏览器访问注册中心界面(此时可发现两个service-hi服务,端口分别为8766,8767)


Screenshot from 2018-02-21 18-52-47.png

2 建立一个服务消费者

2.1 创建springboot工程作为服务消费者,命名为service-ribbon


Screenshot from 2018-02-21 19-00-09.png

2.2 配置application.yml文件(定服务的注册中心地址为http://localhost:8765/eureka/,程序名称为 service-ribbon,程序端口为8768

Screenshot from 2018-02-21 19-03-51.png

2.3 启动类中,通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能


Screenshot from 2018-02-21 19-08![image](http://upload-images.jianshu.io/upload_images/7509739-5b58cd8118cac6c5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -50.png

2.4 写一个测试类HelloService,通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名


Screenshot from 2018-02-21 19-16-50.png

2.5 写一个HelloController调用HelloService


Screenshot from 2018-02-21 19-18-45.png

2.6 启动service-ribbon


Screenshot from 2018-02-21 19-20-45.png

2.7 多次访问localhost:8768/hi?name=Silent-Y,发现端口交替,明当我们通过调用restTemplate.getForObject(“http://SERVICE-HI/hi?name=“+name,String.class)方法时,已经做了负载均衡,访问了不同的端口的服务实例

Screenshot from 2018-02-21 19-23-45.png

Screenshot from 2018-02-21 19-23-54.png

2.8 此时的架构
2.8.1 一个服务注册中心,eureka server,端口为8765
2.8.2 service-hi工程跑了两个实例,端口分别为8766,8767,分别向服务注册中心注册
2.8.3 sercvice-ribbon端口为8768,向服务注册中心注册
2.8.4 当sercvice-ribbon通过restTemplate调用service-hi的hi接口时,因为用ribbon进行了负载均衡,会轮流的调用service-hi:8762和8763 两个端口的hi接口

未完待续......

你可能感兴趣的:(二.Spring Cloud服务消费者实践(Rest + Ribbon))