架构师入门:搭建双注册中心的高可用Eureka架构(基于项目实战)

  • 时间:
  • 浏览:44
  • 来源:QQ流氓馆_提供QQ核心乐园技术_QQ业务乐园资讯

    在这个 集群里,朋友 将配置2台相互注册的Eureka服务器,但是一来,每台服务器都带有着对方的服务注册信息,至少 双机热备,同時 ,服务提供者只需向其中的另好几个 注册服务。

    在并发要求更高的环境里,朋友 甚至可不可不还都上能搭建2台以上的服务器,不过事实上,双机热备的集群能满足大多数的场景,一方面,一定会每个系统的并发量都很高,什么都 双机热备足以满足大多数的并发需求,每每人及面,毕竟两台服务器同時 宕机的前一天性但是大。    

    关闭后,朋友 在浏览器里输入http://ekserver1:60 60 /hello,我其实朋友 在服务提供者和服务调用者的application.yml里指定的serviceUrl.defaultZone一定会http://ekServer1:8888/eureka/,但在一台Eureka服务器失效的请况下,朋友 依然能看完正确的结果,如下图所示。

    第三步,前一天在真实项目里,朋友 一般会在两台主机上启动另好几个 Eureka服务,什么都 这里朋友 再创建另好几个 Maven类型的项目ek-cluster-server-backup,和前一天的ek-cluster-server相比,它们的差别还是在application.yml,代码如下。   

    但是,前一天服务器A或B宕机,没办法 另一台服务器依然可不可不还都上能向内部内部结构提供服务列表,服务调用者依然可不可不还都上能据此调用服务。

    第一步,到C:\WINDOWS\system32\drivers\etc目录里,找到hosts文件,在其中加入另好几个 机器名(我我其实一定会指向本机),代码如下。修改后,可不还都上能重启机器。

    朋友 别以为这是危言耸听,在高并发的场景下(比如双十一的并发环境),这个 请况趋于稳定的前一天性不低。针对这个 场景,这里朋友 将部署两台Eureka注册中心,彼此相互注册,以此搭建另好几个 可用性比较高的Eureka集群。

    第三,     ek-cluster-ServiceProvider(服务提供者)。

    

    前一天这里另好几个 Eureka服务器是相互注册,什么都 本服务提供者不不同時 向另好几个 服务器注册,前一天一旦向ekServer1注册后,该服务器会自动把这个 服务提供者的信息群克隆到ekServer2上。   

    第二步,创建ek-cluster-server项目,这我我其实是根据上文 架构师入门:搭建基本的Eureka架构(从项目里抽取) 里的EurekaBasicDemo-Server项目改写而来,和前一天的项目相比,朋友 只改动了application.yml文件,代码如下。    

    本文的案例是基于 架构师入门:搭建基本的Eureka架构(从项目里抽取) 改写的。

          127.0.0.1       ekServer1

    我其实在集群里搭建了两台服务器,但服务提供者只需向其中的一台注册即可,或者高可用的便利性就会以牺牲代码可维护性为代价了。

    这里朋友 是在ek-cluster-ServiceProvider项目编写服务提供任务管理器,它是根据上文架构师入门:搭建基本的Eureka架构(从项目里抽取)里的项目EurekaBasicDemo-ServerProvider改写而来,其中只修改了application.yml次要的代码。    

    这里为了演示方便,朋友 在一台机器上模拟双服务器的场景,在真实项目里,朋友 一般是把另好几个 相互注册的服务器安装在两台主机上,前一天前一天只安装在一台上,没办法 该服务器趋于稳定故障说说,另好几个 服务器一定会失效。具体的实现步骤如下。

    我其实这里朋友 也可不可不还都上能通过http://localhost:8888/和http://localhost:8889/看完相同的效果,但不推荐。这是前一天,在真实的项目里,Eureka的服务器应该是和开发机器分开的,也但是说它们应该被部署在其它机器上,只不过这里朋友 为了演示方便,把它们都装在本机。

        

    改动点还是在第9行上,这里是向ekServer1服务器的8888号端口注册,同理,这里不不向另外另好几个 机器(ekServer2)注册。

    每每人及保留本文中文字和代码的版权,转载请注明出处。

    第一,     ek-cluster-server(第另好几个 Eureka服务器)。

     朋友 把服务调用者的代码装在ek-cluster-ServiceCaller这个 Maven项目里,这是根据前一天里的EurekaBasicDemo-ServerCaller项目改写而来。其中朋友 也只修改application.yml代码。    

    每每人及在写完java web轻量级开发面试教程后,再想写一本Spring Cloud方面的书,请各位大神谁能告诉我该写哪些地方方面的内容,前一天是提些建议,谢谢了。

    但是,朋友 能在http://ekserver1:8888/和http://ekserver2:8889/这个 另好几个 浏览器上看完如下图所示的好几个 可用的服务。前一天是相互注册,什么都 它们的内容是一样的。

    前一天朋友 我应该 本案例中代码,请给我站内留言。

    第二,     ek-cluster-server-backup(第好几个 Eureka服务器)。

    这里朋友 可不可不还都上能故意关闭ek-cluster-server服务,以此来模拟一台服务器宕机的请况。

    前一天朋友 在刚才关闭的是ek-cluster-server-backup,让ek-cluster-server运行,这里朋友 还是能看完同样的效果。也但是说,在这个 Eureka双服务器的集群里,一台服务器宕机后,整个服务体系依然可用,这就大大提升的系统的可用性。

    这里的端口号没变,依然是8888,但朋友 在第5行把项目名修改成ekServer1,在第8行把提供服务的主机名也修改成ekServer1,在第11行,朋友 指定了本服务所在的rul,这里请注意,朋友 把ekServer1所在的serverUrl指定到ekServer2的8889端口上,也但是说,这里朋友 指定ekServer1向ekServer2注册。

    这里的配置信息我我其实和刚才的是对偶的,这里的application名和主机名都叫ekServer2,不过请注意第11行,这里的serviceUrl是注册到ekServer1的8888端口上,这里朋友 同样指定ekServer2向ekServer1注册。结合上文,至此朋友 实现了双服务器之间的相互注册。    

    

    按如下次序启动好几个 项目的Spring Boot服务。

    在上文里,朋友 演示Eureka客户端调用服务的整个流程,在这次要里朋友 将在架构上有所改进。朋友 可不可不还都上能想象下,在上文里案例中,Eureka注册中心只部署在一台机器上,但是它一旦出現大间题,会由于整个服务调用系统的崩溃,前一天这个 请况趋于稳定在生产环境上,后果是不堪设想的。

    和前一天一样,这里的输出还是“In Caller, hello Eureka“,这说明双机热备的Eureka架构至少 不不影响基本的功能。同样,这里不建议通过http://localhost:60 60 /hello来查看运行效果。 

    第四,     ek-cluster-ServiceCaller(服务调用者)。

    当朋友 确认服务启动后,可不可不还都上能在浏览器里输入http://ekserver1:60 60 /hello来查看服务调用的效果,这里我我其实触发了ek-cluster-ServiceCaller中Controller里的hello最好的依据。

          127.0.0.1       ekServer2

    朋友 只改动了第9行的代码,这说明本服务是向ekServer1的8888号端口注册。