当前位置: 首页 > 科技观察

如何为您的平台选择合适的API网关

时间:2023-03-14 18:35:37 科技观察

Kong、Tyk、Apigee和备选方案比较为什么使用API网关?API是大大小小的应用程序背后的驱动力。无论您是发布公共API还是构建新的集成市场,API都将成为开展业务的方式。就像网络时代有HTTP服务器来为生产中的网站提供服务一样,API也有API网关来为生产中的API提供服务。可以利用API网关来帮助您为客户和合作伙伴提供具有高可用性的API。它们是一种代理服务器,位于API前面并执行身份验证、速率限制、将可公开访问的端点路由到适当的微服务、跨多个内部服务进行负载平衡等功能。API网关源于集成挑战。在使用REST和GraphQLAPI之前,公司正在构建包含结构化或非结构化数据的基于SOAP和XML的API。API网关可以提供统一的接口,并将多个遗留应用程序链接在一起。在此类用例中,API网关可以采用遗留SOAP服务并将数据转换应用于API,例如从SOAP到REST以及从JSON到XML)。这些类型的转换通常不是自动的。例如,RESTfulAPI的核心体与SOAP有很大不同,因此它不是将XML转换为JSON这么简单。打破单一的微服务架构是一种构建和部署独立服务以组成更大应用程序的策略。微服务与整体架构的优缺点超出了本文的范围。在高层次上,微服务架构正在成为构建API的方式。它使多个独立团队能够处理大型应用程序,而不会相互干扰或处理较长的部署时间。除了微服务之外,还有更小的计算单元,例如纳米服务和无服务器计算。由于管理成百上千个服务的复杂性以及为客户提供统一接口或合同的要求,API网关在使用微服务和无服务器计算的架构中变得司空见惯。API网关的好处无论您使用微服务还是无服务器计算,无论您是在内部使用API还是公开访问它,使用API网关都有很多好处:基础设施和组织。APIGateway使您能够根据路径、主机名、标头和其他关键信息进行路由,从而将面向公众的API端点与底层微服务架构分离。减少往返次数:一些API端点可能需要跨多个服务连接数据。APIGateway可以执行此聚合,因此客户端不需要复杂的调用链并减少往返次数。安全性:APIGateway提供集中式代理服务器来管理速率限制、机器人检测、身份验证、CORS等。许多API网关允许设置数据存储(例如Redis)来存储会话信息。横切关注点:日志记录、缓存和其他横切关注点可以在集中式设施中处理,而不是部署到每个微服务。事实上,Moesif为Kong和Tyk等许多API网关提供了插件,因此您无需安装任何SDK即可获得现代客户和API分析。API平台的其他好处除了上面列出的好处之外,为客户和合作伙伴构建可公开访问的API的公司还有其他好处。此类API平台由Stripe或Twilio等API优先公司以及拥有Github或Twitter等开发平台的公司构建。如今,随着客户和合作伙伴需要更多的定制和集成,过渡到平台对于B2B公司来说变得越来越重要。使用API网关的其他好处是:为开发人员管理API密钥,包括提供一致的授权和身份验证方法速率限制和计费可以基于配额或使用情况。为客户和合作伙伴提供开发人员门户,以创建API令牌、弃用令牌等。什么是Moesif?Moesif是最先进的API分析平台,被数以千计的平台使用,以了解您最忠实的客户使用您的API做什么,他们访问它们的方式和地点。Moesif有适用于香港、TYK等流行API网关的插件。要比较的变量(1)部署复杂性是单节点设备还是网关需要运行多种类型的节点才能启动和设置数据库?一些网关需要多种类型的数据库。(2)开源与专有当您想要使用附加功能扩展网关时会发生什么。有插件吗?如果是这样,插件是开源的吗?(3)在Premise与Cloud上托管本地部署可能会增加额外的时间来计划部署和维护。然而,云托管解决方案可能会由于额外的跃点而增加一点延迟,并在提供商出现故障时降低服务的可用性。(4)特性一些网关更像是修改为服务API的裸机HTTP服务器。其他包括整个包,包括开发人员门户、安全性等。如果网关包含此类功能,则开发人员门户等功能具有良好的用户体验和设计,或者使您能够调整设计以满足您的需求。(5)社区开发人员是否在网关之上构建附加功能?像ApacheTomcat和NGINX,它们有很多开源。一些API网关有大型开发人员社区构建脚本、在StackOverflow上回答问题等。(6)价格如果你是一家小公司,他们有好的免费层或开源版本吗?如果您是一家老牌企业,该公司是否提供您需要的支持。API网关领域的主要参与者(1)KongKong是一个基于(NGINX.)的开源API网关,NGNNX是一个非常流行的开源HTTP代理服务器。尽管Kong是开源的,但KongHQ为大型企业提供维护和支持许可证。开源版本具有基本功能,但某些功能(例如管理UI、安全性和开发人员门户)仅在企业许可证中可用。部署:Kong最大的优势之一是其广泛的安装选项,带有Docker和Vagrant等预构建容器,因此您可以快速运行部署。NGINX是继Apache和IIS之后最流行的HTTP服务器,即使在高请求率下也具有高性能。NGINX有一个庞大的Lua脚本和扩展社区,因此在寻找一些定制时它不会被排除在外。在部署方面,Kong具有中等复杂度。它确实需要Cassandra或Postgres才能运行。一些插件(例如速率限制插件)可选地需要其他数据存储(例如Redis)。但是,生产部署并不像Apigee那样复杂。功能完整性:开箱即用地提供了API管理的许多预期功能,例如创建API密钥、路由到多个微服务等。它没有太多的转换层(主要是基于HTTP的转换,没有SOAP或XML).但是,如果您没有很多遗留应用程序,那么您可能根本不需要额外的数据转换层权重。即使它带有速率限制,也没有计费集成。可以通过CLI或curl命令针对RESTAPI执行管理和管理任务,从而使管理更容易集成到现有的devops剧本中。Kong具有服务、路由和消费者的概念,在处理构成API的数百个微服务以及调用API的不同类型的消费者时,这些概念具有很大的灵活性。这使得插件和转换能够附加到特定的路由甚至个人消费者。Kong拥有庞大的社区开发的插件社区,他们于2018年启动了KongHub,并且已经拥有数十个插件。Moesif是那里的插件之一。Kong是我们强烈推荐的API网关之一。如果您不需要传统包袱并想要一个流行的开源API网关,那么Kong不会出错。它是现代的,旨在管理现代微服务,而不仅仅是向原始单体添加转换后的外观,并且拥有快速增长的插件社区,从Moesif等API分析到缓存层和JWT(JSONWeb令牌)身份验证。(2)Tyk与Kong一样,Tyk也是开源的,但它受MPL许可的约束,这比Kong的Apache2.0许可更宽松。同时,Tyk的企业用户与社区用户使用完全相同的网关。您不必为某些企业功能支付额外费用。Tyk不再依赖于额外的插件和Lua脚本,而更像是一个包含APIGateway的电池。开箱即用地支持OIDC、OAuth2、BearerToken、BasicAuth、MutualTLS、HMAC等身份验证方案,无需插件。它还支持XML->JSON、JSON->XML、JSON模式验证。Tyk基于GoLang构建,GoLang是一种专为高吞吐量和并行性而设计的系统语言。它背后的公司Tyk.io提供云托管版本和专业支持许可证。与Kong/NGINX的Lua不同,有些人可能会发现Golang更现代且更易于编程。除了Golang,Tyk还有解释器,可以用来运行Javascript和Lua等其他语言的插件。请记住,与可以部署在与内部服务相同的vnet上的本地版本不同,云版本需要将某些服务直接公开到Internet。部署:Tyk提供云托管SaaS解决方案或内部部署。您可以在Heroku或AWS上部署实例。他们的网站上有关于如何操作的教程。开源版本部署起来相对简单,只需要Redis,而Kong则需要同时运行Cassandra或Postgres集群。Tyk具有密钥管理、配额、速率限制、API版本、访问控制等功能,但没有集成计费。Tyk有一个RESTAPI和一个web仪表板来执行管理任务。Tyk没有像Kong那样大的社区或插件中心,尽管他们有一个扩展列表。然而,他们确实仔细设计了网关并尽量保持精简。(3)ApigeeApigee是本文列出的最老的API网关。它成立于2004年,并于2016年被谷歌收购。它不是开源的,并且建立在企业级Java之上。他们从XML/SOA应用程序开始,但随后进入了API管理领域。Apigee旨在将遗留的单一组件转换为可供第三方使用的API。他们较少关注微服务和内部API。由于Apigee具有复杂的多节点架构,部署的复杂度相比开源API网关要高很多。ApigeeEdge需要至少9个节点在本地运行,其中包括运行Cassandra、Zookeeper和Postgres,这迫使集中式基础架构团队花费数月时间规划部署。虽然大多数Apigee客户使用本地版本,但在加入Google后,他们推出了云托管解决方案。但是,它比纯粹的SaaS更接近IaaS,必须部署到特定的GoogleCloud数据中心。与其他托管版本一样,托管代理版本会增加延迟并需要保护您自己的服务。使用托管API网关时,除非它与上游服务位于同一数据中心,否则可能会增加一点延迟。与其他服务不同,Apigee支持端到端集成计费,可直接通过您的API获利。管理门户建立在Drupal之上。根据您的观点,Apigee可能显得臃肿,或者是一个完整的解决方案。同时,它是专有的,没有庞大的开发人员社区来贡献插件或扩展。(4)AmazonAWSAPIGateway作为最大的云提供商,AmazonAWS也有AWSAPIGateway。这是仅限云的选项。如果您已经在使用AWSLambda或EC2,则可以通过将AWSAPI网关部署在与上游服务相同的数据中心区域来减少延迟。AWSAPIGateway是完全托管的,只需单击几下即可部署在AWS门户中。与AWSLambda结合使用时,AWSAPIGateway可为无服务器API提供出色的解决方案。无服务器就像打了激素的微服务,需要对API端点进行无懈可击的管理,以便将传入的API调用路由到适当的无服务器功能。除了AWSLambda之外,AWSAPIGateway拥有最佳的一键式解决方案,可将传入的API调用路由到其他AWS服务,例如AmazonKinesis和AmazonDynamoDB。或者,您可以使用现有的IAM基础设施为API提供身份验证,而不会产生太多开销。在功能上,它可以与Kong相媲美。但是,AWSAPIGateway没有大型开发人员社区来编写扩展或插件。使用AWSAPIGateway的最大问题之一是供应商锁定。(5)其他上面的列表并不详尽,这里是其他的快速总结:AzureAPIGateway与AWS的产品非常相似。当然,如果你使用的是MicrosoftAzure并且对AzureFunctions有很好的支持,那就更合适了。ExpressAPIGateway是一个全新的LunchBadger入口,完全开源,基于非常流行的Node.jsExpress框架。他们的设计理念是保持最小化和声明性。如果您在Node.js上构建大量核心基础设施并且熟悉express中间件,那么值得一看。KrakenD也是内置于GoLang中的开源产品。(6)总结以下是对调查结果的快速总结,表格形式如下:随着越来越多的公司部署更复杂的微服务和无服务器架构,API网关的使用只会增加。此外,在看到Twilio、Salesforce和Stripe等公司的早期成功后,越来越多的公司开始推出自己的开发人员计划。我们很高兴看到API经济和开发者平台如何发展,并乐于为此做出贡献。