高可用的服务注册中心

前面的服务的注册与发现(Eureka) 介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这篇文章主要介绍怎么将Eureka Server集群化。

一、准备工作

Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.

摘自官网

Eureka通过运行多个实例,使其更具有高可用性。事实上,这是它默认的熟性,你需要做的就是给对等的实例一个合法的关联serviceurl。

这篇文章我们基于第一篇文章的工程,来做修改。

二、改造工作

在eureka-server工程中resources文件夹下,创建配置文件application-peer1.yml:

server:
  port: 8761

spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8769/eureka/

并且创建另外一个配置文件application-peer2.yml:

server:
  port: 8769

spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/

这时eureka-server就已经改造完毕。

ou could use this configuration to test the peer awareness on a single host (there’s not much value in doing that in production) by manipulating /etc/hosts to resolve the host names.

按照官方文档的指示,需要改变etc/hosts,Linux系统通过vim /etc/hosts ,加上:

127.0.0.1 peer1
127.0.0.1 peer2

windows电脑,在c:/windows/systems/drivers/etc/hosts 修改。

这时需要改造下service-hi:

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/
server:
  port: 8762
spring:
  application:
    name: service-hi

三、启动工程

启动eureka-server:

Java -jar eureka-server-0.0.1-SNAPSHOT.jar - -spring.profiles.active=peer1

java -jar eureka-server-0.0.1-SNAPSHOT.jar - -spring.profiles.active=peer2

启动service-hi:

java -jar service-hi-0.0.1-SNAPSHOT.jar

访问:localhost:8761,如图:

你会发现注册了service-hi,并且有个peer2节点,同理访问localhost:8769你会发现有个peer1节点。

client只向8761注册,但是你打开8769,你也会发现,8769也有 client的注册信息。

个人感受:这是通过看官方文档的写的demo ,但是需要手动改host是不是不符合Spring Cloud 的高上大?
Prefer IP Address

In some cases, it is preferable for Eureka to advertise the IP Adresses of services rather than the hostname. Set eureka.instance.preferIpAddress to true and when the application registers with eureka, it will use its IP Address rather than its hostname.

摘自官网

eureka.instance.preferIpAddress=true是通过设置ip让eureka让其他服务注册它。也许能通过去改变去通过改变host的方式。

此时的架构图:

Eureka-eserver peer1 8761,Eureka-eserver peer2 8769相互感应,当有服务注册时,两个Eureka-eserver是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。

本文源码下载:
https://github.com/forezp/SpringCloudLearning/tree/master/chapter10

文章来源:http://blog.csdn.net/forezp/article/details/70183572

时间: 2024-10-26 11:15:01

高可用的服务注册中心的相关文章

springcloud微服务二:Eureka服务治理之服务注册中心

当初步的学习了spring boot,了解了spring boot的基本实现过程后,我就正式开始学习spring cloud,首先就从Eureka服务治理开始. 服务治理包含三个核心的角色:服务注册中心.服务提供者和服务消费者,他们相对独立,新的服务要向服务注册中心注册,新的消费者会向服务注册中心索引服务列表. 一番了解之后,让我想到了人才招聘.在我看来,现在普遍存在的招聘形式也是分为了三个部分:招聘网站或者人才市场.发布招聘需求的企业.需要找工作的人.当然了,也可以把企业和人换一下位置,那就是

【先锋】万国数据高可用云服务背后是强大的服务运维+开放平台

在9月份的"2014全球云计算大会"上,万国数据正式发布了GDS云灾备解决方案,这一举措进一步巩固了其作为中国灾难恢复行业领军企业的地位,成立于2000年的万国数据,开始阶段主要以灾备业务为主,从2007年开始拓展整个数据中心业务,目前在上海.深圳.昆山.成都都拥有自建的高等级数据中心,全国范围内有17个数据中心在运营.在和万国数据高级副总裁陈怡琳的采访中,提及以后有无向北美.欧洲等地区扩展时,她表示,客户到哪里,我们便响应到哪里. 万国数据高级副总裁 陈怡琳 凭借世界级新一代数据中心

soap-web服务注册中心的设计

问题描述 web服务注册中心的设计 需要实现一个应用服务器,windows平台,按照客户端的请求,可以查询服务(这些服务分散在其他的服务器上,查到之后再返回响应,最简单的服务自然是返回一个html页面,由其他服务器返回,而不通过这个应用服务器,),其他服务器也可以在该应用服务器的注册中心注册它的服务.需要写一个daemon进程,实时等候客户端的请求.想问一下,用什么语言开发最好,c++中的gsoap,java中有juddi等跟这个有关系吗,整体的软件架构思路是什么,注册中心用什么数据库较适合 解

基于Hadoop的分布式服务注册中心研究和实现

基于Hadoop的分布式服务注册中心研究和实现 上海交通大学  杨柳 在分析了Web服务注册中心和云计算平台的基础上,本文提出了一种建立在云上的分布式服务注册中心的应用模型,称为HDSR (Hadoop-based Distributed Service Registry),它采用了Hadoop云平台来实现.该模型既可以支持基于服务行为的服务发现工作,也可以支持基于服务质量的服务发现工作.本文重点研究了服务数据的分布式存储与并行查询在Hadoop平台上的实现.在HDSR中,Hadoop分布式文件

高可用的分布式配置中心(Spring Cloud Config)

上一篇内容讲述,一个服务如何从配置中心读取文件,配置中心如何从远程Git读取配置文件,当服务很多时,都需要同时从配置中心读取文件的时候,这时我们可以考虑将配置中心做成一个微服务,并且将其集群化,从而达到高可用,架构图如下: 一.准备工作 继续使用上一篇文章的工程,创建一个eureka-server工程,用作服务中心. 其pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q

基于资源编排在专有网络环境下快速部署高可用的Dubbox服务(ZooKeeper版)

本文将介绍在专有网络VPC(Virtual Private Cloud)下,基于资源编排服务,快速部署高可用的Dubbox服务的过程.Dubbox服务采用的注册中心是ZooKeeper集群.做这件事情的意义在于:节约部署Dubbox的时间,降低部署Dubbox过程中出错的风险. ROS阿里云资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务.用户通过模板描述多个云计算资源的依赖关系.配置等,并自动完成所有资源的创建和配置,以达到自动化部署.运维

基于Nginx和Consul构建高可用及自动发现的Docker服务架构

本文讲的是基于Nginx和Consul构建高可用及自动发现的Docker服务架构[编者的话]本文对于Docker和Consul Template以及Nginx如何结合使用做了较为详细的介绍. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spring Cloud.Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Sleuth等. 导读 如果你在大量接触或使用微服务的话,你可能会碰到一个问

基于资源编排在经典网络环境下快速部署高可用的Dubbox服务(Redis版)

本文将介绍在经典网络环境下,基于资源编排快速部署高可用Dubbox服务的过程.做这件事情的意义在于:提供给开发者一套高可用的Dubbox服务框架,节约开发人员部署Dubbox服务的时间,并降低了部署Dubbox过程中出错的风险. ROS阿里云资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务.用户通过模板描述多个云计算资源的依赖关系.配置等,并自动完成所有资源的创建和配置,以达到自动化部署.运维等目的.编排模板同时也是一种标准化的资源和应用交付

浅谈数据中心高可用网络系统设计

数据中心的故障类型众多,但故障所导致的结果却大同小异.即数据中心中的设备.链路或server发生故障,无法对外提供正常服务.缓解这些问题最简单的方式就是冗余设计,可以通过对设备.链路.Server提供备份,从而将故障对用户业务的影响降低到最小.但是,一味的增加冗余设计是否就可以达到缓解故障影响的目的?有人可能会将网络可用性与冗余性等同起来. 事实上,冗余性只是整个可用性架构中的一个方面.一味的强调冗余性有可能会降低可用性,减小冗余所带来的优点,因为冗余性在带来好处的同时也会带来一些如下缺点: w