微软发布用于Serverless架构的Azure API Management

news/2024/5/20 9:26:39 标签: serverless, 后端, 数据库

Azure API Management是一种全托管服务,为用户提供发布、保护、转换、维护和监控API的能力。用户只需要在Azure门户上点击几下,就可以创建一个充当“前门”的API门面,外部和内部应用程序可以通过这个门面访问自定义后端服务实现的数据或业务逻辑,这些后端服务可以运行在Azure上(例如App Service或Azure Kubernetes Service),或托管在Azure外部(私有数据中心或组织内部部署)。API Management负责处理与API调用相关的所有任务,包括请求身份验证和授权、速率限定和配额实施、请求和响应转换、日志记录和跟踪以及API版本管理。

从现在开始,Azure用户可以在创建新的API Management实例时选择新的Consumption版本。这种Consumption版本实质上是基于无服务器原则设计和实现的API Management的变体,让更多的用户享受API Management的好处,非常适应于使用无服务器技术构建的新型应用程序。

APIM Consumption版本可以实现来自用户的一些应用场景:

使用无服务器技术(如Functions和Logic Apps)实现的微服务API网关。
为无服务器Azure资源(如Service Bus队列和主题、Azure存储等)提供简化且安全的外观的API网关。
传统后端的API网关,其中API流量会出现较大的峰值,但在大多数情况下保持较低水平。

版本的比较

为了更好地了解新版本,我们将其与现有版本进行比较。

API Management推出了两个版本——Developer版本和Standard版本。随着时间的推移,我们为企业用户添加了具有高级功能的Premium版本,并将Basic版本作为入门级版本。这些版本具有一个共同的架构,每个API Management服务实例都会分配到一组专用的资源。安全隔离、即时可用容量以及隔离保护是这种方法的主要优点之一。不过,它们也带来了一些副作用——相对较高的配置和扩展延迟,而且不是基于用户使用进行定价,这些都不适用于基于无服务器应用程序模型的新型解决方案。

Consumption版本使用了与之前的版本相同的底版本服务组件,但同时又采用了一种完全不同的基于动态分配资源的架构。因此,它与无服务器计算模型完美匹配,即无需管理基础设施,无空闲容量,高可用,可自动扩展和基于使用的定价模型,所有这些都使它成为涉及将无服务器资源暴露为API的解决方案的最佳选择。在选择Consumption版本时会涉及一些权衡,其中最重要的两个是功能集和使用限制。下表总结了各版本之间的比较结果。

ConsumptionDeveloper | Basic | Standard | Premium
无需配置或管理基础设施无需配置或管理基础设施
内置高可用性内置高可用性(除Developer外)
内置自动伸缩(低至零)手动或外部自动伸缩(Azure Monitor Autoscale仅支持Standard和Premium)
基于Consumption的定价模型基于预留容量的定价模型
无预留容量预留容量
共享资源专用资源
按需激活始终开启
选择的功能集全功能集(不同版本有所差异)
使用限制无限制

新功能

以下两个新功能现在仅在Consumption版本中可用,不过很快也将在其他版本中可用。

自带高速缓存(Bring Your Own Cache,BYOC):高速缓存是一项被广泛使用的用于降低API延迟和API后端负载的技术。用户可以让API Management服务使用外部配置的Redis兼容缓存。用户可以完全控制缓存配置,预加载和清除缓存内容,还可以为不同的API Management服务实例扩展缓存大小,这些是BYOC的主要优势。它也是在Consumption版本中启用响应缓存的唯一选项,因为与其他版本不同的是它没有内置缓存。我们修改了现有的缓存策略,以便让它能够与集成的和外部的缓存配置无缝协作。

\"\"

更灵活的订阅:订阅本质上是一组API密钥(准确的说是两个——主要的和次要的)容器。以前,订阅必须由用户持有,并且支持单个API产品作用域。为了简化密钥管理,我们做出了一些变更。我们现在允许“独立”订阅,不与用户相关联。我们还添加了两个订阅作用域——所有API和单个API。因此,现在可以为API访问权限创建密钥(或API Management实例中的所有API),而无需先创建产品并添加API(或所有API)!此外,每个API Management实例现在都带有一个不可变的全API订阅,这使得在Test控制台中测试和调试API变得更加容易。

\"\"

后续工作

自去年春天以来,我们一直致力开发Consumption版本,现在很高兴与用户分享这个消息。但是,我们仍然有很多工作要做。以下是将在未来几个月推出的一些重要功能和改进。

  • 自定义主机名和证书;
  • “一键”升级到更高的API Management版本;
  • 更快的配置时间(与较旧的版本相比已经非常快了,但我们希望进一步改进它);
  • 减少“冷启动”延迟(我们在这方面做得还不够,而且延迟还有很大的改进空间);
  • 公共Azure区域的广泛可用性(我们计划在API Management可用的每个区域都提供完整的Consumption版本);
  • 其他无服务器和PaaS资源的“添加API”体验(在“添加API”页面上可以看到新的功能按钮)。

可用性

我们很高兴地宣布,Consumption版本即将在美国中北部、美国西部、西欧、北欧、东南亚和澳大利亚东部地区可用。

英文原文:https://azure.microsoft.com/zh-cn/blog/announcing-azure-api-management-for-serverless-architectures/?WT.mc_id=social-reddit-marouill


http://www.niftyadmin.cn/n/959787.html

相关文章

MySQL查看和修改字符集的方法

一、查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like %character%;方法二:show variables like collation%; 方法 一 mysql> show variables like %character%;-----------------------------------------------------…

P4323 [JSOI2016]独特的树叶(树哈希)

传送门 树哈希&#xff1f;->这里 反正大概就是乱搞……的吧…… //minamoto #include<bits/stdc.h> #define R register #define ll long long #define fp(i,a,b) for(R int ia,Ib1;i<I;i) #define fd(i,a,b) for(R int ia,Ib-1;i>I;--i) #define go(u) for(in…

yii2 url 重写 隐藏 index.php 方法

第一步 &#xff1a; 不管是 apache 还是 nginx &#xff0c;想要隐藏 Index.php 文件&#xff0c;需要打开 urlManager 组件的配置&#xff0c;在进行后续的操作 第二步 : nginx 下 : 配置文件 nginx.conf 内容如下 &#xff1a; user centos; worker_processes 4;error_log…

Flask框架web开发:零基础入门

FFlask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架&#xff0c;它的优势就是极其简洁&#xff0c;但又非常灵活&#xff0c;而且容易学习和应用。因此Flask框架是Python新手快速开始web开发最好的选择&#xff0c;此外&#xff0c;使用Flask框架的另一个好处在…

数字逻辑:第一次实验记录

修改pin文件&#xff0c;告诉电脑接口和程序里面的变量名是什么关系 修改源文件&#xff0c;注意case最后有endcase,always后面要有begin和end&#xff0c;数字要写成3b111这样&#xff0c;if语句不要用大括号。

Just Do It - 开启canvas之旅

致懂得努力的我们 夫君子之行&#xff0c;静以修身&#xff0c;俭以养德。非淡泊无以明志&#xff0c;非宁静无以致远。夫学须静也&#xff0c;才须学也&#xff0c;非学无以广才&#xff0c;非志无以成学。 淫慢则不能励精&#xff0c;险躁则不能治性。年与时驰&#xff0c;意…

offsetof与container_of宏分析

offsetof宏&#xff1a;结构体成员相对结构体的偏移位置 container_of&#xff1a;根据结构体成员的地址来获取结构体的地址 offsetof 宏 原型&#xff1a; #define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER) 复制代码(TYPE *)0非常巧妙&#xff0c;告诉编…

qt QML弹出新页面之后,如何屏蔽上一个页面的按钮区域事件

Rectangle{//Rectangle是要显示的新页面//增加一个mouseArea:,必须好把MouseArea作为第一个子元素&#xff0c;如果放在最后且不设置z属性的话&#xff0c;会覆盖其//他控件MouseArea{anchors.fill:parent }} 或者&#xff1a; MouseArea{Rectangle{//.......}} 转载于:https:/…