Gateway 的职责 及Gateway的模式(单模式及多模式的区别)

原文:
https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern

为什么要用Gateway


有一个章节描述到为什么需要Gateway 代替 客户端直接访问微服务子系统,其中提到一个问题:

What happens when the application evolves and new microservices are introduced or existing microservices are updated? 

当前微服务发生变化,或者随着整个应用系统不断进化(evolves)或者引入的子系统时,客户端怎么办?就是一个噩梦。

如果没有Gateway, 有如下缺点:

  1. Coupling 耦合
    客户端与微服务各个子系统耦合度太高。

  2. Too many round trips 请求响应之间的往返过多
    请求过多,会带来严重的响应迟滞

  3. Security issues 安全问题
    如果没有Gateway 意味着所有子系统都需要暴露出来,存在安全隐患。当然你也可以为每个子服务系统做一个校验,但请参考第四点。

  4. Cross-cutting concerns 横切关注点(或像下文叫的 Gateway Offloading )
    如果需要做一些身份校验、权限验证等的验证时,如果没有Gateway ,则每个微服务都需要自己做一层校验,而实际上这一层校验跟其他子系统做的逻辑基本都一样,增加了这个逻辑的冗余。有Gateway 就可以把这些逻辑抽取出来。

Gateway模式


A. 单节点Gateway模式

Single Gateway.png

意思是单一个Gateway去服务不同的产品线客户端,例如商品App及商品运营后台同时使用同一个Gateway。

your API Gateway service will be growing and evolving based on many different requirements from the client apps.
it could be pretty similar to a monolithic application or monolithic service

随着业务需求不断地增长,整个应用系统不断进化膨胀,你会发现单个Gateway越来越像 monolithic 单应用系统。(单应用系统缺点就不多说了,其中一个缺点就是要改动一个功能则要重启整个服务)

B. 多节点Gateway模式

Multiple Gateway.png

一个 产品线客户端都有对应一个定制的Gateway。
例如一个商品App对应一个Gateway, 一个商品运营后台对应一个Gateway。

the API Gateways should be segregated based on business boundaries and the client apps and not act as a single aggregator for all the internal microservices.

每个Gateway应该按照不同的业务边界进行划分,而不是把所有业务需求都放在同一个Gateway,这样会让这一个单一的Gateway变成一个聚合服务。

Gateway 功能

  1. Reverse proxy or gateway routing 反向代理及路由
    可以参考一下nginx 的反向代理

  2. Requests aggregation 请求聚合
    将多个对子系统请求聚合在一起

  3. Cross-cutting concerns or gateway offloading 横切关注点
    主要是将共同的功能抽象出来,有如下功能:

    • Authentication and authorization 认证及授权
    • Service discovery integration 服务发现
    • Response caching 缓存
    • Retry policies, circuit breaker, and QoS 重试策略、熔断、QoS(服务质量监控)
    • Rate limiting and throttling 限流
    • Load balancing 负载均衡
    • Logging, tracing, correlation 聚合日志、系统跟踪
    • Headers, query strings, and claims transformation
    • IP whitelisting 白名单

附:
https://www.cnblogs.com/savorboard/p/api-gateway.html -- 另外一篇比较直白的国内文章
里面提到双重Gateway :
第一层Gateway 主要负责 安全、认证、分流、监控、日志
第二层Gateway, 聚合Gateway 主要负责超时、缓存、重试、熔断、查询聚合。

双重Gateway.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351