使微服务实战(二):使用API Gateway
使微服务实战(二):使用API Gateway
转自:http://www.open-open.com/lib/view/open1437547788943.html#articleHeader1
API网关:http://microservices.io/patterns/apigateway.html
参考资料
http://www.infoq.com/cn/articles/boot-microservices
https://www.douban.com/note/507823285/?type=rec
http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=208452217&idx=1&sn=a5c5b6436010182a260b90af2cd783e2&key=c76941211a49ab58de2b7a92851ea8f98e51b7d34fc223bb7ee8a3ac62fe07bdf198738e0db03d38e3d43b600ebf37dd&ascene=0&uin=MjMyNzA5NjUwMA%3D%3D&devicetype=iMac+MacBookPro11%2C1+OSX+OSX+10.10.4+build
引言
详情页
虽然这是个智能手机应用,产品详情页面也显示了大量的信息。例如,该页面不仅包含基本的产品信息(如名称、描述、价格),而且还显示了如下内容:
- 购物车中的件数
- 订单历史
- 客户评论
- 低库存预警
- 送货选项
- 各种推荐,包括经常与该产品一起购买的其它产品,购买该产品的客户购买的其它产品,购买该产品的客户看过的其它产品。
- 可选的购买选项。
当使用单体应用程序架构时,移动客户端将通过向应用程序发起一次REST调用(GET api.company.com/productdetails/)来获取这些数据。负载均衡器将请求路由给N个相同 的应用程序实例中的一个。然后,应用程序会查询各种数据库表,并将响应返回给客户端。
相比之下,当使用微服务架构时,产品详情页面显示的数据归多个微服务所有。下面是部分可能的微服务,它们拥有要显示在示例中产品详情页面上的数据:
- 购物车服务——购物车中的件数
- 订单服务——订单历史
- 目录服务——产品基本信息,如名称、图片和价格
- 评论服务——客户的评论
- 库存服务——低库存预警
- 送货服务——送货选项、期限和费用,这些单独从送货方的API获取
- 推荐服务——建议的产品
我们需要决定移动客户端如何访问这些服务。让我们看看都有哪些选项。
客户端与微服务直接通信
从理论上讲,客户端可以直接向每个微服务发送请求。每个微服务都有一个公开的端点(https