2015年,Chris Richardson在NGINX官方博客上一连发布了七篇微服务系列的文章,为micro-service这个从05年就被提出来的概念加了一把柴火。这个系列中的第二篇文章-"Building Microservices: Using an API Gateway”[1] 提出了一个概念: API Gateway。今天不想细聊微服务,而是讲讲与之紧紧关联的API网关。
标题楔子:聊两句微服务。
上图是Amazon商城的Android app界面,图上指出了1到6个模块,从历史订单查阅到推荐商品等等,如果在学校中做过一些学生管理系统这样的crud应用,会想当然地这样来设计这个这个系统。
这样的设计非常经典和简洁,但是要考虑一些问题:
除了移动端,可能还有网站,那么就意味着要在网站开发过程中使用和移动端业务逻辑相同的代码
单个功能可能要给其他功能提供一些调用接口,那么随着这个应用越来越丰富,接口之间的边界越来越模糊,功能与功能之间交叉的地方可能越来越多
所有应用在一个数据库上操作,不同功能都在调用同一个数据库,数据库的性能出现瓶颈。
这样的设计,在想要小小修改其中的某个功能的时候,需要把整个应用关闭,再一起发布。
如果是团队开发,功能中交叉的