Eureka 集群原理

基本原理

上图是来自eureka的官方架构图,这是基于集群配置的eureka;

  • 处于不同节点的eureka通过Replicate进行数据同步
  • Application Service为服务提供者
  • Application Client为服务消费者
  • Make Remote Call完成一次服务调用

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。

Eureka 单机版到集群的改造过程

新建 两个Eureka模块项目

新建模块(springcloudDemo-Eureka-7002和 springcloudDemo-Eureka-7003),至于如何在父项目下新建模块请参考Eclipse构建Maven分包项目并构建服务端


注: 截图中对应的Eureka 即三个Eureka服务构成Eureka集群

复制 springcloudDemo-Eureka-7001 中的内容

由于是学习SpringCloud Eureka 所以Eureka服务没有太多操作,所以将之前的设置的单机版Eureka 内容复制过来


下的内容,分别拷贝到对应的其他Eureka集群成员中
特别注意:请不要为了方便直接拷贝Eclipse中springcloudDemo-Eureka-7001中的内容,直接到其他的项目中,这样做是会报错的。。。 所以别偷懒!!!

修改新建的两个模块的启动类名称

这个也可以不修改,没有啥太大的影响

修改hosts中的映射

Windows 位置: C:\Windows\System32\drivers\etc

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com
127.0.0.1  eureka7003.com

修改三个Eureka服务的配置文件

下面针对三个服务的配置文件进行相应的说明:

  • springcloudDemo-Eureka-7001
    需要和另外两个服务的路由地址相连接
server: port: 7001eureka:instance:hostname: eureka7001.com #eureka服务端的实例名称, C:\Windows\System32\drivers\etc 的hosts已经加入映射client:register-with-eureka: false #false表示不向注册中心注册自己。fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:#单机#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/        #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。#集群defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  • springcloudDemo-Eureka-7002
server: port: 7002eureka:instance:hostname: eureka7002.com #eureka服务端的实例名称, C:\Windows\System32\drivers\etc 的hosts已经加入映射client:register-with-eureka: false #false表示不向注册中心注册自己。fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:#单机#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/        #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。#集群defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
  • springcloudDemo-Eureka-7003
server: port: 7003eureka:instance:hostname: eureka7003.com #eureka服务端的实例名称, C:\Windows\System32\drivers\etc 的hosts已经加入映射client:register-with-eureka: false #false表示不向注册中心注册自己。fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:#单机#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/        #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。#集群defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

服务提供者将配置文件从单机版修改为集群

原理: 服务注册的时候,从注册到一台修改为注册到多台

   #单机版#defaultZone: http://localhost:7001/eurekadefaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

测试

分别启动三个Eureka服务,形成Eureka集群,之后在启动服务提供者

打开浏览器分别输入:

  • http://eureka7001.com:7001/
  • http://eureka7002.com:7002/
  • http://eureka7003.com:7003/

    可以查看 服务8001,已经注册到三台Eureka集群中,Eureka集群正常启动。
    注: 为什么 http://eureka7003.com:7003/ 界面会报错,这是因为Eureka 保护机制导致,并不影响。

至此,从上一篇单机版到集群Eureka的改造完成。 至于服务消费者访问,由于现在只有一个生产者,所以目前不是很明显,之后会构建服务生产者集群,然后在测试服务消费者,这样会比较好比较。

如何将单机版的Eureka服务改为集群版Eureka服务相关推荐

  1. 淘淘商城第39讲——使用Spring来管理单机版Redis与集群版Redis

    我们知道Jedis在处理Redis的单机版和集群版时是完全不同的,有可能在开发的时候使用的是单机版,但是当项目上线后使用的则是集群版,这就需要能够方便的在单机版和集群版之间进行切换了.我们的做法便是定 ...

  2. EureKa服务注册与发现(集群部署Eureka与支付模块集群部署、订单模块访问负载均衡调用支付服务实现)

    上一遍文章完成了,聚合父工程.消费模块.支付模块.公共模块的搭建.RestTemplate调用支付模块 该篇项目创建gitv2.0的管理分子完成学习 1.Eureka基础知识 1.1. 什么是服务治理 ...

  3. eureka服务注册中心集群模式创建

    Eureka组件是springcloud提供的服务注册与发现中心组件 这里创建Eureka server 端的一个集群环境 Eureka服务端运行依赖于spring工程,其集群环境搭建,需要创建spr ...

  4. 创建集群版的Eureka注册中心

    我们搭建了一个Eureka服务注册中心,就是Eureka Server,他提供了服务的注册和发现,那么其实对于Eureka服务注册中心来讲,我们整个微服务开发当中,它是一个非常重要的环节,我们所有的服 ...

  5. 快速搭建redis单机版和redis集群版

    单机版 第一步:需要安装redis所需的C语言环境,若虚拟机联网,则执行 yum install gcc-c++ 第二步:redis的源码包上传到linux系统 第三步:解压缩redis   tar ...

  6. SpringCloud(二)——Eureka的使用和集群搭建

    文章目录 1:Eureka是什么? 2:EurekaServer服务注册中心建立 3:将已有的微服务注册进Eureka服务中心 4:Eureka的集群模式 5:actuator微服务信息完善[可选择配 ...

  7. SpringCloud的入门学习之Netflix-eureka(Eureka的集群版搭建)

    1.Eureka单机版的话,可能会出现单点故障,所以要保障Eureka的高可用,那么可以进行搭建Eureka的集群版. 高可用的Eureka的注册中心,将注册中心服务部署到多台物理节点上,形成一个集群 ...

  8. 【SpringCloud】三、Nacos服务注册+配置管理+集群搭建

    文章目录 一.认识Nacos 1.安装 2.服务注册和发现 3.服务分级存储模型 4.负载均衡策略--NacosRule 5.服务实例的权重设置 5.环境隔离namespace 6.Eureka和Na ...

  9. redis在Windows下以后台服务一键搭建集群(多机器)

    redis在Windows下以后台服务一键搭建集群(多机器) 一.概述 此教程介绍如何在windows系统中多台机器之间布置redis集群,同时要以后台服务的模式运行.布置以脚本的形式,一键完成.多台 ...

最新文章

  1. 重磅!公开课|四旋翼飞行器:算法与实战
  2. Xilinx zynq的资料获取总结
  3. hdu5452(2015沈阳网络赛C题)
  4. php框架中uri路由机制,URI 路由 — CodeIgniter 3.1.5 中文手册|用户手册|用户指南|中文文档...
  5. 在Xcode6中搭建Python开发环境
  6. html text align属性,HTML canvas
  7. snort入侵检测系统下载Linux,入侵检测系统Snort 2.9.0.2 发布
  8. python编译器无法运行input_为何python多线程程序在末尾添加input()能运行,不添加就不能运行...
  9. 【Elasticsearch】数据预加载
  10. SCI从入门到精髓(三)——如何写出牛文章
  11. Qt:多线程--子线程间通讯
  12. 笔记本新机全新安装XP时遇到问题的解决方案(针对新的Vista机型装xp的解决方案)...
  13. 一别西湖,又是江南烟雨
  14. 条码和自动识别的基础知识
  15. 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践
  16. 软件测试之第三方快捷支付_支付宝遭遇最强对手:银联正面PK快捷支付
  17. hdu 1024 Max Sum Plus Plus(dp 最大m子段和)
  18. linux重启和关闭系统命令
  19. Unity动画机制 Animator与Animator Controller教程
  20. visio2017里让字体大小随框自动调节步骤

热门文章

  1. linux硬件配置_Linux硬件配置
  2. hashmap put方法_Java HashMap put()方法与示例
  3. 图形学 射线相交算法_计算机图形学中的阴极射线管(CRT)
  4. Java GregorianCalendar hashCode()方法与示例
  5. 如何打印出给定尺寸的方格_打印给定号码的表格| 8085微处理器
  6. php属于脚本,php是脚本语言吗
  7. portlet java_Java Portlet 规范概述
  8. linux系统层次结构_Linux文件系统层次结构问题和解答
  9. 这个 bug 让我更加理解 Spring 单例了
  10. HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期...