《微服务架构实战》读书笔记5-3 — 网关

回顾spring cloud的各组件运行流程:
  • 所有请求都统一通过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处理请求流程:
客户端 ——> 前置处理器——> 路由过滤器——> 后端应用——> 后置过滤器 ——> 客户端

其中前置处理器用于处理请求到达后端之前的需求。如鉴权、请求转发、增加请求参数(参数补全)等;请求完成之后要进行的处理有后置过滤器处理,如统计返回值和调用时间、记录日志、增加跨域头等行为。如果请求过程中,有错误发生,会跳转到错误过滤器,在Gateway遇到错误逻辑时直接跑出异常并中断流程,并且直接统一处理返回结果。

Zuul整体架构如下:


    在线上环境,一般建议使用Zuul集群进行横向的扩展,提高集群的并发能力,并且将不同的业务根据业务类型进行分组,及冷热分离,根据服务调用次数,完成热服务的拆分。
#笔记##读书笔记#
全部评论
hi,同学,你的分享很不错哦 楼主在深圳抖音团队,团队正迅速扩张中,虽然目前产品DAU规模很大,但是抖音、火山的技术积累还远没有到很完善,我们也仍然在高速发展,也有更多系统性的问题需要去解决,现在加入进来,一样可以跟着团队一起成长。 公司福利不错,免费三餐、下午茶、无限零食供应、免费健身房。 目前校招还有后台,多媒体Android/iOS开发职位在补招中,感兴趣的同学可以发邮件到我邮箱156922066@qq.com
点赞 回复 分享
发布于 2018-11-19 20:36
同学,你的分享太棒了😂
点赞 回复 分享
发布于 2018-11-20 17:40

相关推荐

01-26 22:20
已编辑
门头沟学院 Java
Java抽象带篮子:项目很nb了,现在好好准备八股和算法吧,早点找实习,可以看看我的置顶帖子。帖子里写了怎么改简历,怎么包装实习经历,还有2个高质量可速成的项目话术,和我的牛客八股笔记专栏
点赞 评论 收藏
分享
2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
02-18 17:30
腾讯_TEG_技术
多刷** 背八股 刷面经 项目话术准备好 不会差的!!!后台看到好多小伙伴们都出现其中一个环节的错误,,,可惜了抓紧机会吧 有的是hc 但缺的就是稍微用心的人
野猪不是猪🐗:多刷星星,背八股背话术,真的能过你们?对一个个没实习过的学生狂问场景题设计题和底层深挖,别以为我不知道一边说缺人还一边各种kpi面
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客企业服务