Spring Cloud注册中心

1、 什么是注册中心

注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
服务提供者provider: 启动的时候向注册中心上报自己的网络信息。
服务消费者consumer: 启动的时候向注册中心上报自己的网络信息,拉取provider的相关网络信息。

2 、为什么需要注册中心

微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题。

  • 主流的注册中心:zookeeper、Eureka、consul、etcd 等

3、分布式应用知识CAP定理

CAP定理:指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。

  • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有节点在同一时间的数据完全一致,越多节点,数据同步越耗时)。
  • 可用性(A):负载过大后,集群整体是否还能响应客户端的读写请求。(服务一直可用,而且是正常响应时间)。
  • 分区容错性(P):分区容忍性,就是高可用性,一个节点崩了,并不影响其它的节点(100个节点,挂了几个,不影响服务,越多机器越好)。

4、分布式系统CAP注册中心选择

CAP三者不可同时获得的原因:

  1. C A 满足的情况下,P不能满足的原因:
    数据同步(C)需要时间,也要正常的时间内响应(A),那么机器数量就要少,所以P就不满足。
  2. CP 满足的情况下,A不能满足的原因:
    数据同步(C)需要时间, 机器数量也多(P),但是同步数据需要时间,所以不能再正常时间内响应,所以A就不满足。
  3. AP 满足的情况下,C不能满足的原因:
    机器数量也多(P),正常的时间内响应(A),那么数据就不能及时同步到其他节点,所以C不满足。
注册中心选择:
  • Zookeeper:CP设计,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性没法满足
  • Eureka:AP原则,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化
    结论:没有最好的选择,最好是根据业务场景来进行架构设计

    注册中心对比图:
    注册中心对比图

5、注册中心搭建(使用IDEA)

File --> New -->Project

  • 拉取项目
  • 打开项目在启动类添加注解@EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
  • 增加配置application.yml
    (配置文件默认是application.properties格式,如需修改为yml直接重命名即可)
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
  #声明自己是个服务端
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  • 启动项目 访问注册中心页面
    http:// localhost:8761

6、创建服务提供者向注册中心上报

  • 如上所示创建注册中心一样创建项目,不同的是选择依赖如下:
  • 开发接口
  • 增加配置application.yml
server:
  port: 8771

#服务的名称
spring:
  application:
    name: product-service

#指定注册中心地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  • 启动服务
    此时访问注册中心地址:http:// localhost:8761 就可以看到如下注册的服务了

7、Eureka服务注册中心配置控制台问题

  1. eureka管理后台出现一串红色字体:是警告,说明有服务上线率低

    由于自我保护模式默认是开启状态
    关闭检查方法:eureka服务端配置文件加入

server:
  enable-self-preservation: false

注意:不建议关闭,因为关闭会导致如若因为网络问题没上报至注册中心的服务也会被认为挂掉而清除掉了此服务。

  1. 为什么只加一个注册中心地址,就可以注册,而且很多资料显示启动类加注解@EnableEurekaClient
    查阅官网,给出解释如下:
    官方文档:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-eureka-server

你可能感兴趣的:(Spring Cloud注册中心)