这个要理解为什么做网关。简单扼要来讲,就是为了处理每个服务都要做的事情。你可以认为是切面变成了服务。
路由,协议转换,鉴权认证,熔断,限流。这些逻辑和你实际的业务代码没太大关系,但是每个业务服务都要搞一个,显得很累赘重复。那怎么办呢?
两种解决思路。
一,使用gateway服务,所有的服务均接入和调用这个gateway,由gateway把这些通用问题处理了,再去请求实际的业务逻辑。gateway是关键节点,瓶颈节点。spring cloud gateway也是这样。它连接了系统的所有方方面面,是个大管家。除了spring cloud gateway,其他的代表还有netty,kong,zuul等
图侵删
二,集成到本地,可以用sidecar,类似一个代理服务器。sidecar就是那种有拖斗的三轮摩托车,旁边的那个人辅助给你观察。下面是sidecar的架构。
图侵删
啊不对,放错了。应该是下面这个。
图侵删
其实万变不离其宗。首先,你确认有一些逻辑是通用的(鉴权,限流,路由),再是你提取了出来(变成了AOP切面逻辑),然后你把他写成一个单独的服务给这个服务用(sidecar),最后,你把这个服务给所有服务用(gateway)。