企业级API网关的设计
2017-09-20 本文已影响195人
GhostStories
欢迎访问我的博客查看原文:http://wangnan.tech
背景
是出现在系统边界上的一个面向API的、串行集中式的强管控服务
API网关的流行,源于近几年来,移动应用与企业间互联需求的兴起。移动应用、企业互联,使得后台服务支持的对象,从以前单一的Web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,API网关成为了微服务架构的一个标配组件。
作用
- 第一类作用是隔离作用,作为企业系统边界,隔离外网系统与内网系统。
- 第二类作用是解耦作用,通过解耦,使得微服务系统的各方能够独立、自由、高效、灵活地调整,而不用担心给其他方面带来影响。
- 第三类作用是脚手架作用,提供了一个地点,方便通过扩展机制对请求进行一系列加工和处理。
隔离
API网关部署在防火墙外面,起到一层挡板作用,内部系统只接受API网关转发过来的请求。网关通过白名单或校验规则,对访问进行了初步的过滤。相比防火墙,这种软件实现的过滤规则,更加动态灵活。
解耦
有了API网关这一层,可以很好的解耦各方的相互依赖关系,让各方更加专注自己的目标。
- 解耦功能与非功能
- 解耦客户端与服务提供者
- 网关层是否需要实现服务的编排? no
脚手架
网关层除了请求的路由、转发外,还需要负责安全、鉴权、限流、监控等。这些功能的实现方式,往往随着业务的变化不断调整。
带来的好处
- 网关层对外部和内部进行了隔离,保障了后台服务的安全性。
- 对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本
- 减少客户端与服务的耦合,服务可以独立发展。通过网关层来做映射。
- 通过网关层聚合,减少外部访问的频次,提升访问效率。
- 节约后端服务开发成本,减少上线风险。
- 为服务熔断,灰度发布,线上测试提供简单方案。
- 便于扩展。
企业级API网关需要具备的条件
应对大量的对外访问,另一方面,还要给对内的服务提供一定的安全保障。
除此之外,企业提供的API服务多种多样,API网关要能够对这些API的全生命周期进行便捷的管理,例如服务发布、调整、下架、计费、监控等。
企业环境下,API网关需要考虑哪些要素
- 安全性问题
- 性能问题
- 高可用问题
- 扩展性问题
- API高效运维的问题
- API全生命周期管理的问题
业界常用的API网关方案
- Nginx+ Lua
- SpringCloud Zuul
- MashapeKong
如何设计一个好的企业级API网关产品
API 生命周期管理功能
开发和使用支持功能
安全防护功能
流量控制功能
请求管理功能
API交易功能
网关的高性能设计
网关的高性能设计->事件驱动的并发模型(nio)
网关的高可用设计
1、无状态设计原则
2、优雅下线原则
3、Slow start特性
原文:https://mp.weixin.qq.com/s/RuN5RfQfksQZRPACloqHEg
欢迎关注我的微信订阅号:
欢迎关注我的开发者头条独家号搜索:269166