本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。
背景
随着公司业务的飞速发展,基于php的模块化架构难以支持未来业务的发展:
- php模块化架远远落后于行业主流架构(微服务–>云原生),而php生态的服务治理开源组件匮乏,研发投入过大
- 杭州php人才匮乏,导致新鲜血液招聘困难
- 基于php的多进程架构难以支撑电商高并发业务场景
尽管很早我们就做了会员、商品、交易的服务化,但流量入口还是php主站,php实际上仍是一个单体应用,单体应用无需网关。当全站java化之后,单体应用将被拆分为微服务,自然需要一个网关来负责统一流量入口、鉴权、安全防护、业务统一处理等。
在2019年3月,我们发起了代号为诺曼底
的全站java化项目,将微服务网关项目命名为airborne101
,第101空降师(101st Airborne Division (Air Assault))是美国陆军的一支空中突击部队,创建时是一支空降部队,在二战期间,该师首先参加了诺曼底战役。
难点
简单来说网关就是个web应用,接收转发http请求。它的难点在于需要用少量机器支撑起全站的流量,方便快速地支持业务的发展且足够稳定。总结起来就是如下三点:
- 高吞吐
- 扩展性
- 稳定性
选型
网关技术选型考虑主要考虑两点:
- 选择