随着互联网的不断发展,微服务架构逐渐被程序员掌握和应用。今天我们就通过案例分析来了解一下微服务的网关模式都有哪些类型。
SIA微服务网关的4种模式:同步托管式、同步注解式、异步托管式、异步注解式。
1、同步托管式
采用单一源码库进行代码管理,交付方式是容器交付,去中心化的设计。目前大部分生产环境和业务都采用同步托管模式。
优点:网关交付对业务方完全透明;只要在容器平台申请一个网关资源,就可以得到网关服务;基于Filter开发运维简单,容量小。
缺点:定制化不够强。
2、同步注解式
在跟业务团队对接时,我们发现很多业务系统已经实现了一些独特的业务逻辑,难以迁移到网关,所以我们采用一种比较兼容的注解的方式去适应这些业务逻辑,在原有项目的基础上加一个注解,将它们纳入到整个网关管理体系中来。同步注解式是基于SpringCloud-Zuul1实现的分布式微网关体系,管理业务方源码库,根据业务方环境进行交付。
优点:对项目的控制力比较强,业务团队独立运维,支持扩展定制化;基于Filter开发运维简单,容量小。
场景:业务定制化场景比较多。如果要加载初始化、加大资源,或对业务的Filter拦截机制有定制化需求,都可以用同步注解模式。
SpringCloud和Zuul使用的后端技术是基于Servlet,其线程处理模型是一个请求对应一个线程,当请求量过多,线程栈溢出,就会占用非常多的资源,导致网关无法提供额外的线程资源来处理新进来的请求。因此我们采用了SpringCloud自研的SCG技术方案。
SpringCloud-Gateway基于Netty和反应式编程模式,采用收敛式的线程处理模型,只要用少数线程就可以处理高并发的流量请求。目前已经实现了基于SpringCloud-Gateway的异步模式,当同步模式在线上运行过程中出现资源透支的情况,就选择使用异步模式。异步模式也分为2种:异步托管式、异步注解式。
3、异步托管式
通过单一源码库进行代码管理,采用容器交付。主要使用场景是流量型,如果业务多对高并发、高吞吐场景,建议使用异步托管式。
4、异步注解式
如果想在异步网关基础上做定制开发,可以使用异步注解的模式。
网关的4种模式来源于业务的需求:为兼容业务已有逻辑演进出注解模式;当出现性能瓶颈、资源浪费时,采用异步模式应对高并发流量。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。