早前,公司提供的服务治理平台太过于强大,提供了一整套的鉴权、流量监控、熔断、限流等功能;始终没有意识到网关在微服务架构中的重要性,现在才明白是公司的服务治理平台,充当了这一个统一的网关的角色。下面是对网关在架构中的作用的一些思考:
网关是否会成为一个系统的单点?
我的理解是不会,网关不会引入比传统的负载均衡架构更严重的单点问题,网关的功能应该是稳定的,不会频繁迭代,并且,一个合格的网关系统,应该本身保证高可用
在拥有成熟的服务治理平台的情况下,网关是否还有存在的必要?
我理解在某些场景下,仍然是有必要的, 如统一接入源
网关是否需要承担协议转换的功能?(http -> thrift)
最开始,我是觉得应该是网关来承担这个功能,因为这是一个统一的功能,应该对各个业务透明,在网关做一次就行了;但是后面发现,像protobuf和thrift这种二进制协议,是需要搭配idl生成的client才能实现正确的协议转换的,所以这个协议转换,还是应该在各个业务系统中做,比如thrift的服务,应该再开一个http接口,接受http的请求,网关只做一个请求转发的工作,具体可以参考grpc中的协议转换插件https://github.com/grpc-ecosystem/grpc-gateway