简介
- 网关主要服务于微服务/API,偏向研发人员
- 反向代理主要面向传统静态web应用,偏向运维
- 而未来趋势是DevOps+网关和反向代理再次融合
发展趋势
WEB1.0/2.0时代,使用前置反向代理,由运维负责 nginx,进行反向代理和负载均衡、安全认证、限流缓存等功能。网站升级频率较低,反向代理大多采用静态配置方式。
微服务时代,API 服务升级频率高,传统的 nginx 动态配置较差,且运维执行效率低,就需要使用动态配置的网关服务,便于研发自主配置。
云原生时代提出更高要求,还需要支持灰度发布。要求网关不仅可动态配置,还要能动态编程,所以出现网关和反向代理融合的趋势,典型产品比如 envoy 和 Traefik。
云原生时代下的可编程网关
在k8s中,和网关等价的概念叫Ingress,像kong/envoy/traefik这些可编程网关,都有支持对接Ingress。
所有不同的端,ios 安卓 h5 web,要不要分,还是要看业务和团队规模,比如携程内部就有超过十套以上面向不同端的网关,总网关集群规模超过百台。对大体量多团队的公司,网关如果分的不够,不同团队容易打架。微服务也是这个道理,服务分分多少多细,也主要看体量和团队规模,小团队不分也没事。
安全认证要求,对于不同部门可能不一样,比如支付部门要求更严格,所以可以独立定制部署。
总之nginx偏运维,spring gateway对中国java程序员更友好。