第二篇 服务消费者(rest ribbon)(Finchley版本)V2.0_dev
前言:
在微服務(wù)架構(gòu)中,業(yè)務(wù)都會被拆分成一個獨立的服務(wù),服務(wù)與服務(wù)的通訊是基于http restful的。
Spring cloud有兩種服務(wù)調(diào)用方式:
| 第二種 | feign |
一種是ribbon+restTemplate
另一種是feign。在這一篇文章首先講解下基于ribbon+rest。
一、ribbon簡介
ribbon是一個負載均衡客戶端,可以很好的控制htt和tcp的一些行為。Feign默認集成了ribbon
二、準備工作
這一篇文章基于上一篇文章的工程
這時你會發(fā)現(xiàn):service-hi在eureka-server注冊了2個實例,這就相當于一個小的集群。
三、建一個服務(wù)消費者
- 重新新建一個spring-boot工程,取名為:service-ribbon;
在它的pom.xml繼承了父pom文件,并引入了以下依賴:
在工程的配置文件指定:
| 程序名稱 | service-ribbon |
| 程序端口 | 8764 |
- 服務(wù)的注冊中心地址:http://localhost:8761/eureka/,
- 程序名稱為 service-ribbon,
- 程序端口為8764
- 配置文件application.yml如下:
- 在工程的啟動類中,通過@EnableDiscoveryClient向服務(wù)中心注冊;
- 并且向程序的ioc注入一個bean: restTemplate;
- 并通過@LoadBalanced注解表明這個restRemplate開啟負載均衡的功能
四、 在service-ribbon應(yīng)用中
- 新建service包并創(chuàng)建一個測試接口類HelloService
- 在新建service包下面新建impl包,并創(chuàng)建一個測試實現(xiàn)類HelloServiceImpl
- 通過之前注入ioc容器的restTemplate來消費service-hi服務(wù)的“/hello”接口;
- 在這里我們直接用的程序名替代了具體的url地址,在ribbon中它會根據(jù)服務(wù)名來選擇具體的服務(wù)實例,根據(jù)服務(wù)實例在請求的時候會用具體的url替換掉服務(wù)名
代碼如下:
測試接口類HelloService
測試實現(xiàn)類HelloServiceImpl
@Service public class HelloServiceImpl implements HelloService {@Autowiredprivate RestTemplate restTemplate;@Overridepublic String hiService(String myName) {return restTemplate.getForObject("http://SERVICE-HI//hello?myName="+myName,String.class);} }- 在service-ribbon應(yīng)用中新建controller包結(jié)構(gòu),并創(chuàng)建HelloControler前前端測試類
在controller中用調(diào)用HelloService 的方法,代碼如下:
五、啟動service-ribbon工程
-
訪問Eureka注冊中心地址:http://localhost:8761
-
已成功注冊到注冊中心上了
六、在瀏覽器上多次訪問
http://localhost:8764/hi?name=gblfy,
瀏覽器交替顯示:
- 負載均衡
這說明當我們通過調(diào)用
restTemplate.getForObject(“http://SERVICE-HI/hi?name=”+name,String.class)方法時,已經(jīng)做了負載均衡,訪問了不同的端口的服務(wù)實例。
七、此時的架構(gòu)
- 一個服務(wù)注冊中心,eureka server,端口為8761
- service-hi工程跑了兩個實例,端口分別為8762,8763,分別向服務(wù)注冊中心注冊
- sercvice-ribbon端口為8764,向服務(wù)注冊中心注冊
- 當sercvice-ribbon通過restTemplate調(diào)用service-hi的hi接口時,因為用ribbon進行了負載均衡,會輪流的調(diào)用service-hi:8762和8763 兩個端口的hi接口
本文源碼下載:
dev分支(最新企業(yè)實戰(zhàn)版本):
https://github.com/gb-heima/springcloud-practical-column/tree/dev/sc-f-chapter2
master分支(入門版本):
https://github.com/gb-heima/springcloud-practical-column/tree/master/sc-f-chapter2
總結(jié)
以上是生活随笔為你收集整理的第二篇 服务消费者(rest ribbon)(Finchley版本)V2.0_dev的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改Tomcat默认的端口
- 下一篇: git下载安装、验证、企业实战单机、多人