混合云架构微服务API网关最佳实践

什么是API网关

API网关(API Gateway),从本质上讲是一个技术产品,旨在提供API托管服务,覆盖设计、开发、测试、发布、运营、运维监测、安全管控、下线等API各个生命周期阶段,帮助开发人员快速建设以API为核心的系统架构。常见的应用场景有:(1)构建集成中台,即利用API网关丰富的适配组件和强大集成能力,实现复杂业务系统的统一调用及管理;(2)构建多种类技术架构,融合Serverless架构、微服务架构、前后台分离架构等;(3)构建API生态,以企业核心业务打通上下游企业的数据流,帮助企业实现从传统供应链到价值链转型。

应运而生的API网关

在从中国制造到中国智造的创新之路上,大量的传统经济实体正在逐步逐步地数字化转型,撇开组织意识形态的数字化转型不谈,聚焦在传统IT领域的数字化转型,基本的策略就是ABC战略,即AI、BigData和Cloud,而这三者又以Cloud作为基础架构必须为先行者,且最容易落地,加之企业的数据安全考虑等多种因素,在Cloud战略层面,实体经济绝大部分都选择混合云架构,传统制造型、IoT物联网等应用会选择落地在企业专有云(Azure Stack/Ali Apsara等)或者私有云(Openstack/vmWare等)。而面向C端用户、营销领域等应用因为必须面对激烈的市场竞争环境,所以往往会选择能力成熟度更高的公有云落地。在ABC战略之下,企业的数字化转型的一个重要举措就是从服务2b到2c的延展,其核心思想就是缩短供应链的链路,减少中间成本,因此传统的monolithic应用在2c应用场景下,无论是并发、吞吐量还是可用性都在全面经受挑战,此时微服务应运而生。而2c转型直白一点说就是直面消费者,移动app就成为了2c服务的最重要的触点。前后端的绝对分离,要求的就是后端服务的暴露的安全性管控的同时又能方便地进行管理。此时API网关就在微服务和移动app之间构建起来了一个最重要的分层,而对于一个实体经济而言API网关也必然面临着混合云架构的挑战。

双擎微服务的最佳搭档

上一段落已经简述了微服务如何催生了API网关,关于这一点从两大微服务体系的崛起过程也可以看出,Dubbo2012年开源的时候主要以阿里的大厂效应,被众多互联网公司推崇,当时也没有明显地提出微服务网关的概念,基本上都是自家开发open api。2014年微服务的概念被Martin Fowler提到以后,Pivotal团队以Spring Boot为核心简化开发之后对分布式组件进行了整合(服务发现/注册,路由,负载均衡等),并要求所有请求都统一通过API网关(Zuul)来访问内部服务,网关接收请求后,从Eureka获取可用服务,由Ribbon进行负载均衡后,分发到后端的具体实例,微服务之间通过Feign进行通信处理业务,至此微服务体系的脚手架逐步被众多Spring开发者所接受。而API网关之于Dubbo或者Spring Cloud而言都是一个毋庸置疑的必要组件,否则无法实现严格的前后端分离、无法满足安全需求等,当然Dubbo的微服务网关时至今日始终没有全家桶的套餐,在Dubbo官网的生态系统上可以看到API网关有三个:Kong/Dubbo Proxy/zuul。

Figure-1 Dubbo生态系统中API Gateway

Spring Cloud已经放弃了Zuul,虽然Netflix升级为Zuul2,同时Spring Cloud也更推荐Spring Cloud Gateway,同时支持整个Sping生态,这个命名颇有些耍流氓的感觉,正如Zippo。Dubbo Proxy对于开发而言需要大量的代码,其纯Code风格正在变得越来越不亲民,正其时Kong大行其道。

Figure-2 Spring Cloud全家桶典型架构

目前由于Spring的生态较好,使用Kong直接作为微服务网关无法直接对接注册中心(无论是zookeeper还是Nacos或者etcd都需要独立开发Plugins),因此直接将Kong作为微服务网关的案例还较少,但是基于Nginx的Kong在性能上无论是理论还是实测其tps在同等硬件消耗的条件下,都好于zuul或者spring cloud gateway。通过插件开发统一对接了Dubbo的ZK注册中心和Spring Cloud的Nacos注册中心,将异构的微服务统一注册到Kong API网关,同时减少了Http请求链路长度。

Figure-3 双擎微服务API网关

Monolithic应用的救赎

这边2C应用的微服务建设的如火如荼,好似传统单体应用可以偏安一隅,然而实际上2C应用的触点的直接下一层是微服务不错,也有效解决了并发、高可用等问题,但是不可避免地要将部分请求下探到传统单体应用,比如BOM、主数据等。而反应迟钝的传统2B应用此时才发觉大火已经烧到了家门口,匆忙之间进行微服务化显然是不现实的,如何化解燃眉之急呢?

场景一:利用API网关的快速DB2API功能,实现数据库到API的直接转化,同时注册到Kong API网关,根据请求方分配不同的access id,对不同的access id进行一定级别的限流,可以快速满足2C的快速应用场景。

场景二:直接将原有单体应用的接口(SOAP居多)注册到Kong API网关,同样根据请求方分配不同的access id,对不同的access id进行一定级别的限流,可以防止单体应用系统应用负载过多而影响其正常业务操作。

上述两个场景可以以最小的代价,最快的速度响应2C应用的急速扩张,从而留下喘息的时间进行微服务改造、接口改造、资源扩充等。

混合多云下的多面手

作为一个API网关,既可以直接作为微服务网关用,亦可以兼容异构的微服务体系,同时将传统数据库变现API快速满足业务需求,单体应用接口上架API网关防止上游请求击穿传统应用服务。下图是一个混合云环境下分布式微服务API网关为中心的最佳实践。主要要素解释如下:

1、各类中间件:缓存、消息、数据库等

2、基于适配原则的中间适配代码层

3、微服务网关、注册中心、配置中心等关键组件

4、统一的管理平台:

4.1、API内管平台:前后端开发和测试的协作平台,面向全生命周期的API实践

4.2、统一日志平台:通过同构的分布式网关将不同数据中心的日志回传至统一的日志平台

4.3、统一链路追踪平台:提供从前后端分离的网关到链路底层的追踪平台

Figure-4 混合云API架构微服务网关最佳实践

写在最后

企业级的API网关解决方案往往不能像互联网那样干脆利索,因为企业有着悠久辉煌的历史,自然包袱也是少不了的,长久以来作为成本中心的企业IT,在全面进行数字化转型的过程中,必然不能太过于激进,兼容并蓄才能更有落地性,因此API网关在企业的实践需要考虑更复杂的应用场景,既要面向未来的技术趋势,也要兼顾到遗留系统的自然延续性。

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