你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Cosmos DB 专用网关(概述)
适用范围: NoSQL
专用网关是用作 Azure Cosmos DB 帐户前端的服务器端计算。 当你连接到专用网关时,它会路由请求并缓存数据。 和预配的吞吐量一样,专用网关按小时计费。
概述
可以预配专用网关来大幅提高性能。 预配专用网关的最常见原因是为了能够缓存。 预配专用网关时,会自动在该专用网关中配置集成式缓存。 命中集成式缓存的点读取和查询不会使用任何 RU。 预配具有集成式缓存的专用网关有助于降低 Azure Cosmos DB 上读取密集型工作负载的成本。
专用网关内置于 Azure Cosmos DB 中。 预配专用网关时,你将获得一个完全托管的节点,该节点可将请求路由到后端分区。 与通过标准网关连接到 Azure Cosmos DB 相比,通过专用网关连接到 Azure Cosmos DB 的延迟更低且更容易预测。 即使发生缓存未命中,专用网关的延迟也要优于标准网关。
只需对代码做出极少量的更改,就能让应用程序使用专用网关。 新的和现有的 Azure Cosmos DB 帐户都可以预配专用网关来提高读取性能。
注意
是否对专用网关有任何反馈? 我们想听一听! 欢迎直接与 Azure Cosmos DB 工程团队分享反馈:cosmoscachefeedback@microsoft.com
连接模式
Azure Cosmos DB 有两种连接模式,直接模式和网关模式。 使用网关模式,可以连接到标准网关或专用网关,具体取决于配置的终结点。
使用直接模式连接到 Azure Cosmos DB
当你使用直接模式连接到 Azure Cosmos DB 时,应用程序将直接连接到 Azure Cosmos DB 后端。 即使你有许多物理分区,请求路由也完全在客户端进行处理。 直接模式的延迟较低,因为应用程序可以直接与 Azure Cosmos DB 后端通信,而无需中间网络跃点。 如果选择使用直接模式进行连接,请求将不会使用专用网关或集成式缓存。
使用网关模式连接到 Azure Cosmos DB
如果使用网关模式连接到 Azure Cosmos DB,则应用程序将先连接到前端节点,该节点会处理将请求路由到相应后端节点的过程。 由于网关模式涉及到一个额外的网络跃点,因此与直接模式相比,其延迟可能略高。
通过网关模式连接到 Azure Cosmos DB 时,可使用以下任一选项进行连接:
- 标准网关 - 虽然后端(包括预配的吞吐量和存储)每个容器都具有专用容量,但标准网关可在许多 Azure Cosmos DB 帐户之间进行共享。 对于许多客户而言,共享标准网关是切实可行的,因为这样每个客户消耗的计算资源就会很少。
- 专用网关 - 在此网关中,后端和网关都有专用容量。 集成式缓存需要专用网关,因为它需要大量特定于 Azure Cosmos DB 帐户的 CPU 和内存。
必须通过专用网关连接到 Azure Cosmos DB 才能使用集成式缓存。 专用网关的终结点与 Azure Cosmos DB 帐户提供的标准终结点不同,但请求的路由方式相同。 当你连接到专用网关终结点时,应用程序会将请求发送到专用网关,然后该网关会将请求路由到不同的后端节点。 如果可能,集成式缓存会提供结果。
使用专用网关进行网关模式连接的示意图:
预配专用网关
可以在 API for NoSQL 帐户中预配专用网关群集。 一个专用网关群集默认最多可以有五个节点,你可以随时添加或删除节点。 帐户中的所有专用网关节点共享同一个专用网关终结点。
专用网关节点彼此独立。 预配多个专用网关节点时,任一节点都可以路由任一给定请求。 此外,每个节点都有一个独立于其他节点的集成缓存。 每个节点中缓存的数据取决于最近通过该特定节点写入或读取的数据。 如果在一个节点上缓存了某个项或查询,不一定会在其他节点上缓存该项或查询。
对于开发,我们建议从一个节点开始,但对于生产,应预配三个或更多个节点以实现高可用性。 了解如何预配具有集成式缓存的专用网关群集。 预配多个专用网关节点可使专用网关群集持续路由请求并提供缓存的数据,即使某个专用网关节点不可用,也是如此。
专用网关按以下大小提供。 集成缓存会使用大约 50% 的内存,其余内存保留给元数据以及用于将请求路由到后端分区。
SKU 名称 | vCPU | 内存 |
---|---|---|
D4s | 4 | 16 GB |
D8s | 8 | 32 GB |
D16s | 16 | 64 GB |
提示
创建后,可以添加或删除专用网关节点,但不能修改节点的大小。 若要更改专用网关节点的大小,可以取消预配群集,然后以不同的大小重新预配群集。 但这将导致短暂的停机时间,除非将应用程序中的终结点更改为在重新预配期间使用标准网关。
可以通过许多不同的方法来配置专用网关:
- 使用 Azure 门户预配专用网关
- 使用 Azure Cosmos DB 的 REST API
- Azure CLI
- ARM 模板
- 注意:不能使用 ARM 模板取消预配专用网关
注意
你可以通过请求,在具有可用性区域的 Azure Cosmos DB 帐户中预配专用网关。 如需详细信息,请联系 cosmoscachefeedback@microsoft.com。
多区域帐户中的专用网关
在多区域帐户中预配专用网关群集时,将在每个区域中预配相同的专用网关群集。 例如,假设在美国东部和北欧有一个 Azure Cosmos DB 帐户。 如果在此帐户中预配包含两个 D8 节点的专用网关群集,则总共会有四个 D8 节点 - 两个位于美国东部,两个位于北欧。 无需在每个区域中显式配置专用网关,并且专用网关终结点将保持不变。 有关执行故障转移的最佳做法也没有任何变化。
与群集中的节点一样,跨区域的专用网关节点也是独立的。 每个区域中缓存的数据有可能不同,具体取决于最近在该区域中的读取或写入。
限制
专用网关仅在 API for NoSQL 帐户中受支持。
后续步骤
请参阅以下文章来详细了解专用网关的用法:
- 集成式缓存
- 配置集成式缓存
- 集成式缓存常见问题解答
- 正在尝试为迁移到 Azure Cosmos DB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。
- 如果你只知道现有数据库群集中的 vCore 和服务器数量,请阅读根据 vCore 或 vCPU 数量估算请求单位数
- 若知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量计划工具估算请求单位