api网关选型(API网关作用)

4747 382 2022-11-06


本文目录一览:

该怎么选择网关设备?

选型标准:吞吐量≥你的外网带宽*2(厂商对外公开的是双向吞吐量)

最大并发连接数:≥800*200(桌面操作系统正常状态下最高连接数)

新建连接数:≥2000(这个数值在主流厂商百兆级别网关设备中算是比较低的,对于你们800的用户规模是够用了)

品牌:尽量选择研发实力强的传统安全厂商,比如:juniper、思科、华为、H3C、天融信。。。。。


为什么需要api网关


API网关跨一个或多个内部API提供单个统一的API入口点。 通常还包括限制访问速率限制和有关安全性等特点。 诸如Tyk.io的API管理层增加了额外的功能,例如分析,货币化和生命周期管理。

基于微服务的架构可以具有10到100个或更多个服务。 API网关可以为外部消费者提供统一的入口点,而与内部微服务的数量和组成无关。

API网关对于微服务的好处:

1、防止内部关注暴露给外部客户端

API网关将外部公共API与内部微服务API分开,允许添加微服务和更改边界。 其结果是能够在不对外部绑定客户端产生负面影响的情况下重构和适当大小的微服务。 它还通过为您的所有微服务提供单一入口点,对客户端隐藏了服务发现和版本控制详细信息。

2、为您的微服务添加额外的安全层

API网关通过提供一个额外的保护层来防止恶意攻击,例如SQL注入,XML解析器漏洞和拒绝服务(DoS)攻击。

3、支持混合通信协议

虽然面向外部的API通常提供基于HTTP或REST的API,但是内部微服务可以从使用不同的通信协议中受益。 协议可能包括的Protobuf或AMQP ,或者用SOAP,JSON-RPC或XML-RPC系统集成。 API网关可以在这些不同的协议之上提供外部的,统一的基于REST的API,允许团队选择最适合内部架构的API。

4、降低微服务复杂性

如果微服务具有共同的关注点,例如使用API令牌的授权,访问控制实施和速率限制。 每个这些关注可以通过要求每个服务都实现它们,但这为微服务的开发增加更多的时间成本。 API网关将从您的代码中删除这些问题,允许您的微服务关注手头的任务。

5、微服务模拟和虚拟化

通过将微服务API与外部API分离,您可以模拟或虚拟化服务,以验证设计要求或协助集成测试。

API网关的服务对象

API网关可以为Web端、APP提供API访问,也可以给物联网设备提供API接口。另外致力于开发生态的企业还会为一些合作伙伴提供API网关,供其调用通用的微服务。对于可以提供数据或算法服务的企业,可以在云市场的API网关注册自己的API,从而对外提供服务。

国内主流的网关产品有哪些?

网关品牌排行榜一——华为

华为技术有限公司是一家生产销售通信设备的民营通信科技公司,于1987年正式注册成立,总部位于中国深圳市龙岗区坂田华为基地。华为的产品主要涉及通信网络中的交换网络、传输网络、无线及有线固定接入网络和数据通信网络及无线终端产品,为世界各地通信运营商及专业网络拥有者提供硬件设备、软件、服务和解决方案。华为于1987年在中国深圳正式注册成立。华为的产品和解决方案已经应用于全球170多个国家,服务全球运营商50强中的45家及全球1/3的人口。

网关品牌排行榜二——锐捷

锐捷网络,中国网络解决方案领导品牌。自2000年成立以来,锐捷一直扎根行业、深入场景应用进行解决方案设计和创新,并利用云计算、SDN、移动互联、大数据、物联网等新技术为各行业用户提供端到端解决方案,助力全行业数字化转型升级。

锐捷网络,是中国网络解决方案领导品牌。作为一家民族企业,锐捷网络坚持走自主研发的道路,在竞争激烈的网络设备市场开辟出独树一帜的创新大道。以锐捷网络代表的厂商,不仅为中国用户争取了更低的建网和用网成本,更有效保障了网络安全和可控性。朝着“做永续经营、高成长的企业”愿景,锐捷网络一步一个脚印,踏实前行。今天,锐捷网络已连续7年稳居企业网市场国内厂商占有率排名首位。

网关品牌排行榜三——中兴

中兴通讯是全球领先的综合通信解决方案提供商。公司成立于1985年,是在香港和深圳两地上市的大型通讯设备公司。公司通过为全球160多个国家和地区的电信运营商和企业网客户提供创新技术与产品解决方案,让全世界用户享有语音、数据、多媒体、无线宽带等全方位沟通。

中兴通讯股份有限公司,全球领先的综合通信解决方案提供商,中国最大的通信设备上市公司。主要产品包括:2G/3G/4G/5G无线基站与核心网、IMS、固网接入与承载、光网络、芯片、高端路由器、智能交换机、政企网、大数据、云计算、数据中心、手机及家庭终端、智慧城市、ICT业务,以及航空、铁路与城市轨道交通信号传输设备。为全球180多个国家和地区的顶级运营商提供创新技术与产品解决方案,通过全系列的无线、有线、业务、终端产品和专业通信服务,满足全球不同运营商的差异化需求。

网关品牌排行榜四——Juniper

Juniper网络公司致力于实现网络商务模式的转型。作为全球领先的联网和安全性解决方案供应商,Juniper网络公司对依赖网络获得战略性收益的客户一直给予密切关注。公司的客户来自全球各行各业,包括主要的网络运营商、企业、政府机构以及研究和教育机构等。Juniper网络公司推出的一系列联网解决方案,提供所需的安全性和性能来支持全球最大型、最复杂、要求最严格的关键网络。

InfranetInitiative所设想的新型网络不但涵盖了PSTN和互联网等现有公共网络的最佳属性,而且还在IP/MPLS基础架构上添加了关键的商务功能。因此,Infranet模式将可以为企业、政府机构和服务供应商等客户提供更高级别的应用性能、业务支持、运营可扩展性以及网络安全性。此外,InfranetInitiative还将制定商业准则来支持供应商网间结算,以在多网络间传输服务质量的流量--而这正是当前尽力而为的互联网环境所无法实现的。

网关品牌排行榜五——迪普

迪普科技总部位于杭州,在北京和杭州设有研发中心,具有一支业界领先的研发团队。公司拥有一系列具有自主知识产权的核心技术,自主开发了高性能硬件架构APP-X、L2~7融合操作系统ConPlat、应用识别与威胁特征库APP-ID,并在此基础上推出了包括深度业务路由交换网关(DPX)、应用防火墙(FW)、入侵防御系统(IPS)、DPI流量分析设备、上网行为管理及流控(UAG)、应用交付平台(ADX)以及交换机、路由器等在内的十余类上百款产品。

杭州迪普科技有限公司是在网络、安全及应用交付领域集研发、生产、销售于一体的高科技企业。迪普科技总部位于杭州,在北京和杭州设有研发中心,具有一支研发团队。从成立至今,迪普科技实现了高速成长,目前已经服务超过10,000家客户,全面进入了包括运营商、政府、电力、能源、金融、交通、教育、医疗、大企业等在内的各行各业,成为业界重要厂商之一。

网关品牌排行榜六——神州数码

神州数码是联想集团前瞻性地看到了信息服务业的巨大发展前景,于2000年主动应对Internet和WTO的挑战,分拆出来一间公司,开始了二次创业,年轻的公司命名为“神州数码”(DigitalChina)。2001年,神州数码在香港联合交易所主板上市,并开始了向IT服务战略方向的转型。如今,神州数码业务领域覆盖了中国市场从个人消费者到大型行业客户的全面IT服务,客户遍及金融、政府、电信、公共事业及企业领域。至2007年,神州数码已有近万名员工,其中约50%是研发人员。全国性网络已拓展至19个平台,办事处分布于30多个二、三级城市,业务覆盖全国。如今的神州数码是国内最大的整合IT服务提供商。

神州数码集团股份有限公司(股票代码:000034.SZ,简称:神州数码),其名字源于DigitalChina,数字化中国。20年来,神州数码业务已完成了从边缘到主流,从主流到前沿的战略转型,成为中国领先的整合IT服务商。未来,神州数码将以整合云服务、自有品牌产品及服务为切入点,打造融合服务平台,为合作伙伴注入新动能,与合作伙伴共同成长。

网关品牌排行榜七——启明星辰

启明星辰信息技术集团股份有限公司成立于1996年,由留美博士严望佳女士创建,是国内具有超强实力的、拥有完全自主知识产权的网络安全产品、可信安全管理平台、安全服务与解决方案的综合提供商。2010年启明星辰集团在深圳A股中小板上市。目前,启明星辰已对网御星云、杭州合众、书生电子、赛博兴安进行了全资收购,自此,集团成功实现了对网络安全、数据安全、应用业务安全等多领域的覆盖。

启明星辰,是由留美博士严望佳女士创建的拥有完全自主知识产权的网络安全高科技企业,是国内最具实力的网络安全产品、可信安全管理平台、专业安全服务与解决方案的综合提供商。公司总部位于北京市中关村软件园启明星辰大厦,在全国各省、市、自治区设立分、子公司及办事处三十多个,拥有覆盖全国的渠道体系和技术支持中心。

网关品牌排行榜八——汉柏

汉柏科技有限公司是人脸识别及云计算数据中心整体解决方案提供商,汉柏公司2009年成立于天津滨海高新区,运营中心设在北京CBD银泰中心,拥有覆盖全国的销售和技术服务体系,在香港、台湾、俄罗斯、东欧、拉美等大力拓展全球市场。2016年,汉柏科技与哈尔滨工业大学的下属公司“工大高新”进行资产重组,正式成为国有控股的上市公司(股票代码600701)。

汉柏科技有限公司(英文:Opzoon,下简称“汉柏”)是一家全球领先的新一代绿色数据中心解决方案提供商,也是中国首家成立企业级应用数学实验室的高新技术企业。2009年汉柏成立于天津滨海高新区,运营总部设在北京CBD银泰中心。已构建形成以硅谷、北京、天津、上海四位一体的世界级研发体系,数据中心解决方案及产品应用遍及全球30余个国家和地区,推动了云计算产业在政府信息化和行业信息化的实践与应用。

网关品牌排行榜九——中兴网安

北京中兴网安科技有限公司(以下简称中兴网安)成立于2010年,注册资金人民币1000万元,公司的宗旨是为构建信息网络秩序提供全程全网感知、监控、记录、追溯等综合管理防范机制和安全保障手段,并为日益普及的云计算和物联网应用提供先进的安全技术解决方案和相关产品。自成立之日起,中兴网安即秉承“科技创新、产业报国”的经营理念,针对当今信息网络各类威胁日益严峻的状况,凭借自身强大的技术力量,依托完备的产品研发和ISO9001质量管理体系保障,率先在业界创新式地提出并贯彻“平安网络”的管理理念,生产研发出CTM(CollaborativeTraceableManagement)一体化协同防控管理系统系列产品,并努力使之成为信息网络秩序管控体系国家技术标准。

网关品牌排行榜十——Symantec

赛门铁克(Symantec)公司成立于1982年,公司总部位于加利福尼亚州的Cupertino,现已在全球40多个国家和地区设有分支机构,是信息安全领域全球领先的解决方案提供商,为企业、个人用户和服务供应商提供广泛的内容和网络安全软件及硬件的解决方案,可以帮助个人和企业确保信息的安全性、可用性和完整性。

赛门铁克是信息安全领域全球领先的解决方案提供商,为企业、个人用户和服务供应商提供广泛的内容和网络安全软件及硬件的解决方案,可以帮助个人和企业确保信息的安全性、可用性和完整性。

API网关从入门到放弃

假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员、商品、推荐服务等等。

那么这里就会遇到一个问题,APP/Browser怎么去访问这些后端的服务? 如果业务比较简单的话,可以给每个业务都分配一个独立的域名(),但这种方式会有几个问题:

更好的方式是采用API网关,实现一个API网关接管所有的入口流量,类似Nginx的作用,将所有用户的请求转发给后端的服务器,但网关做的不仅仅只是简单的转发,也会针对流量做一些扩展,比如鉴权、限流、权限、熔断、协议转换、错误码统一、缓存、日志、监控、告警等,这样将通用的逻辑抽出来,由网关统一去做,业务方也能够更专注于业务逻辑,提升迭代的效率。

通过引入API网关,客户端只需要与API网关交互,而不用与各个业务方的接口分别通讯,但多引入一个组件就多引入了一个潜在的故障点,因此要实现一个高性能、稳定的网关,也会涉及到很多点。

API 注册

业务方如何接入网关?一般来说有几种方式。

协议转换

内部的API可能是由很多种不同的协议实现的,比如HTTP、Dubbo、GRPC等,但对于用户来说其中很多都不是很友好,或者根本没法对外暴露,比如Dubbo服务,因此需要在网关层做一次协议转换,将用户的HTTP协议请求,在网关层转换成底层对应的协议,比如HTTP - Dubbo, 但这里需要注意很多问题,比如参数类型,如果类型搞错了,导致转换出问题,而日志又不够详细的话,问题会很难定位。

服务发现

网关作为流量的入口,负责请求的转发,但首先需要知道转发给谁,如何寻址,这里有几种方式:

服务调用

网关由于对接很多种不同的协议,因此可能需要实现很多种调用方式,比如HTTP、Dubbo等,基于性能原因,最好都采用异步的方式,而Http、Dubbo都是支持异步的,比如apache就提供了基于NIO实现的异步HTTP客户端。

因为网关会涉及到很多异步调用,比如拦截器、HTTP客户端、dubbo、redis等,因此需要考虑下异步调用的方式,如果基于回调或者future的话,代码嵌套会很深,可读性很差,可以参考zuul和spring cloud gateway的方案,基于响应式进行改造。

优雅下线

性能

网关作为所有流量的入口,性能是重中之重,早期大部分网关都是基于同步阻塞模型构建的,比如Zuul 1.x。但这种同步的模型我们都知道,每个请求/连接都会占用一个线程,而线程在JVM中是一个很重的资源,比如Tomcat默认就是200个线程,如果网关隔离没有做好的话,当发生网络延迟、FullGC、第三方服务慢等情况造成上游服务延迟时,线程池很容易会被打满,造成新的请求被拒绝,但这个时候其实线程都阻塞在IO上,系统的资源被没有得到充分的利用。另外一点,容易受网络、磁盘IO等延迟影响。需要谨慎设置超时时间,如果设置不当,且服务隔离做的不是很完善的话,网关很容易被一个慢接口拖垮。

而异步化的方式则完全不同,通常情况下一个CPU核启动一个线程即可处理所有的请求、响应。一个请求的生命周期不再固定于一个线程,而是会分成不同的阶段交由不同的线程池处理,系统的资源能够得到更充分的利用。而且因为线程不再被某一个连接独占,一个连接所占用的系统资源也会低得多,只是一个文件描述符加上几个监听器等,而在阻塞模型中,每条连接都会独占一个线程,而线程是一个非常重的资源。对于上游服务的延迟情况,也能够得到很大的缓解,因为在阻塞模型中,慢请求会独占一个线程资源,而异步化之后,因为单条连接所占用的资源变的非常低,系统可以同时处理大量的请求。

如果是JVM平台,Zuul 2、Spring Cloud gateway等都是不错的异步网关选型,另外也可以基于Netty、Spring Boot2.x的webflux、vert.x或者servlet3.1的异步支持进行自研。

缓存

对于一些幂等的get请求,可以在网关层面根据业务方指定的缓存头做一层缓存,存储到Redis等二级缓存中,这样一些重复的请求,可以在网关层直接处理,而不用打到业务线,降低业务方的压力,另外如果业务方节点挂掉,网关也能够返回自身的缓存。

限流

限流对于每个业务组件来说,可以说都是一个必须的组件,如果限流做不好的话,当请求量突增时,很容易导致业务方的服务挂掉,比如双11、双12等大促时,接口的请求量是平时的数倍,如果没有评估好容量,又没有做限流的话,很容易服务整个不可用,因此需要根据业务方接口的处理能力,做好限流策略,相信大家都见过淘宝、百度抢红包时的降级页面。

因此一定要在接入层做好限流策略,对于非核心接口可以直接将降级掉,保障核心服务的可用性,对于核心接口,需要根据压测时得到的接口容量,制定对应的限流策略。限流又分为几种:

稳定性

稳定性是网关非常重要的一环,监控、告警需要做的很完善才可以,比如接口调用量、响应时间、异常、错误码、成功率等相关的监控告警,还有线程池相关的一些,比如活跃线程数、队列积压等,还有些系统层面的,比如CPU、内存、FullGC这些基本的。

网关是所有服务的入口,对于网关的稳定性的要求相对于其他服务会更高,最好能够一直稳定的运行,尽量少重启,但当新增功能、或者加日志排查问题时,不可避免的需要重新发布,因此可以参考zuul的方式,将所有的核心功能都基于不同的拦截器实现,拦截器的代码采用Groovy编写,存储到数据库中,支持动态加载、编译、运行,这样在出了问题的时候能够第一时间定位并解决,并且如果网关需要开发新功能,只需要增加新的拦截器,并动态添加到网关即可,不需要重新发布。

熔断降级

熔断机制也是非常重要的一项。若某一个服务挂掉、接口响应严重超时等发生,则可能整个网关都被一个接口拖垮,因此需要增加熔断降级,当发生特定异常的时候,对接口降级由网关直接返回,可以基于Hystrix或者Resilience4j实现。

日志

由于所有的请求都是由网关处理的,因此日志也需要相对比较完善,比如接口的耗时、请求方式、请求IP、请求参数、响应参数(注意脱敏)等,另外由于可能涉及到很多微服务,因此需要提供一个统一的traceId方便关联所有的日志,可以将这个traceId置于响应头中,方便排查问题。

隔离

比如线程池、http连接池、redis等应用层面的隔离,另外也可以根据业务场景,将核心业务部署带单独的网关集群,与其他非核心业务隔离开。

网关管控平台

这块也是非常重要的一环,需要考虑好整个流程的用户体验,比如接入到网关的这个流程,能不能尽量简化、智能,比如如果是dubbo接口,我们可以通过到git仓库中获取源码、解析对应的类、方法,从而实现自动填充,尽量帮用户减少操作;另外接口一般是从测试-预发-线上,如果每次都要填写一遍表单会非常麻烦,我们能不能自动把这个事情做掉,另外如果网关部署到了多个可用区、甚至不同的国家,那这个时候,我们还需要接口数据同步功能,不然用户需要到每个后台都操作一遍,非常麻烦。

这块个人的建议是直接参考阿里云、aws等提供的网关服务即可,功能非常全面。

其他

其他还有些需要考虑到的点,比如接口mock,文档生成、sdk代码生成、错误码统一、服务治理相关的等,这里就不累述了。

目前的网关还是中心化的架构,所有的请求都需要走一次网关,因此当大促或者流量突增时,网关可能会成为性能的瓶颈,而且当网关接入的大量接口的时候,做好流量评估也不是一项容易的工作,每次大促前都需要跟业务方一起针对接口做压测,评估出大致的容量,并对网关进行扩容,而且网关是所有流量的入口,所有的请求都是由网关处理,要想准确的评估出容量很复杂。可以参考目前比较流行的ServiceMesh,采用去中心化的方案,将网关的逻辑下沉到sidecar中,

sidecar和应用部署到同一个节点,并接管应用流入、流出的流量,这样大促时,只需要对相关的业务压测,并针对性扩容即可,另外升级也会更平滑,中心化的网关,即使灰度发布,但是理论上所有业务方的流量都会流入到新版本的网关,如果出了问题,会影响到所有的业务,但这种去中心化的方式,可以先针对非核心业务升级,观察一段时间没问题后,再全量推上线。另外ServiceMesh的方案,对于多语言支持也更友好。

阿里API网关使用总结

API网关  API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简单的操作,即可快速、低成本、低风险地开放数据或服务。

利用API网关你可以提高自己公司API安全性,也可以上架到API云市场,供用户购买和使用。

这个没什么可说的,主要是你要想办法尽可能安全地存储你的AppKey和AppSecrect。

所属分组是API的基本属性,所以需要先创建分组,再在分组下创建API。每个账号默认最多可创建100个分组,如需更多分组需要提交工单。分组有所属区域(Region)的概念,比如华东上海区,选择之后就不能修改了。创建完分组之后,系统会给该分组分配一个二级域名,供测试使用,不过,每个二级域名每天最多可访问1000次。

如果你的API支持HTTPS协议,还需要为该独立域名上传 SSL 证书。我们需要把我们的域名解析到该分组上,之后才能绑定到该分组上。绑定的域名需要现在阿里云系统备案。绑定域名之后,该分组下的API就可以通过该域名来访问了,不再需要调用系统分配的二级域名了。

在API分组的环境管理中,你可以自定义环境变量,同一个变量可以再在线上、预发和测试三个环境下对应不同的值,这样在API的定义中就可以使用这里定义好的环境变量了。可以在Path、入参默认值和后端服务服务地址中加入环境变量,在API的定义中使用环境变量需要以 #变量名# 的方式使用。 如果要修改已发布的API用到的环境变量,先把老的环境变量给删掉,再重新定义一个新的同名环境变量赋上新值之后再把全部对应的API重新发布一遍,这个是异步生效的,一般发布后1分钟内生效。

这里的内容还是蛮多的,包括基本配置,前端和后端地址,请求参数配置等,详细文档可以看阿里API的官方文档,这里说几点重要的:

创建好API之后,就可以对应用进行授权了,点击API的“授权”就可以在指定环境下授权某个APP可以访问该API了,如果你在调用API的过程中控制台打印了x-ca-message中包含了Unauthorized错误,你应该想到你的API还未对该APP进行授权访问。

API编辑完成之后就可以发布到指定环境上去了,发布之后就立马生效了。可以多次编辑然后发布到不同的环境下,如果你编辑完了忘记发布到指定环境下了,是不会生效的。在分组API列表下,直接点击API名字进入的是当前API最后一次编辑保存的状态,不一定跟发布的状态一直哦。点击API右边的线上、预发或测试后面的"运行中"可以看到在该环境下最后一次编辑发布后的状态哦。

网关会在请求的时候加上日期、时间戳、nonce、userAgent、Host、AppKey、version等参数值,如果是POST请求的话,需要对参数值进行urlEncode。如果有body值的话,需要对body值,将body中的内容MD5算法加密后再采用BASE64方法Encode成字符串,放入HTTP头中。最后再通过将httpMethod、headers、path、queryParam、formParam经过一系列的运算,合成一个字符串用hmacSha256算法双向加密进行签名。

在我们分组上绑定好了域名之后,我们不管是预发还是线上环境都可以通过这同一个域名进行访问,那网关是怎么帮我们区分环境的呢?这个时候就用到上面的环境变量管理了,我们通过在环境变量中定义一个变量在不同环境下不同的值达到区分环境的效果。在网络请求的时候,我们可以在头部指定 X-Ca-Stage 参数值来让网关帮我们转发到对应环境的后端服务上,对应的值分别是:线上(RELEASE)默认、预发(PRE)和测试(TEST)。

这里重点说一下参数位置下可选的Body选项,这个地方坑了我们蛮久。我们知道在我们客户端发起POST请求时,我们会在头部指定“Content-Type”为“application/x-www-form-urlencoded”,然后把请求的参数组装成"key1=value1key2=value2"的字符串,然后在编码成二进制,放在请求的Body里,以Form表单的形式提交的。所以呢,我们在定义API的参数时,应该把参数位置选择为Body选项。但是我们在很长一段时间里,创建API时或编辑API时,参数位置处下拉一直没有Body选项,我们就把参数定义成了Query类型的了。在使用时也没有啥问题,但是一旦当我们的参数值非常长时,比如一个json字符串,这个是就报错了“414 Request-URI Too Large”,这个时候呢,网关就不会再帮我们把请求转发到服务端了。排查了很久终于找到了罪魁祸首在这里等着呢,通过把参数位置改成Body就可以了。这个可能是阿里API网关前端页面上的一个bug,有时候根本选不到Body选项,这个时候你可以先把“请求Body(非Form表单数据,比如JSON字符串、文件二进制数据等)”选项给勾选上,然后再取消勾选,再下拉展开“参数位置”就可以看到Body选项了。(该文发布时是如此,我已经将该问题反馈给阿里API网关,可能后面会修复该bug。)

另外一个问题是如果你的参数值中包含了emoji表情,需要对参数值进行urlEncode,服务端在收到请求时需要对参数值进行urlDecode。否则用的过程中会出现各种奇怪的问题。问了阿里网关的服务人员,他们的解释是,如果不进行urlEncode,参数在传到网关时可能会丢失。可以对所有Post请求的参数值统一urlEncode,服务端对收到的参数值统一进行urlDecode。

在使用网关时,timestamp和nonce这两个header参数值是可选的,如果加上这两个值,网关层会对请求进行校验,防止重放攻击。不过有个问题:在当前时间的前后15分钟的时间戳都是可以的,一旦超过15分钟就会请求失败,所以,如果用户修改了客户端的系统时间的话,API就会调不通了。这个校验有点严格,如果不知道这一点的话,用户反馈客户端不能用,而你这里测试又没有任何问题,那就泪奔了,哈哈。当然这个是可选的校验,如果不传这两个值的话,就不会校验,这个时候防重放攻击的工作就需要我们自己的服务端做了。

目前网关不支持multipart形式的上传,所以一般我们的上传API不太适合录入网关,阿里的说法是现在大家的做法普遍是先将文件上传到文件服务器,然后通过调用接口把文件地址等信息报错到服务器的方式,所以,目测以后也不大可能支持定义multipart形式的上传API。

每个 API 分组的默认流控上限是500QPS,如果你要调大QPS,需要提交工单并支付相应费用。另外网关有个“流量控制策略”的功能,它是针对API的,也就是说定好策略之后,选中对哪些API生效,这些API就会单独的受这个流量控制策略的控制。但是,需要注意的是,如果你要调大流量控制策略,也必须先调大API所在分组的QPS才会生效,否则流量控制策略可以创建但不会实际生效。

虽然我们可以在分组的环境管理中添加不同的环境变量来实现同一个API分组下可以定义不同服务域名的API,这样我们客户端在发起请求的时候,域名只需要配一个就可以了,非常方便。但是,一旦网关这一层瘫痪(尽管是小概率事件,但不排除),这个时候我们就心有余而力不足了,只能等网关尽快恢复了。如果我们一个分组对应一个我们真正的服务域名的话,一旦网关出问题,我们可以快速把该分组绑定的域名指向我们真正的该分组的服务上。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:c++遍历某个路径下的所有文件
下一篇:Java中数组的定义和使用教程(三)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~