微服务网关的实现方法
项目中微服务一旦过多几十上百个时,像NGINX的静态配置法,肯定是行不通的,此时会用到注册中心。
服务发现包含服务消费者(Consumer)和服务提供者(Provider)。
在微服务架构中,服务提供者是指那些微服务们,服务消费者是指网关们。
网关会从注册中心上订阅微服务的实例列表。
心跳续约是注册中心感知微服务实例可用性的基本途径。比如,注册中心的正常机制是,微服务心跳不续约,30 秒后自动下线。
微服务无损下线,又叫优雅下线、或者平滑下线,都是一个意思。首先看什么是有损下线:
微服务实例进行升级过程中,下线后心跳在注册中心存约以及变更生效都有一定的时间,在这个期间网关订阅列表仍然没有更新到下线后的版本,如果鲁莽地将微服务停止服务,会造成一部分的流量损失。
无损下线有很多不同的解决方案,但侵入性最低的还是服务治理中心默认提供的能力,无感地整合到发布流程中,完成自动执行。免去繁琐的运维脚本逻辑的维护。
配置管理主要包含配置订阅和配置发布两类操作。
spring cloud动态路由配置方法
动态路由(服务发现的路由规则)
动态路由其实就是面向服务的路由,根据 serviceId 自动从注册中心获取服务地址并转发请求,这样做的好处不仅可以通过单个端点来访问应用的所有服务,而且在添加或移除服务实例时不用修改 Gateway 的路由配置。
server:
port: 9000 # 端口
spring:
application:
name: gateway-server # 应用名称
cloud:
gateway:
# 路由规则
routes:
- id: product-service # 路由 ID,唯一
uri: lb://product-service # lb:// 根据服务名称从注册中心获取服务请求地址
predicates: # 断言(判断条件)
- Path=/product/** # 匹配对应 URL 的请求,将匹配到的请求追加在目标 URI 之后