博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白入门微服务(3) - 什么是 API gateway
阅读量:6804 次
发布时间:2019-06-26

本文共 1209 字,大约阅读时间需要 4 分钟。

概述

  • 前言
  • 什么是 API gateway
  • 为什么要用 API gateway
  • 后记

前言

一开始吧,感觉我也描述不好什么是 API gateway,在看了这篇(如果我的文章对你有帮助,欢迎关注、点赞、转发,这样我会更有动力做原创分享。

什么是 API gateway

API gateway 处于客户端与各个微服务之间,它担任了反向代理的角色,将不同的请求路由到相对应的微服务中去。与此同时,它还有以下功能:安全,限流,缓存,日志,监控,重试,熔断等。

为什么要用 API gateway

首先我们来大胆想想一下,你是一个公司的 CTO,你公司的产品是要做一个类似于当当的卖书产品,叫【叮叮当当】。那么你的产品可能有以下三端:

  • 网页版
  • Android/iOS 客户端
  • 小程序 当然你的产品做得足够大的话,你有必要开放一些给第三方调用的 REST API 接口。 那么现在来讨论一下产品的一些功能:
  • 登录注册(登录注册、用户基础信息的存取)
  • 价格服务(记录价格、双十一特价、秒杀价、优惠券价等价格的计算)
  • 产品服务(产品信息、名称、单价、图片展示)
  • 库存服务(记录产品库存)
  • 评价服务(购买商品后的客户评价、讨论区)
  • 第三方开放接口(例如:微信开放平台,提供给第三个调用的接口)

那么问题来了: 问题来了: 来了:

  • 客户端与众多微服务交互,协议不统一,有些协议是对客户端不友好的。
  • 数据不统一,可能在一个操作中,需要多个微服务的数据组装起来,才是我们一次请求想要的数据。
  • 微服务 ip 和 port 改变,客户端无法感知。
  • 不同的终端需要不同的数据,移动端可能仅仅 json 数据就能解决问题,网页端可能需要更多的数据展示。
  • 关于鉴权,众多微服务,难道每个微服务都独立拥有一套鉴权系统吗?

解决方案 -- API gateway(如图) 使用 API gateway,那么众多问题都得到解决:

  • 各个微服务先与 API gateway 交互,转换成客户端友好的 REST API。
  • 在 API gateway 中组装好数据再返回给客户端。
  • 在 API gateway 中修改 ip 与 port 客户端无感知,正常使用。
  • 采用多个 API gateway ,不同 API gateway 响应不同的数据给不同终端。
  • 在 API gateway 中统一鉴权,省去多余代码。

如此修改之后,众多问题都迎刃而解,客户端对众多微服务是无感知的。

后记

真正的微服务架构还远不止这些东西,还有服务注册、服务发现等等。这里只是带领你入个门,后面会循序渐进,逐步走向完整。很高兴你能看到这里,又进一步学习了微服务。 个人的知识储备总是有限的,如有错误的地方,还请大佬斧正。点击阅读原文,链接到我的知乎,我会在知乎上对文章错误的地方进行修改。

本篇文章首发于公众号「zone7」,关注公众号获取最新推文,后台回复【小白微服务】获取源码。

转载地址:http://cknwl.baihongyu.com/

你可能感兴趣的文章
jquery hover 不停闪动 解决(亦为stop()的使用)
查看>>
C#反射取数组单个元素的类型
查看>>
Unity编辑器下获取动画的根运动状态并修改
查看>>
JS如何获取url查询字符串的键和值?
查看>>
20165206 2017-2018-2《Java程序设计》课程总结
查看>>
【SignalR学习系列】5. SignalR WPF程序
查看>>
【2011.09.01】如何使用javaScript代码获取系统时间和日期?
查看>>
data guard switchover切换异常
查看>>
领悟javascript中的exec与match方法
查看>>
Linux内核--网络协议栈深入分析(五)--套接字的绑定、监听、连接和断开
查看>>
Mysql索引详解及优化(key和index区别)
查看>>
unittest用例的执行顺序
查看>>
随笔学习初谈
查看>>
指令与数据
查看>>
iOS Document Interaction 编程指南
查看>>
HTTP返回的状态码
查看>>
sql创建表格 转载
查看>>
请求接口的封装
查看>>
【050】World Flag Database
查看>>
MySQL server has gone away 的两个最常见的可能性
查看>>