网关的基础概念
网关在做什么
当一个单体应用被拆分成许许多多的微服务应用后,也带来了一些问题。一些与 业务非强相关
的功能,比如
- 权限控制
- 日志输出
- 数据加密
- 熔断限流
- ...
每个微服务应用都需要,因此存在着大量重复的代码实现。而且由于系统的迭代、人员的更替,各个微服务中这些功能的实现细节出现了较大的差异,导致维护成本变高。
另一方面,原先单体应用下非常容易做的接口管理,在服务拆分后没有了一个集中管理的地方,无法统计已存在哪些接口、接口定义是什么、运行状态如何。
网关就是为了解决上述问题。
网关基础说明
作为微服务体系中的 核心基础设施
,一般需要具备
- 接口管理
- 协议适配
- 熔断限流
- 安全防护等功能
各种开源的网关产品(比如 zuul)都提供了优秀高可扩展性的架构、可以很方便的实现我们需要的一些功能、比如鉴权、日志监控、熔断限流等。 业务网关更靠近我们的业务,也就是与服务器应用层打交道,那么有很多应用层需要考虑的事情就可以依托业务网关,例如在线程模型、协议适配、熔断限流,服务编排等。下面看看业务网关体系结构:
总结
具有如下特征的行为功能适合在应用网关来实现:
- 业务弱相关, 但是各种微服务系统都要使用到的基础能力
- 微服务管理与审计
- 对外对内的桥接类功能:如协议适配
- 基础的访问安全能力
- 基础的数据安全能力