我这边的Gateway设计包含了权限验证,协议路由,防刷等功能,这里的观点在服务间都是tcp长连接的应用场景下是比较合适的【游戏业务,需要有一些服务端主动推送给客户端的高实时性需求】。
协议路由这块我是用一个配置来规划每个协议应该发往哪里,发送的路由规则也是可配置的,Gateway后端的服务之间的通讯都是通过Gateway转发,通过一套内部协议进行转发,服务间的调用相当于调用一个sendToServer(serverid, msg, ...)。
个人认为这样的好处是简化了业务服务的处理,只需要关注Gateway,而不需要知道其他服务的更详细的信息,完全屏蔽了其他服务的部署情况。且简化了网络结构,如果后面的服务直接需要互联那么这个只有一两层的树状结构就会变成网状结构,他们之间的异常处理,重连等等就会变得复杂难以维护。
如果是基于http的微服务,那我认为通过注册中心获取服务,然后直接调用也是可以的,但经过Gateway去做这件事情可以有更大的控制力。
展开