先不谈论要实现的功能,API网关我觉得主要指标就是性能,性能要想上的我觉得可以通过以下两个技术栈实现。
1.非阻塞
基于servelt 3.1异步io技术,spring 5 webflux, netty自定义http server都是实现非阻塞请求的方案。
2.协程
kotlin,Quasar都提供了协程的功能,在api网关后续业务处理及消息转发时,我们可以选择协程的方式来替代线程的模型,极大能够增加并发处理数量。Kong 看着一堆lua脚本头晕,spring Gateway, zuul2 他们都是优秀的API网关实现,基于重复造轮子理论,优秀的程序员喜欢重复造轮子。如果我们基于以上两个技术栈,实现一个高性能API网关是具备可能性的,而且定制型会更强,毕竟是自己写的代码。
优秀的开源api网关实现