在回答这个问题之前我先问你几个问题:
1、你的系统新版本上线的时候如何做线上压测?
也许你已经有了解决方案,下面谈下我的看法,不权威,仅供讨论交流。
第一个问题个人看法:需要对系统做网关设计,让其作为统一流量入口。方便我们对请求做流控处理,也就是说我们可以有选择的对某些请求打标,从而识别这类请求。然后设计一套压测的流控规则,让这类被打标的请求产生的数据全部进入影子表,这样就达到了用生产环境数据和生产环境同一套代码来压测系统性能的目的,并且100%避免了因环境差异导致的意外情况。

2、当你的服务集群节点和微服务数量激增的时候你的域名是不是多到让运维人员抓狂?
这里使用网关可以做到一个域名通吃天下,其他微服务只需要用服务注册发现来实现通讯。而这里的网关的作用就是服务路由的作用。

3、你的系统能做到灰度发布吗?
实现灰度发布就是让最新版本,即内测版控制在小范围用户群内使用,虽然都是使用的生产环境,但可以把用户分成两类,一类是可以享受内测版本的用户,一类是不能享受内测版的用户。这样即使新版本有问题,也可以把影响范围降到最低。如果内测版稳定了,即可关闭流控,逐个构建分批灰度发布每个服务,而且可以做到随时发,随地发。不用等到晚上深夜流量很少的时候发版,那样不仅不能完全灰度,费时费力,还搞得团队身心疲惫,团队异动大,各个都成了黑猫眼。

综上所述:网关的作用他不香吗?就冲着第三个作用,设计架构的时候都不能忘了设计它。
网友评论