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