智能服务网关平台实践之路

     一些互联网公司通常会有很多移动端应用:App,微信小程序,H5,这些应用主要的架构模式是C/S架构,即客户端/服务端模式,前端负责渲染数据,服务端负责提供数据,前后端通信协议通常采用http json。但是因为没有统一的服务标准,每开发一个前端应用都需要我们开发人员重新定义数据请求,返回的数据格式,浪费开发资源。

       同时每一个后台服务都需要对前端请求做独立用户认证开发,这种硬编码方式导致接口无法灵活配置,通常增加一个新接口或者新的认证方式要需要重新开发。

        每一个前端应用都要维护自己的api,像很多基础的api如商品详情地址,下单用户地址获取因为没有统一的平台维护都需要重复开发。逢大促期间这些api还需要进行备战,做服务降级,性能优化,容错等,基本上每开发一个Api都要重复以上步骤。上述问题如果从架构的角度来看,都是和业务非强相关的,可以考虑从业务系统中解耦出来,这就是我要给大家介绍的智能服务网关平台系统。

智能服务网关平台整体架构分为服务网关,服务网关配置后台管理系统,流量分析平台三部分。

总体架构图如下:


服务网关是移动端,h5,微信小程序,pc端的统一入口,所有的流量都需要经过网关转发到后台服务。服务网关定制了前后端标准化的务通信协议,还支持接口数据mock,用户签权,服务的路由,容错,数据的回溯功能,流量控制,灰度发布,AB测试,服务的编排等功能,服务网关配置后台管理提供了应用管理,api的发布,接口超时,容错配置,流量控制,服务降级,A/B测试,灰度发布等功能。流量分析平台主要提供了前端流量监控,错误日志汇总及分析等相关功能。

      根据自身业务的不同,不同业务对网关的需求是不一样的,下面重点介绍一下智能服务网关平台最基础的功能:1、服务的标准化,2、统一的用户签权和配置3、统一的服务故障隔离及容错机制。服务标准化包括api请求数据格式的统一,返回数据格式的统一。请求数据格式可以分三部分:1、固定的Uri+接口名称,2、请求的业务数据.3、请求的公用参数。如下的url地址http://域名/xxxxx?api=接口名&appName=yyy&screen=1280*720&networkType=wifi&model=MI2S&osVersion=4.1.1&client=android&brand=Xiaomi&uuid=86358302943417368dfddbfeaa3&clientVersion=1.0.0&data={“key”:“value”}

其中xxxxx 是固定的uri, api是接口访问key,value是接口名称,建议采用应用名+业务名+方法名,data是请求数据的key,value是标准的json结构,不同的业务可以嵌套多层json结构,其他client,screen,network等参数是公用参数,有的取自硬件设备,有的取自我们开发的软件。

返回数据的的标准化有利于客户端的数据渲染,弹框提示,网络异常等处理,标准格式如下:

{

   ret: 200,

   data: {

       bussInfo(业务节点名称): {

           msg:

       },

       success: true

   },

   code: "0"

}


最外层的数据节点ret代表网关到后端服务请求状态码,此状态码沿用了http状态码和自定义状态码,code是前后端网络通信的节点,控制着前端视图渲染,数据处理,网络异常等常用的一些值,像0不需要登录,3需要登录,10需要弹出验证码等。data数据解析的开始节点(固定节点),其下子节点bussInfo是业务数据节点,可包含多个。子节点success代表数据请求的结果,true代表成功返回,false代表异常,同时msg节点进行异常信息的提示。

统一的用户签权和配置:不同的登录方式后台校验业务逻辑完全不一样,在没有网关的情景下,后台业务需要独立做用户认证,而有了智能服务网关只需要根据接口在服务网关后台进行配置,网关根据不同的client的值来判断哪种登录方式,统一处理。

      统一的故障隔离和服务容错机制:智能服务网关上游会有很多业务集群,在高并发访问的场景下,如果某一个接口访问超时,极有可能请求连接被占用,连接数被占满,进而导致服务不可用影响到其他业务,产生雪崩效应。为了保证服务的高可用,我们需要在服务网关做故障隔离机制。主要分三步:1、针对单个接口在服务网关配置做合理的超时配置。2、针对后台的每一个服务或者应用,分配单独的线程池,把故障隔离到应用级别。3、针对单个应用某些流量比较大的接口,配置路由规则把流量转发单独的集群上和其他接口完全隔离开。

      统一容错机制:容错指的是服务在不可用或者超时的情况下,自动加载上一次访问的数据,防止前端页面出现空白。每一次接口请求,智能服务网关能通过URL规则匹配器自动分析可变部分和不可变部分生成动态的容错key,把符合规则的数据存储下来,如果接口请求失败,会根据容错key动态拿取上一次数据的展示。

容错流程图如下:


      上述的三点是智能网关服务平台最基础也是最核心的功能,只要实现这三点,一个网关平台的雏形就建立起来了,当然我们也开发其他比较实用的功能,数据追溯功能,简单来说就是追溯某一时间节点数据,在服务容错失效的情况下可以快速恢复数据,在其他情景下也可以用作数据的镜像。

       智能服务网关是C/S开发架构中最基础的服务,目前也有很多开源的网关项目,像netfix zuul, Spring Cloud Gateway等,尽快实现方法各有不同,但其本质是一样的,都是为了解决我们开发中的痛点,减少重复开发,让我们更关注业务。

       智能服务网关是企业API服务的汇聚中心,性能是衡量网关最重要的指标之一,本来客户端和服务端是可以直接连接的,但是现在增加了一个网络层,性能的好坏会直接影响到客户端的体验,在架构设计时可以考虑一下几点:

1、 网关必须是无状态的,可以灵活的横向扩展。

1、运行时减少对db依赖或者缓存的依赖,所有的操作尽量在内存中完成服务的处理和中转。

2、服务的处理和中转减少线程的依赖,采用非阻塞IO和异步响应机制。

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

推荐阅读更多精彩内容