中通API网关实践

在微服务的概念流行之前,API网关就已经存在了,最初是作为开放平台,面向合作伙伴提供OpenApi。随着后来微服务的流行,API网关作为系统边界,将所有的服务聚集在一起,是统一的入口,这就要求API网关能够满足不同类型应用、不同场景的需求;在技术上,也面临着可用性、灵活性、安全性等不同的挑战。

随着中通内部应用的大量开发,越来越多的业务系统需要能够快速开发接入,而且要保证安全稳定。所以我们决定采用网关来代理后端服务,同时抽取统一管控服务的流控、鉴权、负载均衡等等,目前市面上已经存在一些开源的网关系统,比如SpringCloud、Kong等等,由于现在系统中已经存在大量的dubbo服务,所以我们决定通过自研网关来实现网关的通用功能以及一些定制化的开发。

使用场景

在中通,网关主要有以下几种使用场景:

1.面向第三方合作平台:我们将内部的下单、物流查询等接口通过API网关提供给商家、合作伙伴调用;

2.面向移动APP;

3.面向WEB应用:一般在前后端分离的场景下使用,后端开发人员开发服务通过API网关暴露给前端。

4.跨语言服务调用:中通内部存在多种语言并存的情况,有跨语言调用的情况。

只需维护一个服务,即可面向多端输出;只需调整API定义,即可实现对APP、设备、web端等多种终端的支持,避免多个场景多套API,大幅降低开发成本。

设计目标

1.动态配置:能够动态新增API;

2.弹性化:动态限流与熔断,帮助后端抵挡流量高峰;

3.安全性:满足不同场景下的鉴权、安全需求;

4.无状态:更好的支持横向扩展;

5.高可用:网关作为系统内的单点,必须做到高可用。

以下是核心功能框架图

特点与优势

2.弹性:网关可帮助开发人员限制API的并发数和每秒最大请求数,从而让后端操作可以抵挡流量高峰。还可以通过缓存API调用的输出来避免每次都调用后端,从而提升性能,并缩短终端用户遇到的延迟。

3.生命周期管理:在发布了API之后,开发人员可能会需要构建和测试增强现有功能或添加新功能的新版本。API网关支持可以同时操作修改每个API版本,以便在发布新API版本之后,现有应用可以继续调用先前的版本。Api网关还支持自定义切换版本的规则以便线上灰度测试。

4.协议转换:网关提供将Dubbo服务转为HTTP协议接口的功能;网关还提供将请求数据投递到用户指定MQ的功能以满足低延迟的需求。

5.操作监控:当API发布并处于使用状态后,网关会为开发者提供指标控制面板,监控对服务的调用情况。涵盖了API调用次数、延迟数据和错误率。你还可以在kibana中指定关键词搜索某次调用,也可以通过kibana来自定义统计API的调用情况。

分层实现

中通网关在逻辑上分为四层

1.接入层,负责请求参数的解析

2.拦截器层,负责实现网关鉴权、灰度、限流等核心功能

3.映射层,负责将请求参数映射转换为后端服务所需要的参数

4.调用层,负责将转换后的参数调用后端服务的功能

高可用

网关作为一个单点,一旦发生故障是灾难性的,我们采用了以下的设计来增加保障网关的高可用性:

1.限流与熔断:我们给API提供了不同维度的限流,基于用户和API的维度,可以对每个用户每分钟(每小时、每天)的调用量做限制,也可以对每个API的并发数量做限制。在任何分布式环境里,故障是难以避免的,我们经常遇到后端服务异常或者超时的情况,这时我们通过引入hystrix来隔离API,使得一个API出现故障时,不会拖累API网关造成整个API网关故障。又因为我们一个API网关包含了几百个API,如果使用线程池的方式,线程会过多,所以我们采用信号量的方式。我们通过apollo配置中心对hystrix的配置进行管理,使得hystrix配置可以被动态修改。

2.线程隔离:我们将耗时较长的API隔离开来,放入单独的线程池中执行,当其出现超时或者其他异常时,不会影响其他API的调用。

4.弱依赖第三方服务:我们对所有的API配置、以及Session信息做了本地缓存,在数据库、Redis出现异常时也不影响接口的访问,由此来降低因第三方服务、中间件不稳定导致的网关故障

网关模块

1.GatewayWeb:网关API入口;

2.GatewayPortal:统一的管理界面,开发人员可以在此创建配置API。

日志与异常

为了让后端开发人员能方便的查询API调用日志,我们将API调用的参数、耗时、异常等打印到logback,通过logkit收集到kafka,然后消费采集到elasticsearch,通过kibana对日志进行查询和展示。除此之外,我们还定期的对日志进行不同维度的统计(调用量、错误率等),在控制台中展示查询。

WEB应用SSO插件

WEB应用SSO插件是我们调研公司内部当前浏览器端开发的情况推出的前端中台解决方案,结合前端的天工模板,旨在解决当前Web开发中存在的问题,提升开发效率。

这套解决方案有以下的功能:

1.统一交互前后端交互标准;

2.SSO登入登出、权限控制等均由天工模板、网关来实现;

3.提供统一的数据签名、黑白名单、防刷等安全防护;

4.Apicenter提供统一的文档生成、模拟调用、数据mock功能;

5.提供前端设计器,通过拖拽组件创建前端页面。

下图是接入Web应用接入网关之前与接入之后的情况:

接入之前:

接入之后:

技术细节

全异步化

同步调用受限于线程数量,而线程资源宝贵,在API网关这类高并发应用场景下,一定比例的API超时就会让所有调用的RT升高,异步化的引入彻底的隔离API之间的影响。网关在Servlet线程在进行完API调用前置校验后,使用Dubbo和AsyncHttpclient发起远程服务调用,并结束和回收到该线程

1.使用异步Servlet

2.使用异步Dubbo

3.使用异步HTTP库(AsyncHttpclient)

灰度

原理

应用场景

dubbo初始化导致heap溢出

后端服务超时导致网关阻塞

由于servlet默认是阻塞式调用,后端服务大量超时,导致网关线程被占用无法释放,无法接收新的请求,通过异步Servlet和多级线程池的方式,隔离后端服务对网关造成的影响

网关在中通现状

中通的API网关目前服务了内部的众多系统——掌中通、掌上神州、网投系统等,目前日均调用量达到13亿,峰值调用约3万qps。

未来的展望

1.未来网关将会作为中台解决方案的一员,应用于中通的各种系统,不管是移动端还是浏览器Web端,都有网关的身影;

2.网关将会提供一系列SDK工具,涵盖API的创建,文档的生成与查看,服务的Mock与测试等,为开发人员提供方便的服务。

THE END
1.高性能网关模块:工业自动化网络的优选在工业自动化领域,高性能网关模块扮演着至关重要的角色。它们是连接不同设备和系统的关键桥梁,确保数据的高效传输和实时处理。本文将探讨高性能网关模块的重要性,以及它们如何成为工业自动化网络的优选。 工业自动化的挑战 随着工业4.0的兴起,工厂和生产线对自动化的需求日益增长。自动化不仅提高了生产效率,还带来了对https://blog.csdn.net/weixin_40979310/article/details/141179086
2.智能网关模块SchneiderElectric智能网关模块 zigbee接收powertag数据,modbus tcp向上传输数据 属于ecostruxure终端智慧,安全到位我要采购联系支持人员我要采购联系支持人员 需要帮助? 从此处开始! 立即找到答案。自行搜索解决方案,或者联系我们的专家。 获取支持 我们的客户关爱团队可为您提供详细信息、技术支持、投诉帮助等服务,请联系他们。 浏览常见https://www.schneider-electric.cn/zh/product-range/64482-data-center-expert/
3.网关模块的作用及其重要性(企业如何选择网关模块)随着互联网的蓬勃发展,网络安全和数据传输已成为各个行业中的重要问题。在保障数据安全和高效传输的过程中,网关模块起着至关重要的作用。 什么是网关模块 网关模块是一种用于连接两个或多个网络的设备,它可以使得来自一个网络的数据能够发送到另一个网络。在互联网中,网关模块可以连接本地网络和外部网络,从而实现数据https://www.iotrouter.com/news/1852.html
4.供应智能照明模块深圳合广测控智能网关(A8SRW)批发供应智能照明模块-深圳合广测控-智能网关(A8-SRW) 产品标签|智能照明灯控合广测控 <上一个下一个> 价格 订货量 ¥1.00 ≥1 于先生 微信在线 发货地:广东 深圳 发货期限:7天内发货 供货总量:10000个 https://heguangcekong.cn.china.cn/supply/3327981972.html
5.智能家居网关模块电路设计集锦家庭网关是嵌入式智能家居系统的核心部件,所设计的无线收发模块电路是家庭网关的一部分。单片RF收发芯片nRF0433组成的无线收发模块电 路的原理和设计方法,所设计的无线收发模块电路工作在433MHzISM频段,数据速率9600bit/s,灵敏度高达-105dBm,最大发射功率达 10mW,电源电压215~515V,工作电流31~47mA。 https://www.eepw.com.cn/article/201710/369631.htm
6.飞利浦智能照明模块以太网关PDEB/PDEG「智能家居系统」飞利浦智能照明模块 以太网关 PDEB/PDEG 价格:1元/件更多产品优惠价> 最小采购量:不限 主营产品:建筑智能化:智能照明控制系统 楼宇BA自控系统 能源管理系统 IBMS集成系统 智能家居系统 供应商:湖北德龙自动化科技有限公司 更多优质供应商> 所在地:中国 湖北 黄石http://china.makepolo.com/product-detail/101060789302.html
7.智能网关模块智能网关模块批发促销价格产地货源tuya网关迷你无线模块涂鸦智能家居中控系统智能远程zigbee网关 深圳市日盛华科技有限公司17年 月均发货速度:当日 广东 深圳市宝安区 ¥65.50成交1187个 智能家居有线Zigbee3.0网关模块遥控涂鸦APP远程控制支持语音助手 深圳市态蒙科技有限公司6年 月均发货速度:暂无记录 https://www.1688.com/chanpin/-D6C7C4DCCDF8B9D8C4A3BFE9.html
8.网关与子设备阿里云物联网平台// 默认不开启网关功能,开启之后,初始化的时候会初始化网关模块,获取云端网关子设备列表ioTDMConfig.enableGateway =true; 子设备动态注册 使用ProductKey和DeviceName动态注册 子设备添加到网关之前需要先进行动态注册获取子设备证书信息,您需要在物联网平台开启动态注册功能。动态注册支持同时注册多个子设备,用于获取子设https://www.alibabacloud.com/help/zh/iot/developer-reference/connection-of-sub-devices-to-iot-platform
9.家庭网关在家庭网络中的作用与功能[图]流媒体网家庭网关也需要集成多种内部网络连接技术,可以通过电力线、双绞线、同轴线、无线等多种方式接入家庭网络中的设备,其它的不能满足家庭网络标准的设备则通过IEEE 1394,X.10等接口接到一台转换设备连接到家庭网络中。 4.2 业务功能 业务功能模块需要完成部分公共网络推进到家庭中的业务功能。家庭网络中可能存在着娱乐、https://lmtw.com/mzw/content/detail/id/11928/keyword_id/-1
10.分布式架构中网关作用mob6454cc6553fc的技术博客二API网关核心指标 1 模型 2 安全性 3 高并发性 4 高可用性 5 扩展性 6 运维成本 三API网关架构 1 几个要点 2 网关整体模块 3 系统领域划分 4 系统分层模型 5 防护层 6 接入层 1) 接入规范 2) 接入 3) 文档 7 核心层 1) 验证层 2) 增强层 https://blog.51cto.com/u_16099192/11644355
11.网关服务器模块port输出模块华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:网关服务器模块port。https://support.huaweicloud.com/topic/964615-2-W
12.LoRa网关LoRa终端设备LoRa模块LoRa组网方案厦门四信工业级lora应用基于LPWAN的远距离无线通信lora模块,具有低功耗、高灵敏度、长待机特点,支持LoRa标准协议,lora模组,LoRa基站,支持LORA终端定位、测速,可以实现多频点、多信道的同时接收,支持4G全网通通信.主要应用在智能抄表、智能停车、智慧农业、智能安防、智慧路灯http://www.four-faith.com/html/procenter/lora/
13.产品中心产品简介:这是一款LoRa转2G/4G的无线数传网关,专门用于将LoRa数据或串口数据转换为IP数据,或将IP数据转换为LoRa数据或串口数据,通过无线通信网络进行传送的无线中继设备。硬件包括控制器单元、无线通讯模块(2G/4G模组、LoRa模组)、电源管理模块、接口转换电路等主要部件。这款无线网关采用工业级的高性能32位通信处理器,http://www.rf-module.cn/product/