Azure 是否按应用服务数量收费

2024-01-04

Azure 是否仅针对应用服务计划资源的使用量或我们根据该应用服务计划创建的应用服务数量收费?应用服务计划下创建的应用服务数量是否会影响成本?

我正在开发一个微服务项目,我不确定是将每个微服务部署在专用应用程序服务中还是将所有微服务部署在一个应用程序服务中作为虚拟目录。成本是我们项目所关心的问题。

Thanks.


Azure 是否仅针对应用服务计划资源的使用量或我们根据该应用服务计划创建的应用服务数量收费?

忽略免费和共享套餐,您只需支付应用服务Plan https://azure.microsoft.com/en-gb/pricing/details/app-service/plans/(每台选定机器大小的成本 x 实例数量)。无论您的服务计划中有 0 个还是 50 个应用程序,您都将支付相同的费用(尽管这些应用程序消耗的任何其他 I/O、存储等将是额外的)。

(免费套餐最多允许 10 个应用程序,共享套餐最多允许 100 个应用程序)

理论上你可以添加任意数量的App每个应用程序服务计划中的服务(应用程序,例如 Web 应用程序、服务、功能应用程序等),但实际上,您将受到 VM 大小和您选择的计划的总体资源的限制(例如,基本版 10GB 磁盘空间 https://azure.microsoft.com/en-us/pricing/details/app-service/plans/,而 B1 只有 1.75GB RAM)。

来自微软文档 https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans#should-i-put-an-app-in-a-new-plan-or-an-existing-plan,建议是:

在以下情况下将您的应用程序隔离到新的应用程序服务计划中:

  • 该应用程序是资源密集型的。
  • 您希望独立于现有计划中的其他应用程序来扩展该应用程序。
  • 该应用程序需要不同地理区域的资源。

我还想补充一下意见:

  • 如果适用,请在应用服务计划级别保持环境(开发、UAT、生产)隔离,或者考虑在资源组或订阅级别进行隔离。

  • 除非您的应用程序超出了 CPU 使用率,否则每个服务计划安装尽可能多的应用程序在逻辑上是有意义的,但要随时监控 VM 实例的性能和资源使用情况。

  • 在我的情况下,我通常发现 RAM 是瓶颈,因此我通常会尝试扩展到具有更多 RAM 的 VM 大小以托管更多应用程序,然后再分离出应用程序并添加更多服务计划。

  • If you are on .Net Core or another stack which doesn't need Windows, I would recommend looking into the Linux Service Plans - they are considerably cheaper than Windows instances. One caveat - as at present, there's a weird limitation which doesn't allow mixing of Windows and Linux Service Plans in the same resource group https://learn.microsoft.com/en-us/azure/app-service/containers/app-service-linux-intro#limitations As of Jan 2021 https://learn.microsoft.com/en-us/azure/app-service/overview#limitations you can deploy both Windows and Linux App Service plans to the same resource group, but note that some VS versions https://learn.microsoft.com/en-us/answers/questions/1161717/cant-create-windows-and-linux-app-service-plans-in might still incorrectly enforce this as a validation rule if you are deploying via publish.

  • 每个应用程序在服务计划实例上逻辑上都相当隔离,因此您可以添加、删除、重新启动和部署应用程序,而不会干扰其他应用程序。

  • 尽管 Docker 容器可以部署为应用服务,但您可能会发现AKS https://learn.microsoft.com/en-us/azure/aks/更合适。

以及更多细节

Azure 托管应用服务计划的术语有些令人困惑,但需要澄清一下:

  • 应用服务计划(服务计划)可以有 1 个或多个托管 VM 实例 例如1 个服务计划扩展到 3 个实例 = 需要支付 3 个虚拟机。

  • 忽略免费/共享层(在您为每个应用程序支付的共享层上),也忽略隔离层,您将为每个实例支付固定的每月费用

  • 您可以将多个应用程序添加到每个应用程序服务计划 - 例如Web 应用程序、功能应用程序、其他。控制台应用程序和 Docker 映像。这些将部署到计划中的所有实例。

  • 在标准层及以上,您可以配置部署槽位 https://learn.microsoft.com/en-us/azure/app-service/deploy-staging-slots在您的应用程序上,它提供了冒烟测试的能力,并在部署期间(尤其是在生产环境中)提供持续的正常运行时间。与任何已部署的应用程序一样,部署到部署槽将消耗 cpu、内存和 io 资源。

FWIW 应用服务计划 (microsoft.web/serverfarms) 约占我们每月 Azure 总成本的 40%

这一成本可能会迅速成倍增加,特别是如果您正在运行多个隔离环境(开发、UAT、生产等),并且出于冗余或规模原因需要扩展到每个环境多个实例。

截至撰写本文时,美国东部的指示性 VM 实例成本约为

  • Dev B1 1.75GB RAM Linux 约为下午 15 美元 / Windows 约为下午 50 美元
  • Prod P1V2 3.5GB RAM 约为 80 美元 Linux / 约 150 美元 Windows

因此,尝试通过将多个应用程序部署到单个虚拟机来最大限度地降低成本是很自然的,尤其是在细粒度的微服务企业或系统中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 是否按应用服务数量收费 的相关文章

随机推荐

  • Facebook oauth 授权 URL 和参数选项

    Facebook 提供了一些关于参数的文档oauth login 登录对话框 OAuth 2 https developers facebook com docs reference dialogs oauth 参数为 client id
  • Java 6 中 IdentityHashMap 的实际使用[重复]

    这个问题在这里已经有答案了 可能的重复 IdentityHashMap 的用例 https stackoverflow com questions 838528 use cases for identityhashmap Java 5 中引
  • Android ActionBarSherlock 顶部图标返回

    我正在尝试制作顶部操作栏图标以允许用户返回到上一个屏幕 我试图实现这些代码 但没有一个起作用 任何人都可以指导我吗 我知道这看起来很简单 我是 android 新手 下面是我的代码 问题 当我点击图标按钮时 它只是清除了我的屏幕 而没有转到
  • com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'

    错误 无法找到方法 com android build gradle api BaseVariant getOutputs Ljava util List 导致此意外错误的可能原因包括 Gradle 的依赖项缓存可能已损坏 这有时会在网络连
  • 如何确定 ColdFusion 应用程序使用哪些文件?

    我正在开始对现有的 ColdFusion 应用程序进行一些工作 该应用程序没有版本控制 并且看起来像是未使用的 cfm 文件 test cfm test2 cfm 等 我想了解哪些文件实际上是应用程序的一部分 这样我就可以将其以可管理的状态
  • VBScript 环境变量

    我有一个关于应该如何修复运行脚本时看到的错误的问题 我很确定这与我使用 COMPUTERNAME 环境变量的方式有关 我的脚本的作用是在本地压缩一些文件 然后使用 robocopy 将它们复制到已安装或共享的驱动器 然后检查文件大小是否相同
  • 将新记录添加到 GridView 但不应更新数据库

    我有一个绑定到数据视图的网格视图 OnPageLoad 我正在填充网格视图记录 我有一个文本框和一个按钮 所以现在我想向 GridView 添加更多记录 但这些记录不应添加到数据库中 它们只是添加到页面中 当然来自数据库的默认记录也会保留
  • Python 中的就地函数

    Python中有一个就地函数的概念 例如shuffle就位 因为它返回None 如何确定函数是否就位 from random import shuffle print type shuffle
  • Javascript 中的函数是对象还是类型?

    In his 雄辩的 JavaScript Haverbeke 声称 第 16 页 在 JavaScript 系统中 大部分数据被整齐地分成称为值的东西 每个值都有一个类型 它决定了它可以扮演的角色 值有六种基本类型 数字 字符串 布尔值
  • Herkou Redis - 证书验证失败(证书链中的自签名证书)

    我在我的一个业余项目中使用 heroku redis 一段时间了 我目前用它来做三件事 它是我存储 firebase 证书的地方 它用于缓存站点上的数据 它用于 Rails sidekiq 作业 最近 我的 heroku 使用量增加了 我不
  • 自动释放池中的快速闭包访问没有 self 的方法

    这是示例代码 func anyMethod Nothing here var myVariable autoreleasepool anyMethod This should show error print myVariable This
  • 异步网络接口状态检查

    在 Mac OS X 上 有没有办法在网络接口 en0 en1 状态发生变化 例如网络接口处于活动状态 非活动状态等 时获取异步通知 我想知道是否有一种方法可以获取异步通知 而不是轮询状态 以便每当有更改时 都会触发通知并且应用程序可以处理
  • scikit SGDClassifierpartial_fit 不会增量学习。返回“类应包含所有有效标签”

    我将两个数据流传递给 sgd clf 分类器 如下面的代码所示 第一个partial fit 正在获取第一个数据流x1 y1 第二个partial fit 正在获取第二个数据流x2 y2 下面的代码在第二个partial fit步骤中给了我
  • ggplot2 中的注释不支持换行符是粘贴和解析的命令

    Question 如何得到paste and parse in annotate of ggplot2尊重换行符 n 问题和MWE 我正在尝试重现ggplot2使用 NMDS 分析的应力图metaMDS包装内vegan 这是我的 MWE 后
  • 使用动态表名称查询 Oracle 数据库

    我陷入了一些糟糕的数据库设计中 我必须查询按日期命名的表 当表名称与相关日期进行硬编码时 以下查询有效 SELECT ajob ORDER ID ajob JOB NAME abim SERVICE ID shist SERVICE NAM
  • 基本 Qt 应用程序 (QMainWindow) 中不显示小部件

    我是 Qt 新手 正在用简单的例子进行一些练习 我只是想通过编码来测试我的知识 通过一个简单的应用程序 用户在 QLineEdit 小部件中键入文本 该文本将显示在 QLabel 中 没有必要让它有用 我只是想尝试一下 编译应用程序时 我没
  • 如何通过winForms控制iTunes

    我可以看到这里已经回答了类似的问题 我如何通过java在iTunes中播放特定歌曲 https stackoverflow com questions 15872600 how would i play a specific song in
  • 文件上传导致文件大小为 0,错误代码为 0

    我正在尝试将图像上传到 php 脚本 我有一个非持久性错误 导致某些上传的图像的文件大小为 0 我尝试将 FILES 数组打印到我的日志文件中 它显示错误代码为 0 这应该没问题 这些行 foreach FILES image file a
  • 重载方法调用有替代方案:String.format

    我在下面编写了以下 Scala 代码来处理传入的字符串 格式化字符串 将其附加到StringBuilder并返回格式化的String将转义的 unicode 返回给我的调用者进行其他处理 Scala 编译器在有以下内容的行中抱怨 Strin
  • Azure 是否按应用服务数量收费

    Azure 是否仅针对应用服务计划资源的使用量或我们根据该应用服务计划创建的应用服务数量收费 应用服务计划下创建的应用服务数量是否会影响成本 我正在开发一个微服务项目 我不确定是将每个微服务部署在专用应用程序服务中还是将所有微服务部署在一个