你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用分区来解决数据库、网络和计算限制
在云中,所有服务都具有纵向扩展能力的限制。 Azure 服务限制记录在 Azure 订阅和服务限制、配额和约束中。 限制包括核心数、数据库大小、查询吞吐量和网络吞吐量。 如果系统增长得足够大,可能会达到其中一个或多个限制。 使用分区来解决这些限制。
可通过多种方式对系统进行分区,例如:
对数据库进行分区以避免对数据库大小、数据 I/O 或并发会话数的限制。
对队列或消息总线进行分区,以避免对请求数或并发连接数的限制。
对应用服务 Web 应用进行分区,以避免对每个应用服务计划实例数的限制。
可以 水平、 垂直或 功能地对数据库进行分区。
在水平分区(也称为分片)中,每个分区保存数据集子集的数据。 分区共享相同的数据架构。 例如,名称以 A-M 开头的客户进入一个分区,N–Z 进入另一个分区。
在垂直分区中,每个分区保存数据存储中与项相关的字段的子集。 例如,将经常访问的字段放在一个分区中,在另一个分区中不太频繁访问的字段。
在功能分区中,数据根据系统中每个绑定上下文的使用方式进行分区。 例如,将发票数据存储在一个分区中,将产品库存数据存储在另一个分区中。 架构是独立的。
有关更详细的指南,请参阅 数据分区。
建议
对应用程序的不同部分进行分区。 数据库是分区的一个明显候选数据库,但也考虑存储、缓存、队列和计算实例。
设计分区键以避免热点。 如果对数据库进行分区,但一个分片仍获取大部分请求,则尚未解决问题。 理想情况下,负载将均匀分布到所有分区中。 例如,按客户 ID 而不是客户名称的第一个字母进行哈希,因为某些字母更频繁。 对消息队列进行分区时,同样的原则适用。 选择一个可以使消息均匀分布在队列集中的分区键。 有关更多信息,请参阅分片。
通过分区解决 Azure 订阅和服务限制。 各个组件和服务都有限制,但订阅和资源组也有限制。 对于非常大的应用程序,可能需要围绕这些限制进行分区。
不同级别的分区。 请考虑在 VM 上部署的数据库服务器。 VM 有一个由 Azure 存储支持的 VHD。 存储帐户属于 Azure 订阅。 请注意,层次结构中的每个步骤都有限制。 数据库服务器可能具有连接池限制。 VM 具有 CPU 和网络限制。 存储具有 IOPS 限制。 订阅对 VM 核心数有限制。 通常,在层次结构中的较低位置进行分区更容易。 只有大型应用程序才需要在订阅级别分区。