微服务技术系列教程(18) - SpringCloud- 服务治理Eureka(集群搭建)

简介: 微服务技术系列教程(18) - SpringCloud- 服务治理Eureka(集群搭建)

代码已上传到Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-Eureka-Demo

1. Eureka高可用原理

在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式。

默认情况下Eureka是让服务注册中心,不注册自己。

###因为该应用为注册中心,不会注册自己
    register-with-eureka: true
###不需要去注册中心上检索服务
    fetch-registry: true

Eureka高可用实际上将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,从而实现服务清单的互相同步,达到高可用效果

2. Eureka集群搭建

2.1 Eureka01配置

1.application.yml配置:

###服务端口号
server:
  port: 8101
###eureka 基本信息配置
spring: 
 application: 
  name: eureka-server-01
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8102/eureka/
###因为自己是为注册中心,不需要自己注册自己
    register-with-eureka: true
###因为自己是为注册中心,不需要检索服务
    fetch-registry: true

2.启动类:

@EnableEurekaServer
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

2.3 Eureka02配置

1.application.yml配置:

###服务端口号
server:
  port: 8102
###eureka 基本信息配置
spring: 
 application: 
  name: eureka-server-02
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8101/eureka/
###因为自己是为注册中心,不需要自己注册自己
    register-with-eureka: true
###因为自己是为注册中心,不需要检索服务
    fetch-registry: true

2.启动类:

@EnableEurekaServer
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

2.3 客户端集成Eureka集群

Eureka-ServiceA和Eureka-ServiceB的搭建可以参考上一篇博客《SpringCloud- 服务治理Eureka(搭建注册中心)》,主要修改application.yml。

Eureka-ServiceA:

###服务启动端口号
server:
  port: 8000
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: app-service-a
####服务注册到eureka地址
#eureka:
#  client:
#    service-url:
#      defaultZone: http://localhost:8100/eureka
#
#
#    ###因为该应用为注册中心,不会注册自己
#    register-with-eureka: true
#    ###是否需要从eureka上获取注册信息
#    fetch-registry: true
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8101/eureka,http://localhost:8102/eureka
    register-with-eureka: true
    fetch-registry: true

Eureka-ServiceB:

###服务启动端口号
server:
  port: 8001
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: app-service-b
####服务注册到eureka地址
#eureka:
#  client:
#    service-url:
#      defaultZone: http://localhost:8100/eureka
#
#
#    ###因为该应用为注册中心,不会注册自己
#    register-with-eureka: true
#    ###是否需要从eureka上获取注册信息
#    fetch-registry: true
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8101/eureka,http://localhost:8102/eureka
    register-with-eureka: true
    fetch-registry: true

2.4 启动Eureka服务以及客户端

浏览器输入Eureka01注册中心地址和Eureka02注册中心地址,可以看到都注册上了:

Eureka01:

Eureka02:

客户端B去远程调用客户端A的接口:http://localhost:8001/getorder,可以看到调用成功:

现在把Eureka01关掉,模拟宕机,可以看到现在只剩Eureka02一台注册中心可以跑了。

客户端B再次去远程调用客户端A的接口:http://localhost:8001/getorder,可以看到调用成功:

目录
相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生技术演进之路:从微服务到容器化
在数字化浪潮的推动下,云原生技术不断演进,为现代软件开发带来革命性变化。本文将深入探讨云原生技术的核心要素—微服务和容器化,揭示它们如何促进软件的快速迭代、可扩展性和可靠性提升。通过分析相关数据和案例研究,我们旨在阐明云原生技术在加速企业数字化转型中的关键作用。
|
4天前
|
JSON Java Spring
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
|
4天前
|
JavaScript Java Go
Nacos vs. Eureka:微服务注册中心的对比
Nacos vs. Eureka:微服务注册中心的对比
10 0
|
9天前
|
运维 Cloud Native 开发者
云原生技术演进:从微服务到无服务器计算
【6月更文挑战第22天】 云原生技术如同一场持续的演化之旅,它不断重塑着应用的开发与部署方式。本文将探讨云原生技术如何从微服务架构演变至无服务器计算,以及这一转变对开发者和运维人员带来的深远影响。通过分析容器化、持续集成/持续部署(CI/CD)、微服务治理等关键概念,我们将揭示云原生技术如何在提高应用的可伸缩性、灵活性和可靠性的同时,也提出了新的挑战和机遇。
|
11天前
|
NoSQL Java MongoDB
实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例
实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例
|
12天前
|
存储 消息中间件 运维
从单体到微服务:架构演进中的技术挑战与解决方案
在软件开发的过程中,系统架构的选择对项目的成功与否起到至关重要的作用。本文将深入探讨从单体架构向微服务架构演进过程中所遇到的技术挑战,并提供相应的解决方案。
37 0
|
13天前
|
运维 Kubernetes 监控
现代后端开发中的微服务架构与容器化技术
随着信息技术的迅猛发展,现代软件开发趋向于采用微服务架构与容器化技术。本文探讨了微服务架构的优势,以及容器化技术如何促进开发、部署和扩展的效率,进而提升应用程序的可靠性和可维护性。
25 0
|
15天前
|
机器学习/深度学习 设计模式 人工智能
人工智能和机器学习技术来优化微服务架构
人工智能和机器学习技术来优化微服务架构
23 1
|
19天前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
208 3
|
1天前
|
负载均衡 监控 Java
Java中的可扩展微服务架构
Java中的可扩展微服务架构