申明式Web服務客戶端:Feign
申明式:接口聲明、Annotation驅動
Web服務:HTTP的方式作爲通訊協議
客戶端:用於服務調用的存根
Feign:原生並不是Spring Web MVC的實現,基於AX-RS(Java REST規範)實現。Spring Cloud封裝了Feign,使其支持Spring Web MVC。RestTemplate
、HttpMessageConverter
- RestTemplate 以及Spring Web MVC可以顯示地自定義HttpMessageconverter]實現。
假設,有一個Java接口Personservice
,Feign可以將其聲明它是以HTTP方式調用的。
需要服務組件(SOA):
- 註冊中心(Eureka Server):服務發現和註冊
a. 應用名稱:spring-cloud-eureka-server
b. 服務端口:12345 - Feign客戶(服務消費)端:調用Feign中明接口
1.應用名稱:person-client - Feign 服務(服務提供)端:不一定強制實現Feign申明接口
1.應用名稱:person-service - Feign聲明接口(契約):定義一種Java強類型接口
person-api
- Feign客戶(服務消費)端、Feign服務(服務提供)端以及Feign聲明接口(契約)存放在同一個工程目錄。
person-client 可以感知 person-service應用存在的,並且Spring Cloud 幫助解析PersonService中聲明的應用名稱:“person-service",因此person-client 在調用Personservice服務時,實際就路由到person-
service的URL
實現Ribbon的規則
- Rule
- 隨機規則:RandomRule
- 最可用規則:BestAvailableRule
- 輪訓規則:RoundRobinRule
- 重試實現:RetryRule
- 客戶端配置:ClientConfigEnabledRoundRobinRule
- 可用性過濾規則:AvailabilityFilteringRule
- RT權重規則:WeightedResponseTimeRule
- 規避區域規則:ZoneAvoidanceRule