申明式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