小白入门微服务(3) - 什么是 API gateway
概述
- 前言
- 什么是 API gateway
- 为什么要用 API gateway
- 后记
前言
一开始吧,感觉我也描述不好什么是 API gateway,在看了这篇文章(https://microservices.io/patterns/apigateway.html)之后,感觉豁然开朗,那么我这边就用我的语言来描述一遍。如果我的文章对你有帮助,欢迎关注、点赞、转发,这样我会更有动力做原创分享。
什么是 API gateway
API gateway 处于客户端与各个微服务之间,它担任了反向代理的角色,将不同的请求路由到相对应的微服务中去。与此同时,它还有以下功能:安全,限流,缓存,日志,监控,重试,熔断等。
为什么要用 API gateway
首先我们来大胆想想一下,你是一个公司的 CTO,你公司的产品是要做一个类似于当当的卖书产品,叫【叮叮当当】。那么你的产品可能有以下三端:
- 网页版
- Android/iOS 客户端
- 小程序 当然你的产品做得足够大的话,你有必要开放一些给第三方调用的 REST API 接口。 那么现在来讨论一下产品的一些功能:
- 登录注册(登录注册、用户基础信息的存取)
- 价格服务(记录价格、双十一特价、秒杀价、优惠券价等价格的计算)
- 产品服务(产品信息、名称、单价、图片展示)
- 库存服务(记录产品库存)
- 评价服务(购买商品后的客户评价、讨论区)
- 第三方开放接口(例如:微信开放平台,提供给第三个调用的接口)
那么问题来了: 问题来了: 来了:
- 客户端与众多微服务交互,协议不统一,有些协议是对客户端不友好的。
- 数据不统一,可能在一个操作中,需要多个微服务的数据组装起来,才是我们一次请求想要的数据。
- 微服务 ip 和 port 改变,客户端无法感知。
- 不同的终端需要不同的数据,移动端可能仅仅 json 数据就能解决问题,网页端可能需要更多的数据展示。
- 关于鉴权,众多微服务,难道每个微服务都独立拥有一套鉴权系统吗?
解决方案 – API gateway(如图) 使用 API gateway,那么众多问题都得到解决: