《微服务架构实战》读书笔记5-3 — 网关
回顾spring cloud的各组件运行流程:
网关是spring cloud运行流程中的第一步。在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的URL路由到相应的服务。地位处于调用方和服务提供方之间,指甲与调用方进行权限控制、然后将请求均衡分发给后台服务端。
网关的作用
网关出现在企业的边界,承担着企业内部与企业外部交互通信的作用。其承担的鉴权任务(如保证数据交换、对接入客户端身份进行认证、防止数据篡改),还承担了流控、协议转换等作用。
作为微服务的入口,通常一个系统可以有一个或多个网关。可以给不同的端设置不同的访问网关,这样当某个端出现问题时,不会导致整个系统瘫痪。网页端使用web端、手机端使用手机网关,可以公用一套服务,在服务中可以以报文的方式对各个端进行标记。
详细讲,网关的作用如下:
1. 路由和版本控制:路由即将指定的路径路由到特定的服务器上(Nginx做反射***);对不同版本的API做版本控制,还可以将多个不同服务产生的结果合并统一输出。例如一个页面通常包含不同模块,每个模块通过网关对特定的服务进行访问,获取需要的内容。
2. 迭代设计:针对频繁变化的业务,将网关置于整体应用之外,将新功能作为微服务实现,逐步替换原有的应用服务。有计划的实施,保证系统的可用性,是系统的移植成本降到最低。
3. 认证:客户端调用应用之前,做统一权限认证。
4. 数据聚合:将请求的数据按特定的格式有不同的服务进行消费。eg:客户端根据需要的内容由网关统一转发,最终将聚合的数据结果进行展示。
5. 格式转换:对外使用统一的一种格式,内部根据不同的微服务转换程指定的数据格式。如前端发送的是xml,微服务需要的是json,那么可以由网关接收到数据后进行转换。
6. 协议转换:一般对外提供服务使用的都是http rest的方式,可以通过网关转换协议,向不同的微服务进行请求。协议可以是GRPC,也可以是http、webService的方式
7. 限流和缓存:对于访问量较大的应用,可以适当跌对访问的频率和速率进行控制。同时也可以使用缓存的方案,以应用大数据量的请求。 有了网关,可以有针对性的对特定的请求进行二次处理。
8. 日志记录:对每个服务的访问次数、访问的返回时长进行统一的记录,这样系统中哪些服务有问题,就可以定量地进行评估以进行性能优化。
Spring cloud 中的网关组件Zuul
Zuul:Spring cloud 中,用于提供负载均衡、反向***、权限认证的一个API Gateway。
作用:认证、压力测试、动态路由、负载削减、监控、安全等边缘服务。
Zuul处理请求流程:
其中前置处理器用于处理请求到达后端之前的需求。如鉴权、请求转发、增加请求参数(参数补全)等;请求完成之后要进行的处理有后置过滤器处理,如统计返回值和调用时间、记录日志、增加跨域头等行为。如果请求过程中,有错误发生,会跳转到错误过滤器,在Gateway遇到错误逻辑时直接跑出异常并中断流程,并且直接统一处理返回结果。
- 所有请求都统一通过API网关(Zuul)来访问内部服务
- 网关接收到请求后,从注册中心(Eureka)获取可用服务
- 由Ribbon进行均衡负载后发送到具体的实例
- 微服务之间通过Feign进行通信处理业务
- Hystrix负责处理服务超时熔断
- Turbine监控服务间的调用和熔断相关指标。
网关是spring cloud运行流程中的第一步。在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的URL路由到相应的服务。地位处于调用方和服务提供方之间,指甲与调用方进行权限控制、然后将请求均衡分发给后台服务端。
网关的作用
网关出现在企业的边界,承担着企业内部与企业外部交互通信的作用。其承担的鉴权任务(如保证数据交换、对接入客户端身份进行认证、防止数据篡改),还承担了流控、协议转换等作用。
作为微服务的入口,通常一个系统可以有一个或多个网关。可以给不同的端设置不同的访问网关,这样当某个端出现问题时,不会导致整个系统瘫痪。网页端使用web端、手机端使用手机网关,可以公用一套服务,在服务中可以以报文的方式对各个端进行标记。
详细讲,网关的作用如下:
1. 路由和版本控制:路由即将指定的路径路由到特定的服务器上(Nginx做反射***);对不同版本的API做版本控制,还可以将多个不同服务产生的结果合并统一输出。例如一个页面通常包含不同模块,每个模块通过网关对特定的服务进行访问,获取需要的内容。
2. 迭代设计:针对频繁变化的业务,将网关置于整体应用之外,将新功能作为微服务实现,逐步替换原有的应用服务。有计划的实施,保证系统的可用性,是系统的移植成本降到最低。
3. 认证:客户端调用应用之前,做统一权限认证。
4. 数据聚合:将请求的数据按特定的格式有不同的服务进行消费。eg:客户端根据需要的内容由网关统一转发,最终将聚合的数据结果进行展示。
5. 格式转换:对外使用统一的一种格式,内部根据不同的微服务转换程指定的数据格式。如前端发送的是xml,微服务需要的是json,那么可以由网关接收到数据后进行转换。
6. 协议转换:一般对外提供服务使用的都是http rest的方式,可以通过网关转换协议,向不同的微服务进行请求。协议可以是GRPC,也可以是http、webService的方式
7. 限流和缓存:对于访问量较大的应用,可以适当跌对访问的频率和速率进行控制。同时也可以使用缓存的方案,以应用大数据量的请求。 有了网关,可以有针对性的对特定的请求进行二次处理。
8. 日志记录:对每个服务的访问次数、访问的返回时长进行统一的记录,这样系统中哪些服务有问题,就可以定量地进行评估以进行性能优化。
Spring cloud 中的网关组件Zuul
Zuul:Spring cloud 中,用于提供负载均衡、反向***、权限认证的一个API Gateway。
作用:认证、压力测试、动态路由、负载削减、监控、安全等边缘服务。
Zuul处理请求流程:
客户端 ——> 前置处理器——> 路由过滤器——> 后端应用——> 后置过滤器 ——> 客户端
Zuul整体架构如下:
在线上环境,一般建议使用Zuul集群进行横向的扩展,提高集群的并发能力,并且将不同的业务根据业务类型进行分组,及冷热分离,根据服务调用次数,完成热服务的拆分。
#笔记##读书笔记#