Spring Cloud微服务架构构建高可用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

微服务工程项目中经常出现一些高可用需求场景,例如对于注册中心的高可用需求,对于网关的高可用需求。今天跟大家分享下Spring Cloud构建微服务架构 注册中心(Eureka) 和 服务网关(Gateway)的相关高可用知识。

一、Eureka高可用配置

1.Eureka简介

Eureka 是 Netflix 开源的服务治理模块,本身是一个基于 Rest 的服务。Spring Cloud 中将 Eureka 集成在 Spring Cloud Netflix 项目中,另外 Spring Cloud Netflix 还提供了自配置的Netflix OSS整合。提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

Eureka架构图
在这里插入图片描述

Eureka 是包含两个组件的:Eureka Server 和 Eureka Client
Eureka Server 提供服务发现的功能,服务启动后,向 Eureka Server 注册自己的地址信息(IP、端口、服务名)
Eureka Client 是一个客户端,用于与 Eureka 的交互0服务启动后,与 Eureka Server 通过 心跳 机制通信,默认周期为 30 秒
当 Eureka Server 在一定时间内接收不到某个服务实例的心跳,将会注销该实例,默认时间为 90 秒
默认情况下 Eureka Server 同时也是 Eureka Client。多个 Eureka Server 实例通过复制的方式来实现服务注册
Eureka Client 有 缓存机制,会缓存服务注册表中的信息。服务不需要每次请求都查询 Eureka Server,这样既降低了 Server 的压力,同时即便 Eureka Server 的节点都宕机了,也可以使用缓存查询到服务提供者的信息完成调用

2. Eureka 的高可用

尽管 Eureka 的客户端具有缓存机制,即使 Eureka Server 宕机,服务之间也可以通过缓存调用,但是在 Eureka Server 宕机的时候,一些微服务也可能出现不可用的问题,而这些情况会没有被更新到缓存中,就可能会影响到某些微服务的调用。

生产中通常会部署一个高可用的 Eureka Server 集群,由上面的 Eureka 架构图也可以看出可以通过运行多个 Eureka Server 实例并让他们相互注册来实现高可用部署。

我们来改一下上面的 eureka-server ,同时启动两个实例,来构建双节点的服务注册中心。这里我们要让 Eureka Server 相互注册,所以 registerWithEureka 和 fetchRegistry 就不设置 false 了,而 serviceUrl.defaultZone 则需要填入其他 Eureka Server 的服务地址


spring:
  application:
    name: eureka-server

--- 
server:
  port: 8761

eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8762/eureka/
      
---
server:
  port: 8762

eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/

尽管我们的注册服务只写了 http://127.0.0.1:8761/eureka/, 这里我们要注册的服务最好把所有的 Eureka Server 地址都添加上,避免在某些情况下服务重启会注册不到。

二、Gateway网关高可用配置

1.网关高可用

在这里插入图片描述

Spring Cloud Gateway 的部署方式如图,不同的客户端使用不同的负载将请求分发到后端的 Gateway,Gateway 再通过HTTP调用后端服务,最后对外输出。因此为了保证 Gateway 的高可用性,前端可以同时启动多个 Gateway 实例进行负载,在 Gateway 的前端使用 Nginx 或者 F5 进行负载转发以达到高可用性。

2.配置nginx.conf文件

当请求127.0.0.1进入nginx时,将请求转发至上面配置的集群配置地址。
在这里插入图片描述

总结

本文仅为大家提供Spring Cloud构建微服务架构 注册中心(Eureka) 和 服务网关(Gateway)高可用的部署思路和设置要点。为工程实践提供参考。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud是一个基于Spring Boot的微服务框架,它提供了一整套用于构建和管理微服务的组件。下面是Spring Cloud微服务架构图的介绍: 1. 配置管理(Config Server):用于集中管理微服务的配置信息,可以将配置信息存储在Git、SVN等版本控制系统中,并通过Config Server进行统一管理和分发。 2. 服务注册与发现(Service Discovery):微服务架构中的各个服务需要能够自动注册和发现,以便实现服务之间的通信。Spring Cloud提供了服务注册与发现的组件,如Eureka、Consul等。 3. 断路器(Circuit Breaker):在微服务架构中,当某个服务出现故障或不可用时,为了避免级联故障,需要使用断路器模式进行故障隔离。Spring Cloud中的Hystrix组件提供了断路器的实现。 4. 智能路由(Intelligent Routing):微服务架构中的服务可能会有多个实例,智能路由可以根据负载均衡策略将请求分发到不同的实例上,以实现负载均衡。Spring Cloud中的Ribbon和Zuul组件提供了智能路由的功能。 5. 微代理(Micro Proxy):微服务架构中的服务之间需要进行通信,为了简化通信过程,可以使用微代理来处理请求和响应。Spring Cloud中的Feign组件提供了微代理的功能。 6. 控制总线(Control Bus):微服务架构中的各个服务需要能够实时通信和协调,控制总线可以提供消息传递和事件驱动的机制。Spring Cloud中的Spring Cloud Bus组件提供了控制总线的功能。 7. 全局锁(Distributed Lock):在分布式环境中,为了保证数据的一致性和并发控制,需要使用全局锁。Spring Cloud中的Zookeeper和Redis等组件提供了全局锁的实现。 8. 决策竞选(Leader Election):在分布式环境中,为了保证系统的高可用性,需要选举出一个主节点来处理请求。Spring Cloud中的Zookeeper和Election等组件提供了决策竞选的功能。 9. 分布式会话(Distributed Session):在微服务架构中,用户的会话信息可能需要在多个服务之间共享。Spring Cloud中的Spring Session组件提供了分布式会话的支持。 10. 集群状态管理(Cluster State Management):在微服务架构中,需要对集群中的各个服务进行监控和管理。Spring Cloud中的Spring Cloud Cluster组件提供了集群状态管理的功能。 以上是Spring Cloud微服务架构图的介绍,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值