27 | API网关:系统的门面要如何做呢?
唐扬
该思维导图由 AI 生成,仅供参考
你好,我是唐扬。
到目前为止,你的垂直电商系统在经过微服务化拆分之后已经运行了一段时间了,系统的扩展性得到了很大的提升,也能够比较平稳地度过高峰期的流量了。
不过最近你发现,随着自己的电商网站知名度越来越高,系统迎来了一些“不速之客”,在凌晨的时候,系统中的搜索商品和用户接口的调用量会急剧上升,持续一段时间之后又回归正常。
这些搜索请求有一个共同特征是来自固定的几台设备。当你在搜索服务上加一个针对设备 ID 的限流功能之后,凌晨的高峰搜索请求不见了。但是不久之后,用户服务也出现了大量爬取用户信息的请求,商品接口出现了大量爬取商品信息的请求。你不得不在这两个服务上也增加一样的限流策略。
但是这样会有一个问题:不同的三个服务上使用同一种策略,在代码上会有冗余,无法做到重用,如果其他服务上也出现类似的问题,还要通过拷贝代码来实现,肯定是不行的。
不过作为 Java 程序员,你很容易想到:将限流的功能独立成一个单独的 jar 包给这三个服务来引用。不过你忽略了一种情况,那就是你的电商团队使用的除了 Java,还有 PHP 和 Go 等多种语言。
用多种语言开发的服务是没有办法使用 jar 包来实现限流功能的,这时你需要引入 API 网关。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
API网关是系统中解决服务治理问题的重要架构模式,分为入口网关和出口网关两类。入口网关实现了动态路由和屏蔽服务的部署地址和协议细节,提供了便捷的调用方式;而出口网关用于对外部API进行统一认证、授权、审计和访问控制。在实现API网关时,关注性能和扩展性是关键,而开源的API网关组件包括Kong、Zuul和轻量级API网关等,适用于不同的技术栈团队。引入API网关后,系统架构得到了优化,将Web层中的协议转换、认证、限流等功能挪入到API网关中,将服务聚合的逻辑下沉到服务层。因此,当微服务系统越来越复杂时,使用API网关作为整体系统的门面是一个值得考虑的选择。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》,新⼈⾸单¥59
《高并发系统设计 40 问》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(37)
- 最新
- 精选
- Julien上一讲的负载均衡和这一讲的API网关是什么关系呢?
作者回复: 作用不同,负载均衡作用是分流,API网关作用是服务治理
2019-11-2532 - 小洛之前用zuul做过网关,思路和老师说的大同小异,有授权,有检验,有限流熔断,也有线程池隔离等,就是聚合服务没有抽成单独的服务来做,因为在组织架构上,大家都不想接手这种聚合别人接口的服务,有时候这种非技术的问题让人特别困惑!所以当初就设计了一个配置api中可以配置多个服务接口,网关把结果整合,然后json返回了!
作者回复: 这样也好
2020-02-11320 - DarrenSpring cloud gateway 性能比zuul好一些,并且是异步的
作者回复: 是的
2020-04-01213 - 张德老师 请教一下 这个oauth2.0的登录认证 请求是先经过网关后验证是否登录了 还是什么别的流程 能否讲一下这个架构下 登录鉴权应该怎么做???
作者回复: 就是请求在经过网关后,先做oauth的认证,认证成功后,将一些用户信息写入到request里面,这样业务服务器就不需要关心认证了
2019-11-2529 - Xiangapisix 这个API网关性能很好 https://github.com/apache/incubator-apisix
作者回复: 谢谢,我研究一下
2020-02-244 - 刘冲请问,像sql注入拦截这种工作,是后端每个微服务要做的事情呢?还是都应该只需要放在api网关来做?
作者回复: 这种安全策略可以放在API网关中来做
2019-11-2744 - 钱API网关,这个也一定使用过,不过距离自己的编码距离有些远,没实际直接接触过。 类似一个村子的主路口,进村时做安全、鉴权、限流、熔断等控制,出村时做认证、审计、授权等工作。
作者回复: 是的,可能开发同学了解不多
2020-04-2823 - JOHN看了本文,这边我有几个问题想请教下老师? 1、不太清楚业务网关与聚合服务层之间的区别 2、在服务调用上,我觉得很多接口并不是聚合接口,那是否api网关也可以直接调用原子服务层 3、api网关与web服务的最大区别点就是 web服务多了服务聚合的功能么??
作者回复: api网关有转换协议,限流,熔断等功能
2020-03-102 - 古德我的理解聚合业务层就是BFF层吧,一般是按照业务范围来分,应该放网关层后面,网关层和业务要无关
作者回复: 可以认为是BFF层
2020-01-062 - 高志强老师我想问一下,这个api网关处在,负载均衡服务和应用服务之间么,都用它这个api网关万一挂了怎么办?
作者回复: 是的,服务要保证可用性呀
2020-03-3121
收起评论