SpringCloud——服务注册与发现

写在开头:网上关于springcloud的教程已经很多了,本系列博文不会去大家如何从头构建一个项目,只是对SpringCloud中的各个知识点做详细的阐述,同时把一些细节提供给大家作参考


(1)各个微服务提供方与服务发现组件之间使用一定的机制(心跳机制)进行通信,以保证服务的可用性。默认情况下注册中心每隔30秒向服务提供方发送一次请求来确保服务的可用;如果超过90秒未得到响应,则判定该服务异常,从服务注册表中移除该服务,这是EurekaServer默认开启的“自我保护机制”。但有时90秒未得到心跳响应并不是服务本身的问题,而是由于外界原因,比如网络原因等,此时该服务不该被移除。我们可以在application.yml或application.properties文件中关闭Eureka的自我保护:eureka.server.enable-self-preservation: false
(2)EurekaServer的高可用:可以创建多个EurekaServer实例,通过相互注册的方式实现高可用;同时在application.yml或application.properties文件中设置
"eureka.client.fetchRegistry = true",表示同步各个注册中心中的服务注册信息。
(3)在SpringCloud除了可以使用Eureka服务发现组件,还可以使用Zookeeper、consul等。@EnableDiscoveryClient注解为各种服务发现组件都提供了支持,而使用@EnableEurekaClient仅为Eureka组件提供了支持。所以通常使用前者。
(4)EurekaServer默认允许匿名访问,可能存在安全性问题,所以我们可以为其添加用户认证:
第一步:引入”spring-cloud-starter-security”依赖;
第二步:在application.yml或application.properties文件中设置:

security:
  basic:
    enabled: true
  user:
    name: user
    password: 123456

第三步:此时再访问注册中心时就需要填写用户认证。同时向带有用户认证的注册中心注册服务时也需要提供认证信息:

http://user:123456@localhost:8761/eureka/

(5)访问注册中心,我们可以在页面中看到注册服务的status栏有”up”的标识
这里写图片描述
   这里代表的是注册中心与微服务之间的通信状态,”UP”表示心跳机制正常,同时还有DOWN、OUT_OF_SERVICE、UNKNOWN等状态。但心跳机制并不能完全反映应用程序的状态,比如微服务内部由于网络等原因连接不到数据源,但此时心跳机制仍然是正常的,所以我们需要通过以下设置将服务的健康信息传播到注册中心:

eureka:
   client:
       healthcheck:
           enabled: true

猜你喜欢

转载自blog.csdn.net/qq_29468573/article/details/81122618