CAP定理、Ribbon、OpenFeign
CAP定理及不同服务注册中心的区别
CAP
- C:Consistency(强一致性)
- A:Availability(可用性)
- P:Partition tolerance(分区容错性)
核心理论
一个分布式系统不可能同时很好的满足一致性,可用性,分区容错性这三个需求
根据CAP原理将NoSql数据库分为满足CA原则,CP原则,AP原则的三大类
- CA——单点集群,满足一致性,可用性的系统;扩展性不高
- CP——满足一致性,分区容错性的系统;性能不高
- AP——满足可用性,分区容错性的系统;对一致性要求低
| 组件名 | 语言 | CAP | 服务健康检查 | 对外暴露接口 | Spring Cloud集成 |
|---|---|---|---|---|---|
| Eureka | Java | AP | 可配支持健康检查 | HTTP | 集成 |
| Consul | GO | CP | 支持健康检查 | HTTP、DNS | 集成 |
| Zookeeper | Java | CP | 支持健康检查 | 客户端 | 集成 |
Ribbon的使用,最新版本中已经集成至common包中
DiscoveryClient
List<ServiceInstance> instances = discoveryClient.getInstances("illriver-bbs-users");
LoadBalancerClient
ServiceInstance choose = loadBalancerClient.choose("illriver-bbs-users");
@LoadBalanced

OpenFeign 声明式http客户端
添加OpenFeign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
添加启动类注解 @EnableFeignClients

具体实现
-
编写Client接口使用@FeignClient("illriver-bbs-goods")注解
-
GET传参方式,Client接口参数上必须使用@RequestParam("value")注解,且value为服务提供方参数名称一致。
-
POST传参方式,必须使用@RequestBody注解
超时设置及日志设置
openfeign必须在日志级别为debug级别才会记录日志,日志记录级别有:
- NONE:不记录任何日志
- BASIC:仅仅记录请求方式,url,响应状态代码及执行时间
- HEADERS:在BASIC基础上增加请求和响应的headers
- FULL:在HEADERS的基础上增加body和元数据
针对单个服务方或者全部服务设置如下图:


浙公网安备 33010602011771号