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和元数据
针对单个服务方或者全部服务设置如下图:

posted @ 2021-11-02 23:55  illriver  阅读(73)  评论(0)    收藏  举报