初识Spring Cloud系列——eureka集群

649 阅读3分钟

这是我参与更文挑战的第15天,活动详情查看: 更文挑战

什么是集群?

集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

为什么要用Eureka Server集群:

地位重要

服务注册中心是微服务架构中最基础的设施之一。 注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。作为调度全局的“线人”,一旦出事了,那么所有通过注册中心调度的服务将被切断,当然,如果一个错综复杂的系统,服务间的自个的调用也是存在的,这些调用不会受影响,但是我们使用注册中心的目的就是要把服务间的调用统一管理,微服务规划的越合理,那么这些复杂的内部调用也越少!

压力大

在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。 image.png

eureka集群流程

说明:

  • 服务注册:Register
  • 心跳续约:Renew
  • 服务下线:Cancle
  • 获取服务信息:Get Registry
  • 远程调用:Remote Call image.png

Eureka Server的工作原理

  • Eureka Server集群之间通过Replicate来同步数据
  • Eureka Server集群之间通过异步方式来同步状态
  • 所有节点都是平等的,不区分主从节点
  • 节点通过彼此相互注册来提高可用性(添加一个或多个有效的serviceUrl指向其他节点)

如何搭建集群?

eureka单例

使用上一篇搭建好的eureka单例

新增3个yml文件

在netflix-eureka-server项目中的resources目录下新增3个yml文件,三个文件主要区别就是hostname以及defaultZone的url不同

  • 对应的端口分别是8081、8082、8083

  • hostname为:eureka1、eureka2、eureka3

spring:
  application:
    name: eureka-server
server:
  port: 8081
eureka:
  instance:
    hostname: eureka1
  client:
    #表示不将将自己注册进EurekaServer,默认为true。
    register-with-eureka: false
    #表示不从EurekaServer抓取已有的注册信息,默认为true。
    fetch-registry: false
    service-url:
      defaultZone: http://eureka2:8082/eureka/,http://eureka3:8083/eureka

image.png

编辑配置

主要改动两个地方

Name

Name处可以自由命名,此案例为了方便区分,分别命名为EurekaServer-rep1,EurekaServer-rep2,EurekaServer-rep3

Active profiles

Active profiles这里的名字需要跟yml文件名对应,比如yml文件名叫application-rep1,那么这里就叫rep1,等会运行的时候才会调用到application-rep1.yml这个配置文件 image.png image.png

运行并访问

3个不同配置运行之后,浏览器访问url:http://localhost:8081/http://localhost:8082/http://localhost:8083/ 能看到浏览器上DS Replicas处由另外两个eureka server,代表集群成功运行了! image.png

image.png

今日小结 今天学了eureka集群的作用、调用过程、以及实现方式,好了,下一章再见!