springCloud Finchley 实战入门(基于springBoot 2.0.3)【三 Eureka-高可用服务注册中心】

简介: Eureka高可用注册中心Eureka Server的设计一开始就考虑到了高可用的问题,在eureka服务治理设计中,所有的节点即是是服务提供方,也是服务消费方。

Eureka高可用注册中心

Eureka Server的设计一开始就考虑到了高可用的问题,在eureka服务治理设计中,所有的节点即是是服务提供方,也是服务消费方。

在部署高可用注册中心前我们先需要准备一下,本地环境。因为我们实例是在单台电脑上的,所以需要模拟堕胎服务器,我们需要修改一下本机的host文件。
windows的host文件在C:\Windows\System32\drivers\etc\hosts
在host文件后面加上

127.0.0.1 peer1
127.0.0.1 peer2

修改完成,我们就来尝试搭建高可用的服务注册中心集群。接着上一章的服务中心的基础上面扩展,来构建一个双节点服务注册中心集群。

在resource目录下面:
创建application-peer1.yml配置文件,作为peer1服务中心的配置,并将serviceId指向peer2.

server:
  port: 8762
spring:
  application:
    name: service-register
eureka:
  instance:
    prefer-ip-address: false
    hostname: peer1
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://peer2:8763/eureka/
  server:
    wait-time-in-ms-when-sync-empty: 0

创建application-peer2.yml配置文件,作为peer2服务中心的配置,并将serviceId指向peer1.

server:
  port: 8763
spring:
  application:
    name: service-register
eureka:
  instance:
    prefer-ip-address: false
    hostname: peer2
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://peer1:8762/eureka/
  server:
    wait-time-in-ms-when-sync-empty: 0

接下来通过spring.profiles.active属性来分别启动peer1和peer2.
我启动的做法是不在idea里启动,而是把服务注册中心打包,通过cmd启动。
maven打包


img_e9c6d5d7bef5a5fa064aeb1da91c3b87.png
15324251491.jpg

然后通过cmd命令分别启动服务
[图片上传中...(15324253911.jpg-db47b5-1532490920148-0)]


img_f19773cff9b7f8364bc3a4bec0424342.png
15324254351.jpg

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active

img_6ba5a6eeaa5da3ed18ae0f6e5ac3a3c0.png
15324253911.jpg

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

两个服务启动后,我们访问一下http://localhost:8762/或者http://localhost:8763/

img_9cd763114c7ecad679d0a661903a0d4a.png
15324255261.jpg

这里可以看到两个注册中心部署相互注册成功了。

关闭其中一个服务我们可以看到对应的节点变成不可用了。


img_1a09860744b4f032cf6eb34b5c57bc7b.png
15324256591.jpg

设置多个服务注册中心后,服务提供者还需要做一些简单的配置才能将服务注册到Eureka server集群中。

在这里我们按照前面的做法,重新新建一个服务提供者module,命名为"eureka-bussniss-service-user"当作是我们平时项目中用户服务模块,专门处理用户相关服务的。
因为目前服务注册中心是多个的,所以我们在服务提供者的配置文件上还需要做一些配置。
添加下面的属性,表示把服务注册到指定的注册中心,注册中心地址用逗号隔开;

eureka.client.serviceUrl.defaultZone=http://peer1:8762/eureka/,http://peer2:8763/eureka/

完整的application.yml配置如下:

spring:
  application:
    name: service-user
server:
  port: 8802
eureka:
  client:
      serviceUrl:
        defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/

记得主类添加@EnableEurekaClient注解,然后在确保服务注册中心正常的情况下,启动该项目。如果项目没有报错那就说明我们的配置应该是正常的。打开http://localhost:8763/或者http://localhost:8762/我们可以看到service-user已经同时注册到了服务注册中心。

img_e645bdf435fc0e173984201e3c0aa9f3.png
15324796051.jpg

此时若断开peer1服务,由于service-user服务也向peer2注册,因此peer2上面的其他服务依然能够访问到service-user。从而实现了注册中心的高可用。

项目的源码

服务提供者已经完成了,下一篇我们将会实现服务消费者,以及使用ribbon实现负载均衡。

目录
相关文章
|
11天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
43 3
|
1月前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
124 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
2月前
|
缓存 前端开发 Java
springboot 的单体服务 字典参数转译
本文介绍了如何在Spring Boot项目中使用缓存来管理字典参数,并确保前后端数据一致性。首先,通过`@EnableCaching`启用缓存功能,接着创建一个自定义的字典缓存类`DicCache`。然后,通过配置类将`DicCache`添加到`cacheManager`中。此外,对字典服务进行改造,使用`@CachePut`和`@CacheEvict`注解保证数据一致性。最后,实现自定义注解`@DicSerializer`和序列化处理类`DictSerializerHandel`,用于在序列化过程中自动转换字典值。通过这种方式,可最小化代码改动并提高系统性能。
springboot 的单体服务 字典参数转译
|
1月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
84 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
1月前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
96 0
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
1月前
|
负载均衡 算法 Nacos
SpringCloud 微服务nacos和eureka
SpringCloud 微服务nacos和eureka
64 0
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
152 1
|
22天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
97 62
|
20天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
38 2
下一篇
无影云桌面