Azure FAQ 第一部分






4.90/5 (78投票s)
Azure FAQ 第一部分
文章更新 1:- 运行您的第一个 Azure 程序,简易 5 步 2:- 运行您的第一个 Azure Blob 程序,简易 7 步 3:- 运行您的第一个 Azure Queue 程序,简易 7 步 4:- 运行您的第一个 Azure Table 程序,简易 9 步 5:- 运行您的第一个 Azure Worker Role 程序,简易 6 步。
如果您想在阅读本文的同时参考循序渐进的 Azure 学习资料,这里是我们为此录制的视频,- 视频1。
Windows Azure FAQ 第一部分
引言和目标
不同的人有不同的执念,而我有一种写作文章格式的愚蠢执念,那就是 FAQ 格式 :-) 。我越是想用正常格式写作,结果就越变成 FAQ。我用 FAQ 格式写文章的唯一想法是,我们能直奔主题,而不是谈论树木和河流,很多人可能不同意。
将我的执念更进一步,Windows Azure FAQ 第一部分。
我的其他 Azure Faq 文章
- 运行您的第一个 Azure 程序,简易 5 步
Simple5stepsAzure_.aspx - 运行您的第一个 Azure Blob 程序,简易 7 步
Azue7StepsBlob.aspx - 运行第一个 Azure Queue 程序的 7 个简单步骤。
7simpleAzure.aspx - 运行第一个 Azure 表程序的 9 个简单步骤。
https://codeproject.org.cn/KB/aspnet/9SimplestepsAzure.aspx - 运行您的第一个 Azure Worker Role 程序,简易 6 步
https://codeproject.org.cn/KB/aspnet/6StepsAzure.aspx
感谢,感谢,再感谢
我很荣幸能成为 Lionbridge SaaS 团队的一员,他们带给我的关于 SaaS 的知识是不可思议的。如果我不是团队的一员,我就不会写这篇文章。这是来自同一团队关于 SaaS 的精彩文章 http://www.lionbridge.com/lionbridge/en-US/kc/product-engineering/configurability-in-saas.htm 。
Modesty zhang 的文章真的启发了我写这篇文章,这里是参考 https://codeproject.org.cn/KB/silverlight/Azurelight.aspx ,感谢您激发了我对 Azure 的兴趣。
这看起来不像技术文章?
在 FAQ 的初步阶段,我们将熟悉 Azure 的通用术语,然后开始处理所有编程方面的内容。
引言:- Windows Azure 不是技术变革,而是商业变革:- Shivprasad koirala (借此机会表扬一下自己 J )
如果你真的问我,Azure 是 20% 技术驱动和 80% 业务驱动。因此,如果你或你的组织正在考虑迁移到 Azure,这个决定将由管理层驱动,而不是技术驱动。因此,文章的初步阶段将讨论成本和使用 Azure 的需求,这可能会有点枯燥。随着这个 FAQ 系列的深入,您将看到大量的示例代码、架构思路和所有技术性的废话。
我相信作为技术人员,你需要了解如何在你想实施新技术时说服管理层。
Windows Azure 解决了什么问题?
定义 Azure 的最佳方式是理解它解决了什么问题。因此,让我们以一个拥有独立的 IT 部门来维护在线 Web 应用程序的典型组织为例。现在,让我们尝试分析维护在线 Web 应用程序所涉及的不同成本因素。
我们可以将 IT 部门的成本分为四个主要部分:-
•硬件成本:- 如果你想托管你的 Web 应用程序,你需要服务器、路由器等来运行你的应用程序。
•软件许可成本:- 当你开发你的应用程序时,你需要购买服务器操作系统许可,如 Windows 2003 Server、Visual Studio 许可、SQL Server 许可等。
•托管成本:- 你还需要将你的 Web 应用程序部署到互联网上。为此,你需要将你的 Web 应用程序托管在某个托管服务上。托管服务中最大的成本之一是带宽。所以我们需要为此预算。
• IT 人员工资:- 没有人类,什么都无法运行。所以我们也需要 IT 人员来开发和维护代码和基础设施。
换句话说,运营一个 IT 部门需要相当大的成本。其中许多成本需要预先支付。
如果我们可以找到一个提供商,他可以提供共享服务,提供共享服务器硬件、共享软件许可成本,并且可以提供按用量付费的带宽,那么就可以解决预付成本的问题。提供商可以维护一个 IT 人员团队来维护基础设施。如果提供商的服务对象不是一个而是多个组织使用这项共享服务,那么成本可以大大降低。
所以,换句话说,模式的变化就像下面所示。提供商将所有硬件和软件迁移到一个集中的位置,然后相应组织的应用程序将托管在这个共享环境中。使用这种模式,组织就不需要预先支付硬件、软件和 IT 人员的费用。
一句话定义 Windows Azure,微软是提供商,Windows Azure 是共享托管服务。
微软提供了自己的数据中心,在那里托管了 SQL 服务、.NET 服务、SharePoint 服务、Microsoft Dynamics 服务和 Live 服务等软件。Microsoft Azure 为运行您的 Web 应用程序和存储数据提供了一个云环境。这就像在云端可视化可用的 Windows 服务。
资料来源:- 上图取自白皮书
面向开发人员的 Microsoft® .NET 服务简介:- 面向云的 .NET 框架,作者 Aaron Skonnard,Pluralsight。您可以在 http://go.microsoft.com/fwlink/?LinkID=150833 阅读白皮书。
朋友们,共享确实能降低成本 J
Windows Azure 服务如何计费和定价?
如上所述,有两种类型的成本:固定成本(服务器硬件、员工工资等)和可变成本(带宽使用量、托管存储空间等)。
Windows Azure 服务采用即用即付模式计费。微软称之为按消耗量付费模式。换句话说,客户无需预先支付任何费用,一切都根据消耗量支付。
即用即付模式由四种特性定义:-
•计算/小时:- 根据您的应用程序使用的计算能力向您收费。在我写这篇文章时,它是 0.12 美元/小时。
•存储(GB/月):- 存储以每月平均存储数据量(GB)来衡量。目前的存储成本是每月存储 0.15 美元/GB。让我们尝试理解上面的陈述。如果您一天存储 30 GB,则平均为每月 1 GB。如果您存储 30 GB 30 天,则平均为每月 30 GB。以下是计算详情:-
图:- 存储计算详情
• 带宽:- 另一个用于衡量成本的因素是带宽,换句话说,数据进出数据中心的量。我们将在稍后更详细地讨论带宽成本,因为这取决于 Azure 提供的服务而有很多变化。请注意,数据中心内部使用的带宽是免费的。
• 存储事务:- 对存储数据的任何添加、更新和删除操作也会被跟踪。目前,每 10,000(10k)次事务请求收费 0.01 美元。
本文中提到的费用可能会随着时间推移而过时,有关最新的费率卡,请访问 http://www.microsoft.com/azure/pricing.mspx
我们对支付模式仍不清楚,它看起来有点令人困惑?
Azure 支付模式包含三个部分:-
计量:- 定义测量单位。例如,每小时计算,每 GB 存储,每 GB 带宽和每 10k 事务。
计费:- 定义单位的美元金额。
服务:- 计量和计费都需要与一项服务相关联,如 .NET 服务、SQL 服务、Live 服务等。
本文中提到的费用可能会随着时间推移而过时,有关最新的费率卡,请访问 http://www.microsoft.com/azure/pricing.mspx
Windows Azure | SQL Azure | .Net 服务 | |
流入带宽 | 0.10 美元/GB | 0.10 美元/GB | 0.10 美元/GB |
流出带宽 | 0.15 美元/GB | 0.15 美元/GB | 0.15 美元/GB |
存储 | 0.15 美元/GB 存储/月 | 不适用 | 不适用 |
事务 | 0.10 美元/10000 K | 不适用 | 不适用 |
消息 | 不适用 | 不适用 | 0.15 美元/100K 条消息。 |
关于 SQL Server 成本的一点说明
Web 版本 – 高达 1 GB 的关系数据库 = 9.99 美元/月
Business 版本 – 高达 10 GB 的关系数据库 = 99.99 美元/月
什么是 Fabric?
在我们开始回答这个问题之前,让我们感谢 Steven Nagy 帮助我们理解这个术语 http://azure.snagy.name/blog/?p=84。
正如之前所说,微软有自己的数据中心,里面有许多运行 Windows 2008 服务器的服务器。
注意:- 在我写这篇文章的时候,我了解到目前在美国西海岸有一个数据中心托管 Windows Azure 应用程序。
Azure 的整个概念就是为最终用户提供体面的托管费率。因此,微软必须以某种方式在多个应用程序之间共享其硬件。
为了在多个应用程序之间共享物理硬件,微软使用了“Hypervisor”。Hypervisor 是 Hyper-V 的修改版本。因此,Hypervisor 可以帮助您从这些物理硬件服务器创建虚拟机。您基本上会得到一个节点集群,其中包含虚拟机或硬件。
如果您真的扩展这些矩形节点,您就会得到一个 Fabric 结构。
图:- Fabric
那么,让我们来定义 Fabric。它只不过是一个节点集群。这些节点可以是物理机或虚拟机。
我们的应用程序在哪里运行?
我们的应用程序运行在 Fabric 节点上,每个应用程序都获得自己的虚拟空间资源。我们将在 FAQ 中更详细地讨论这一点。
什么是 Fabric Controller?
Fabric Controller 是 Azure Fabric 系统的核心。它管理 Azure 服务的完整生命周期。以下是 Fabric Controller 扮演的一些重要角色:-
• 管理应用程序的配置。根据应用程序的需求,Fabric 分配 CPU、内存和带宽限制。
• 部署服务。
• 监控系统状态和健康状况。确保其满足定义的 SLA。
• 如果发生故障,则从中恢复。
什么是 Role、Web Role 和 Worker Role?
Role 仅仅是应用程序或组件。换句话说,它们实际上是应用程序代码。Windows Azure 将应用程序分为两类:Web 应用程序和 Worker 应用程序。
Web Role / Web 应用程序:- Web Role 是可以通过 HTTP 访问的 Web 应用程序。Web Role 可以作为 ASP.NET 和 Windows Communication Foundation (WCF) 技术的子集进行托管。
Worker Role / Worker Process:- Worker Role 是一个后台处理应用程序,有点类似于 Windows 进程。Worker Role 不直接与外部世界通信。换句话说,它不直接接受来自外部世界的请求。
那么,Worker Role 是否无法连接到 Azure 外部的外部系统?
是的,Worker Role 不能接受来自互联网的入站调用,但它可以进行出站调用。Worker Role 是后台处理进程,因此没有入站 Internet 请求。Worker Role 还可以访问队列服务。因此,这可以成为外部系统发布数据供 Worker Role 读取的另一个通信点。
图:- Worker Role 和 Web Role
每个 Web Role 和 Worker Role 都托管在其自己的虚拟机中吗?
是的,每个 Web Role 和 Worker Role 都托管在其自己的虚拟空间中,或者我们可以说在其自己的虚拟机中。Fabric 不为 Worker Role 虚拟机分配 IIS。
您可以看到上图如何 Fabric Controller 使用数据中心硬件并创建新的 VM。我们的应用程序在这些虚拟机中运行。如果它是 Web Role,Fabric Controller 将创建一个带有 IIS 的新 VM 实例和您的 Web Role 实例。如果它是 Worker Role,它将仅创建一个 Worker Role 实例。它不会为 Worker Role 提供 IIS 实例,因为它不应接受来自外部世界的入站调用。
Web Role 实例和 Worker Role 实例如何与 Fabric 通信?
每个虚拟机都有一个代理。这个代理促进了 Web Role 和 Worker Role 实例与 Fabric 之间的通信。
什么是 Blob、Table 和 Queue?
到目前为止,我们只讨论了应用程序代码。除了应用程序,您还需要保存数据。Windows Azure 有三种数据:Blob、Table 和 Queue。
Blob:- 用于存储图像、音频、视频等大型对象。
Table:- 用于存储持久且可扩展的数据结构。Table 由实体组成,实体具有属性。
图:- Table 结构
Queue:- Queue 用于实现异步通信。它们能够以消息的形式存储瞬态数据。Azure 使用 Queue 在不同实体之间进行通信。例如,Worker Role 和 Web Role 想要通信时,它们会使用 Queue。
我们将在接下来的 FAQ 系列中更详细地讨论以上 3 个内容。我们将为其中每一个都专门设置一个完整的 FAQ 系列。在此之前,请耐心等待。
那么,SQL 是查询 Blob、Table 和 Queue 的标准方法吗?
不,我们不能使用标准 SQL 查询上述 Azure 存储。它们通过 REST(Representational state transfer)进行访问。REST 是一种分布式系统的软件架构风格。因此,如果您想从 Table 读取数据,您需要指定以下 URL。
http://<<托管 Table 的网站>>/<TableName>?$filter=<Query >
第一个是托管 Table 的网站,第二个是 Table 名称,然后是您的查询。
为什么不选择 SQL?
REST 完全依赖于 HTTP 协议,该协议允许 PHP、JAVA 等其他语言与 Azure 存储进行通信。换句话说,您可以使用 CGI、PHP 等任何语言构建您的应用程序,并将数据存储在 Azure 存储中。
既然已经有了 SQL Server,为什么还要有其他数据存储?
Windows Azure 将使用一个通用的托管平台,以便客户的托管成本更低。换句话说,存储应该是高度可扩展的。为了支持这些类型的需求,我们需要横向扩展而不是纵向扩展。Windows Azure 存储是建立在横向扩展架构之上的。
由于这个原因,SQL Server 服务的成本高于 Azure 存储。让我们尝试理解为什么横向扩展架构会增加成本。
横向扩展意味着当您的数据库需要更多的处理能力时,您只需更换一个更强大的处理器。换句话说,您只需购买一个具有更好 RAM 的更强大的处理器,并将您的应用程序放在上面。由于处理器数量不变,您不会被收取额外的 SQL Server 许可费用。
图:- 横向扩展
在横向扩展中,您根据需要增加多个服务器来获得更多的处理能力。因为增加了新的服务器,所以您还需要为每个硬件购买 SQL Server 许可。Azure 是一个横向扩展模型。根据处理器需求的增加,微软将增加其数据中心的硬件。由于需要更多的许可,SQL Server 服务的成本将高于 Windows Azure 存储。
图:- 纵向扩展
因此,使用 Azure 存储:-
• 如果您的应用程序具有大规模。
• 您不寻求像 SQL、结构化关系表等丰富的关系数据功能。
• 您正在寻找更低的成本。
您需要使用 SQL Azure 服务
• 可扩展性不是最重要的因素。
• 您正在寻找像 SQL、结构化关系表等丰富的数据库功能。
• 成本不是大问题。
Web Role 和 Worker Role 之间如何通信?
敬请期待……。
什么是故障域?
敬请期待……。
参考文献
• 开始学习并准备参加关于Azure AZ - 900 认证的云课程。
• SaaS 配置 LionBridge 白皮书 http://www.lionbridge.com/lionbridge/en-US/kc/product-engineering/configurability-in-saas.htm 。
• Modesty zhang 的文章真的启发了我写这篇文章,这里是参考 https://codeproject.org.cn/KB/silverlight/Azurelight.aspx
• 面向开发人员的 Microsoft® .NET 服务简介:- 面向云的 .NET 框架,作者 Aaron Skonnard,Pluralsight。您可以在 http://go.microsoft.com/fwlink/?LinkID=150833 阅读白皮书。
• “Fabric”一词的定义 http://azure.snagy.name/blog/?p=84
• 描绘 Windows Azure 基础设施内部细节的精彩演示文稿 http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/ES19.pptx
如需进一步阅读,请观看以下关于Azure DevOps的循序渐进视频