当前位置:网站首页>API服务网关
API服务网关
2022-08-10 22:45:00 【InfoQ】
API服务网关顾名思义就是出现在微服务边界上的一个面向API的、串行集中式的、对访问请求强管控的服务,采用的是一个外观模式。API服务网关是微服务访问的统一入口,负责服务请求路由、组合及协议转换等处理。
API服务网关的核心是:为所有客户端请求或其他消费者提供统一的网关,通过该网关接入不同的微服务,并隐藏架构实现的细节。当API服务网关成为微服务访问的唯一入口后,就可以实现对系统内部架构的封装,将一些与业务无关的公共逻辑抽象到API服务网关中实现,比如之前提到的客户端身份验证、业务鉴权、流量与并发控制及响应数据脱敏等功能。
对于API服务网关,其核心功能之一就是负责服务请求路由、组合及协议转换。首先,所有客户端请求都会经过API服务网关;然后,API服务网关再将服务请求路由到合适的微服务,以提供具体的服务处理。所以,API服务网关经常会通过编排多个微服务来处理一个服务请求。
另外,还可以利用API服务网关为不同类型的客户端提供定制的API。这样通过整合为客户端暴露一个粗粒度的API,从而隐藏了系统架构的实现细节,客户端只需要同服务网关交互,而不必了解特定的微服务相关细节信息,减少了客户端与服务器之间的交互次数,同时也大大降低了客户端的开发难度和后期维护成本。
虽然API服务网关有上述优点,但在实施时开发者不得不面对API服务网关的不足。首先,需要为API服务网关开发一个具有高可用的组件,当使用API服务网关后,API服务网关极有可能会成为系统的一个瓶颈,所以高可用是构建API服务网关首要考虑的。
此外,为了能够将微服务的端点接入API服务网关,开发人员需要及时地将微服务相关端点更新/注册到API服务网关中。因此,API服务网关的更新/注册过程要尽可能地简单。否则,开发人员将耗费大量的精力,更新/注册服务网关的配置信息,这显然违背了微服务架构开发的初衷。
还有,API服务网关需要知道与之通信的每个微服务服务器地址和端口信息,特别是在API服务网关中启用了负载均衡时。在传统的开发中,可以通过硬编码的方式(包含通过配置文件的方式)实现服务网关与各微服务地址的绑定,但在微服务架构下的开发,可以通过整合服务治理来实现。这样一个微服务的上线、下线等都可以进行自动处理,不需要手工去管理。
对API服务网关总结如下:
- API服务网关帮助开发者隐藏系统架构实现的细节,提供统一的入口供客户端访问,让微服务使用更为友好。
- 通过微服务的统一访问控制,简化了客户端开发的复杂度,降低了客户端与微服务之间的通信次数,客户端不需要与多个微服务之间进行通信,也不需要了解各个微服务的详细信息。
- 借助API服务网关可统一做切面任务,避免每个微服务自己开发,提升效率,使系统更加标准化。·通过API服务网关,可以将异构系统进行统一整合。
- API服务网关需要实现一个高可用伸缩性强的服务,避免单点失效。
- API服务网关需要对所有微服务实例所暴露的端点进行统一的管理,这为开发和运维增加了一定的难度。
边栏推荐
- 瑞幸咖啡第二季营收33亿:门店达7195家 更换CFO
- How does the Weiluntong touch screen display the current value of abnormal data while alarming?
- Leave a message with a prize | OpenBMB x Tsinghua University NLP: The update of the large model open class is complete!
- Nodes in the linked list are flipped in groups of k
- (PC+WAP)带手机端pbootcms模板园林景观类网站
- 亲测有效|处理风控数据特征缺失的一种方法
- 文件IO-缓冲区
- Splunk中解决数据质量问题常见日期格式化
- 【秋招】【更新中ing】手撕代码系列
- 如何利用fiddler连接手机抓包APP
猜你喜欢
随机推荐
风控逻辑利器---规则引擎
高学历毕业生,该学单片机还是plc?
EL表达式
TCP连接过程中如果拔掉网线会发生什么?
Lambda
mysql中的三大日志
【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示
自学软件测试不知道该如何学起,【软件测试技能图谱|自学测试路线图】
Distribution Network Expansion Planning: Consider Decisions Using Probabilistic Energy Production and Consumption Profiles (Matlab Code Implementation)
file IO-buffer
STL-deque
如何利用fiddler连接手机抓包APP
Redis
HanLP词性表
【Linux】宝塔面板设置MySQL慢查询日志,未走索引日志
MySQL学习笔记(2)——简单操作
【MySQL】mysql因为字符集导致left join出现Using join buffer (Block Nested Loop)
如何反弹shell
音乐播放器(未完成版本)
OneNote tutorial, how to organize notebooks in OneNote?