展示如何构建数据库支持的Windows Azure服务

“云服务基础”应用程序也称作“CSFunda">mentals”,展示如何构建数据库支持的 Azure 服务。在上一篇博客文章 DAL – RDBMS 的分区中,我们讨论了一种在数据库层中实施横向可伸缩性的技术,即分区。在本文章中,我们将讨论缓存的重要性、要考虑的因素,以及如何在 Windows Azure 中进行配置和实施。

分布式缓存架构在横向扩展的基础上构建,其中若干台计算机(物理机或虚拟机)将作为具有分摊工作负荷的固有分区能力的群集环的一部分。缓存为 <key, value> 查找范例, 它们的值为序列化的对象,这些对象可能是一个更为复杂的数据存储操作的结果集,如跨数据库中的多个表执行 JOIN 操作。因此,使用缓存, 就不用针对数据存储多次执行操作,而是针对缓存进行快速键查找。

了解什么内容适合被缓存

首先,您需要分析工作负荷并确定合适的缓存对象。数据缓存时,缓存和“数据源”之间的“过期”容错应在应用程序的可接受范围内。总体而言,缓存可用作参考(对于所有用户均为只读数据),如用户配置文件、用户会话(单个用户进行读写),或在某些情况下用作资源数据(使用锁定 API 让所有用户均可读写)。在某些情况下,特定的数据集可能并不适合进行缓存 - 例如,如果某个特定的数据集正在迅速发生变化、应用程序无法容许过期,或者您需要执行事物。

容量规划

下一步是估计应用程序的缓存需求。这需要查看一系列指标(刚好大于缓存大小),以制定最初的大小指南。

缓存大小: 可以使用对象的平均大小和对象的数量粗略估算所需的内存量。 访问模式和吞吐量要求: 读写组合显示了新对象的创建、现有对象的重新写入或对象的读取。 策略设置: 生存期 (TTL)、高可用性 (HA)、到期类型和逐出策略的设置。 物理资源:除了内存,网络带宽和 CPU 利用率也非常重要。网络宽带可根据特定的输入进行估算,但大多数情况下,应对网络宽带进行监控,然后将其用作重新计算的基础。

可从 http://msdn.microsoft.com/en-us/library/hh914129 获取更详细的容量规划电子表格

Azure 缓存拓扑

下表列出了 Azure 上提供的 PAAS 选项集,并提供了简要说明

类型

说明

In-Role dedicated

在专用拓扑中,可以定义缓存专用的 worker role。这意味着 worker role 的所有可用内存都可用于缓存和运行开销。

http://msdn.microsoft.com/en-us/library/windowsazure/hh914140.aspx

In-Role co-located

在co-located拓扑中,您可以使用应用程序角色上一定百分比的可用内存进行缓存。例如,您可以在每个 Web 角色实例上分配 20% 的物理内存进行缓存。

http://msdn.microsoft.com/en-us/library/windowsazure/hh914128.aspx

Windows Azure 缓存服务

Windows Azure 缓存服务当前(2013 年 9 月)处于预览状态。下面是一些有用的链接

http://blogs.msdn.com/b/azchina/archive/2013/09/03/announcing-new-windows-azure-cache-preview.aspx

http://msdn.microsoft.com/en-us/library/windowsazure/dn386094.aspx

Windows Azure 共享缓存

多租户缓存(带有限制和配额)最晚将于 2014 年 9 月停用。可从 http://www.windowsazure.com/en-us/pricing/details/cache/ 获取更多详细信息。建议客户使用上面的一个选项来利用缓存。

实施详细信息

该 CSFundamentals 应用程序利用In-Role dedicated的 Azure 缓存来简化读取经常访问的信息 - 如用户配置文件信息、用户注释。In-Role dedicated部署为首选,因为它分离了缓存相关的工作负荷。然后可以通过性能计数器(CPU 使用率、网络带宽、内存等)和相应伸缩的缓存角色实例进行监控。

注意:实施 CSFundamentals 期间,新的 Windows Azure 缓存服务不可用。除 CSFundamentals 应用程序之外,如果需要使用缓存数据,这将是首选。

ICacheFactory 接口定义了 GetCache 方法签名。ICacheClient 接口定义了 GET<T> 和 PUT<T> 方法签名。

public interface ICacheClient

AzureCacheClient 实现了此接口,并引用通过 Windows Azure Caching NuGet 程序包进行添加的 Windows Azure 缓存客户端程序集。

创建DataCacheFactory 对象会建立与缓存角色实例的昂贵连接,因此将其定义为静态连接并使用 Lazy<T> 缓慢进行实例化。

app.config 已启用自动发现并且标识符用于正确指向缓存 worker role:

<autoDiscover isEnabled="true" identifier="CSFundamentalsCaching.WorkerRole" />

注意:要修改解决方案以使用新的 Windows Azure 缓存服务,请将标识符属性替换为在 Windows Azure 门户中创建的缓存服务端点。此外,API 密钥(可通过门户上的 Manage Keys 选项进行检索)必须复制到 app.config 中的“messageSecurity authorizationInfo”字段。

实施 GET<T> 和 PUT<T> 方法使用了 BinarySerializer 类,BinarySerializer 类又利用 Protobuf 类进行序列化和反序列化。protobuf-net 是Protocol Buffers的 .NET 实施,让您可以高效、轻松地对 .NET 对象进行序列化。通过 protobuf-net NuGet 包进行添加。

序列化为传入的参数 T 生成 byte[] 数组,然后将其存储在 Windows Azure 缓存群集中。为了返回特定密钥请求的对象,GET 方法使用反序列化方法。

本博客概述了缓存基础知识。有关详细信息,请参阅 CloudServiceFundamentals Visual Studio 解决方案中的 ICacheClient.cs、AzureCacheFactory.cs、AzureCacheClient.cs 和 BinarySerializer.cs。

时间: 2024-09-30 18:20:29

展示如何构建数据库支持的Windows Azure服务的相关文章

微软宣布AMQP 1.0支持在Windows Azure服务总线已经发布

在过去的五年中,微软和其他公司一起致力于开发高级消息队列协议(AMQP)标准.这20多家公司包括技术供应商,有红帽.威睿,及像http://www.aliyun.com/zixun/aggregation/17954.html">摩根大通.瑞士信贷一样的企业.目标是建立一个开放的.线级的消息传送协议标准,使不同的供应商之间的互操作更加简单.回到2012年十月,OASIS标准组织宣布通过AMQP 1.0为OASIS标准,在同一天,我们发布了执行AMQP1.0的Windows Azure服务总

微软在Windows Azure服务中推出首个Hadoop公共预览版

Windows Azure服务再添新成员,微软于今年三月十八号将名为HDInsight的首个Hadoop公共预览版带到我们面前. 截至目前,微软已经完成了Azure HDInsight服务三个内部预览版的小范围测试工作.(我刚开始以为去年十月公布的已经是公共版本,但根据微软官方的说法,这周推出的才是首个公共预览版.) 微软及其合作伙伴Hortonworks曾于2011年秋季共同宣布,有计划将Hadoop大数据框架引入Windows Server与Windows Azure.微软已经于去年十月在W

无法在windows azure服务中获得创建表格的数据选项卡?

问题描述 无法在windows azure服务中获得创建表格的数据选项卡? 无法在windows azure服务中获得创建表格的数据选项卡?请解释一下目前在windows azure服务中vs2012里windowphone和应用程序链接具体步骤. 解决方案 Hi, 如果想在Visual Studio中管理Azure SQL的话,你可以从Azure门户上去取得连接字符串,然后就和平常使用SQL一样去连接数据库,如果你的问题我理解的不对的话,欢迎你的任何回复. Best Regards, Jamb

Microsoft宣布在亚洲地区大规模推广Windows Azure服务

随着全球对云计算的需求持续增加,Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure 也在不断成长.Microsoft 是唯一能够提供混合云优势的全球性规模的公共云提供商.在此,我们非常高兴地宣布,我们计划斥资数百万美元,用于在亚洲地区推广 Windows Azure 服务 – 尤其是在中国.日本和澳大利亚. Microsoft CEO 820.html">Steve Ballmer 星期三在上海

将Mysql数据库迁移到Windows Azure上的SQL database中

Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure上可以提供多种Database As a service.其中SQL database是由微软提供发布并提供支持的.Azure上的SQL database与传统的SQL server的区别在于,Azure提供了原生的数据库高可用(一主两备).可在数秒内创建新的数据库实例.可快速进行数据库扩容.支持Federation.提供了全Web化的管理和设计界面.简便的备份

Windows Azure云服务基础–RDBMS的分区

编辑人员注释:本文章由AzureCAT 云与企业工程组的高级项目经理 Shaun Tinline-Jones 和 Chris Clayton 共同撰写. "云服务基础"应用程序也称作"CSFundamentals",展示如何构建数据库支持的 Azure 服务.这包括描述日志记录.配置和数据访问的使用场景.实施体系结构及可复用组件.代码库旨在用于根据 Windows Azure 客户咨询团队进行的生产部署,深入挖掘在 Azure 上交付可伸缩的可用服务的最佳实践. 目

Windows Azure SQL数据库的那些优势

Windows Azure是微软公司的云基础架构平台,如今,云计算已经普遍运用到各个方面,因此它也成为了微软公司整体战略的一个主要部分,并且作为Windows Azure SQL 数据库(前身叫做SQL Azure),Windows Azure的发展出了不少力. 微软公司对Azure是起于厚望的,尤其是对Windows Azure SQL数据库(为简单起见,下文将简称SQL Azure),它出现的意义不只是在云服务中提供数据库支持,更是为了创建支持PB级"大数据"乃至一切规模数据量的基

Windows Azure网站服务支持备份及还原功能啦!

在上周 Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure 服务内容更新之中,关于 Windows Azure 网站服务的一个更新是支持了备份及还原的功能: 网站服务可以自动备份,甚至包括数据库的部份 目前这个功能还在预览 (preview) 阶段,仅提供给网站规模使用「标准模式」(reserved instance) 的服务来使用,你可以自行设定备份的周期时间或是利用下方的选单立即进行备份,备份的内容除了网站

Windows Azure用于构建强大云应用程序的组件块

继发表设计强大的云应用程序博客之后,http://www.aliyun.com/zixun/aggregation/13357.html">Azure CAT 团队计划提供有关 MSDN 代码库上发布的代码项目 Windows Azure 中的云服务基础中的组件的详细信息和技术说明.我们将开始发布一系列博客和技术文章,对这些基础构建块(我们称之为组件)的使用进行说明.在接下来的几个月内,我们将每隔一周在周四发布一系列博客,提供云服务基础的各个组件的详细技术说明. 这些年来,我们一直致力于与