3.springcloud从0单排之3eureka 建立高可用的eureka

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42199791/article/details/100152884

建立高可用的eureka

我们学习了eureka,今天我们来建立一个高可用的eureka集群

Eureka架构详解

  • Application Service:服务提供者;

  • Application Client:服务消费者;

  • Make Remote Call调用RESTful API;

  • us-east-1c、us-east-1d等都是Availability Zone,它们都属于us-east-1这个region

由图可知,Eureka包含两个组件:Eureka Server 和 Eureka Client,它们的作用如下:

  • Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Server会存储这些信息;

  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互;

  • 微服务启动后,会周期性(默认30秒)地向Eureka Server发送心跳以续约自己的“租期”;

  • 如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒);

    扫描二维码关注公众号,回复: 7662941 查看本文章
  • 默认情况下,Eureka Server同时也是Eureka Client。多个Eureka Server实例,互相之间通过增量复制的方式,来实现服务注册表中数据的同步。Eureka Server默认保证在90秒内,Eureka Server集群内的所有实例中的数据达到一致(从这个架构来看,Eureka Server所有实例所处的角色都是对等的,没有类似Zookeeper、Consul、Etcd等软件的选举过程,也不存在主从,所有的节点都是主节点。Eureka官方将Eureka Server集群中的所有实例称为“对等体(peer)”)

  • Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势——首先,微服务无需每次请求都查询Eureka Server,从而降低了Eureka Server的压力;其次,即使Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。

综上,Eureka通过心跳检查、客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性。

编写代码:

编写高可用Eureka Server

下面来编写一个双节点Eureka Server集群。编写这个集群非常简单,只需修改单实例Eureka Server的配置即可:

在eureka-server工程中resources文件夹下,修改配置文件application.yml:


server:
  port: 8761

eureka:
  instance:
    hostname: 192.168.101.101
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://192.168.101.102:8762/eureka/

spring:
  application:
    name: eurka-server

再新建一个在eureka-server工程,修改配置文件application.yml:


server:
  port: 8762

eureka:
  instance:
    hostname: 192.168.101.102
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://192.168.101.101:8761/eureka/

spring:
  application:
    name: eurka-server

再新建一个eureka-client工程,修改配置文件application.yml:


server:
  port: 8763

spring:
  application:
    name: service-client

eureka:
  client:
    serviceUrl:
      defaultZone: http://192.168.101.101:8761/eureka/, http://192.168.101.102:8762/eureka/

打包部署到各自的服务器上即可

猜你喜欢

转载自blog.csdn.net/weixin_42199791/article/details/100152884