Zebra微服务架构对API网关设计思考

API网关是微服务重要组成部分,API网关主要承担一下几个任务:

1、API转发

这是API网关最重的一个功能,做到外网协议与内网RPC协议隔离,业务开发人员就可以不关心对外暴露的协议(http、tcp),只需写一套代码就可完成多种协议的对外暴露。

2、监控报警

可以对微服务的请求耗时、失败率、并发数等数据进行监控报警,提早发现问题。

3、分流鉴权

可以设置路由规则,AB测试等,通过注册中心对请求进行分流,并且可以对每笔请求进行鉴权,保证系统安全。

4、统一入口

可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、流量与并发控制,甚至基于API调用的计量或者计费等等

API网关主键设计可以参照下图:


Zebra微服务架构对API网关设计思考_第1张图片

在zebra设计开发过程中,我们积累了一些API网关设计的原则,分享给大家:

1、API网关不能反向依赖微服务

API网关必须是一个独立隔离的实体,不与底层服务进行反向依赖,这样就可以保证底层服务有任何变动,API网关都不需要进行修改。

但是RPC调用有个硬伤就是必须知道服务端的方法定义(包括:请求参数、返回参数、方法名)才可以进行调用,这样网关在调用后方的微服务就必须依赖微服务的接口定义,间接产生了反向依赖。

dubbo最新版本提供了泛化调用,可以解决此问题(泛化调用:不需要知道调用接口的请求与返回参数即可调用),zebra是基于GRPC的微服务架构,zebra实现了GRPC的泛化调用,可以解决此问题。

2、API网关必须是无状态

网关层为保证高可以,易于伸缩,快速启动,需要设计成无状态的。

3、优雅下线原则

当网关发现某一个节点不可用时(例如请求响应时间超过阀值),不是直接断开与此节点的连接,而是先把此节点标记为不可用(后续不在发送请求到此节点),但还会留出一段时间让之前的请求都响应完毕。

4、Slow start特性

当网关监听到有一台新的服务注册上来时,考虑到有些服务启动后,刚开始会有许多初始化的工作,此时服务对请求的响应速度是比较慢的。如果一开始就给这台服务分配太多的压力,有可能导致服务瞬间被压垮。为了避免这种情况,网关层需要考虑支持SlowStart特性。即,经过一段时间,逐渐把压力增加到预设的值。


Zebra微服务架构对API网关设计思考_第2张图片
zebra


Zebra微服务架构对API网关设计思考_第3张图片

你可能感兴趣的:(Zebra微服务架构对API网关设计思考)