Spring Cloud的注册中心可以由Eureka、Consul、Zookeeper、ETCD等来实现,这里推荐使用Spring Cloud Eureka来实现注册中心,它基于Netfilix的Eureka做了二次封装,完成分布式服务中服务治理的功能,微服务系统中的服务注册与发现都通过这个注册中心来进行管理。

引入Eureka Server依赖

之前的文章基础上加入Spring Cloud的依赖,现在再加入注册中心Eureka Server的依赖。

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>

添加启动类,开启Eureka Server功能

在包根目录下加入启动类:

@EnableEurekaServer
@SpringBootApplication
public class RegisterApplication { public static void main(String[] args) {
new SpringApplicationBuilder(RegisterApplication.class).bannerMode(Banner.Mode.LOG)
.run(args);
}
}

@EnableEurekaServer注解即开启注册中心服务器的功能。

添加Eureka配置

在application.yml中加入如下配置:

spring:
application:
name: register-center
profiles:
active: register-center1 eureka:
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
lease-expiration-duration-in-seconds: ${lease-expiration-duration-in-seconds}
lease-renewal-interval-in-seconds: ${lease-renewal-interval-in-seconds}
server:
enable-self-preservation: ${enable-self-preservation}
eviction-interval-timer-in-ms: ${eviction-interval-timer-in-ms}
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: ${register-center.urls} ---
spring:
profiles: register-center1 server:
port: ${register-center1.server.port} ---
spring:
profiles: register-center2 server:
port: ${register-center2.server.port}

这里做了两台注册中心的高可用配置register-center1,register-center2,也可以做多台,既然是高可用,每个注册中心都向别的注册中心注册自己。

Maven filter配置

${}里面的配置由maven resource filter来打包进行控制,不同的环境使用不同的配置文件。

如filter-dev.properties的配置参考如下:

#url
register-center1.server.ip=192.168.1.22
register-center2.server.ip=192.168.1.23
register-center.urls=http://${register-center1.server.ip}:${register-center1.server.port}/eureka/,http://${register-center2.server.ip}:${register-center2.server.port}/eureka/ #port
register-center1.server.port=7001
register-center2.server.port=7002 #config
enable-self-preservation=false
eviction-interval-timer-in-ms=5000
lease-expiration-duration-in-seconds=20
lease-renewal-interval-in-seconds=6

Spring Cloud配置详解

Spring Boot的配置参考Spring Boot系列文章,这里只对Spring Cloud用到的配置解释。

spring.application.name:配置应用名称,在注册中心中显示的服务注册名称。

spring.cloud.client.ipAddress:获取客户端的IP地址。

eureka.instance.prefer-ip-address:配置为true为喜欢IP,即连接注册中心使用IP地址形式,也可以使用HOSTNAME,但生产环境不推荐。

eureka.instance.instance-id:配置在注册中心注册的唯一实例ID。

eureka.instance.lease-expiration-duration-in-seconds:指示eureka服务器在接收到最后一个心跳之后等待的时间(秒),然后才能从此视图中删除此实例,并禁止此实例的流量。将此值设置得太长可能意味着流量可以路由到实例,即使实例不存在。设置此值太小可能意味着,由于临时网络故障,实例可能会被取消流量。此值将设置为至少高于lease-renewal-interval-in-seconds中指定的值。

eureka.instance.lease-renewal-interval-in-seconds:指示eureka客户端需要向eureka服务器发送心跳以指示它仍然存在的频率(以秒为单位)。如果在lease-expiration-duration-in-seconds中指定的时间段内未收到心跳线,则eureka服务器将从其视图中删除该实例,因此不允许此实例的流量。请注意,如果该实例实现HealthCheckCallback,然后决定使其本身不可用,则该实例仍然可能无法访问流量。

eureka.server.enable-self-preservation:配置注册中心是否开启服务的自我保护功能。

eureka.server.eviction-interval-timer-in-ms:配置注册中心清理无效节点的时间间隔,默认60000毫秒,即60秒。

eureka.client.register-with-eureka:配置为true指示此实例将其信息注册到eureka服务器以供其他人发现。在某些情况下,您不希望发现实例,而您只想发现其他实例配置为false。

eureka.client.fetch-registry:指示该客户端是否应从eureka服务器获取eureka注册表信息。。

eureka.client.serviceUrl.defaultZone:Eureka服务器地址。

启动注册中心

这样一个两个注册心的Eureka Server就搭好了,启动的时候使用不同的Profile来指定不同的端口。

spring-boot:run -Drun.profiles=register-center1  -P dev
spring-boot:run -Drun.profiles=register-center2 -P dev

推荐阅读

干货:免费领取2TB架构师四阶段视频教程

面经:史上最全Java多线程面试题及答案

工具:推荐一款在线创作流程图、思维导图软件

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。

Spring Cloud注册中心高可用搭建的更多相关文章

  1. Spring Cloud配置中心高可用搭建

    本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行. 引入依赖 <dependencies> <dependency> ...

  2. Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用搭建

    高可用集群 在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对与微服务和服务注册中心都需要高可用部署,Eureka 高可用实际上就是将自己 ...

  3. Spring Cloud 之服务注册中心高可用

    服务注册中心高可用 服务注册中心 eureka-server 高可用实施 版本 Spring Boot 版本 # Spring Boot 版本: <parent> <groupId& ...

  4. Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用-服务提供和消费

    由于 Eureka 注册中心只是在内存中保存服务注册实例,并且没有将服务注册实例进行同步,因此我们需要对服务提供和消费进行调整,需要指定服务提供和消费的注册.服务发现的具体Eureka 注册中心配置, ...

  5. spring cloud 注册中心--eureka注册与发现

    本文详细介绍spring cloud微服务的默认注册中心--eureka注册与发现.开发环境需要Windows系统.jdk和intellij idea.与zookeeper注册中心相比,eureka不 ...

  6. Eureka注册中心高可用及常用配置项

    一.前言 前面已经简单的介绍了 Eureka 注册中心的使用以及查看.下面将继续进行 Eureka 的说明以及应用. 二.Eureka 的高可用搭建 在实际生产项目中,为了保证服务的可用性,连续性,一 ...

  7. SpringCloud微服务实战一:Spring Cloud Eureka 服务发现与注册中心(高可用实列为两个注册中心)

    微服务架构: 微服务架构的核心思想是,一个应用是由多个小的.相互独立的.微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖.不同服务通过一些轻量级交互机制来通信,例如 RPC.HTTP 等, ...

  8. Spring cloud之Eureka(二)注册中心高可用

    背景 在实际的生产环境中,注册中心如果只有一个,是很危险的,当这个注册中心由于各种原因不能提供正常服务或者挂掉时,整个系统都会崩溃,这是很致命的的,所以在Spring cloud 设计之初就考虑到了注 ...

  9. Spring Cloud Eureka 4 (高可用服务注册中心)

    在微服务这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须考虑对各个组件进行高可用部署,对于服务注册中心也是一样. Eureka Server 的高可用实际上就是讲自己作为服务向 ...

随机推荐

  1. Python 学习笔记13 类 - 创建和简单使用

    介绍: 面向对象编程是一种非常有效的软件编写方法之一,在面向对象编程中,我们会编写表示现实世界中的事物或者情景的类,并基于类来创建对象. 在编写类的的时候,这些类对象一般都有通用的行为或者属性.基于类 ...

  2. vue证明题五,组件传值与绑定

    上文中写了一个input组件,该组件需要复用,但是并不是每个组件都相同的 比如我定义了一个组件,是个矿泉水瓶子,这个瓶子分为大中小三个号,定义了三种瓶子的容积,定义了必须有瓶盖,瓶口,瓶子质地 但是瓶 ...

  3. go中浮点型用法总结

    示例 // 浮点型的用法 package main import ( "fmt" "unsafe" ) func main() { // 如果浮点数声明时未指定 ...

  4. JQ广告弹窗&随机抽奖————JQ

    1.JQ广告弹窗 <div id="flo"> <img src="image.jpeg"> </div> <scri ...

  5. websocket(python)

    1.websocket-server https://github.com/google/pywebsocket git clone https://github.com/google/pywebso ...

  6. mocha.js

    mocha 如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生. 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对 ...

  7. postgres之清理空间碎片

    postgres=# select * from pg_stat_user_tables where relname = 'test'; -[ RECORD 1 ]-------+---------- ...

  8. 【Flutter学习】可滚动组件之ScrollView

    一,概述 ScrollView 是一个带有滚动的视图组件. 二,组成部分 ScrollView 由三部分组成: Scrollable - 它监听各种用户手势并实现滚动的交互设计.可滚动Widget都直 ...

  9. 第六周-Scrum Meeting

    第一部分ScrumMeeting 每个人的工作: 成员 任务 ISSUE链接 本周已完成的工作 本周计划完成的工作 工作中遇到的困难 李卓峻 负责商品信息页面的界面设计与功能实现 https://gi ...

  10. Random Point in Triangle

    题目链接 题意:多组输入三角形各个顶点坐标p1,p2,p3,在三角形中任取一点p,计算 期望E=max(S(p,p1,p2),max(S(p,p1,p3),S(p,p2,p3))); 思路:用随机数找 ...