本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接到 Amazon Neptune 端点
Amazon Neptune 使用数据库实例的集群而不是单个实例。每个 Neptune 连接均由特定的数据库实例处理。在连接到 Neptune 集群时,您指定的主机名和端口将指向名为端点的中间处理程序。端点是URL包含主机地址和端口的端点。Neptune 端点使用加密的传输层(传输层Security/Secure Sockets Layer (TLS/SSL)连接。
Neptune 使用端点机制来抽象这些连接,以便您不必对主机名进行硬编码,也不必在某些数据库实例不可用时编写自己的逻辑来重新路由连接。
通过使用端点,您可以根据用例将每个连接映射到相应的实例或实例组。自定义端点允许您连接到数据库实例的子集。Neptune 数据库集群中提供以下端点:
Neptune 集群端点
集群端点是 Neptune 数据库集群的一个端点,连接到该数据库集群的当前主数据库实例。每个 Neptune 数据库集群都具有集群端点和一个主数据库实例。
集群终端节点为数据库集群的读取/写入连接提供故障转移支持。使用集群终端节点对数据库集群进行所有写入操作,包括插入、更新、删除和数据定义语言 (DDL) 更改。您还可以对读取操作(如查询)使用集群端点。
如果数据库集群的当前主数据库实例失败,Neptune 将自动失效转移到新的主数据库实例。在故障转移期间,数据库集群将继续为从新的主数据库实例到集群终端节点的请求提供服务,对服务造成的中断最少。
以下示例介绍 Neptune 数据库集群中的集群端点。
mydbcluster.cluster-123456789012.us-east-1.neptune.amazonaws.com:8182
Neptune 读取器端点
读取器端点是 Neptune 数据库集群的一个端点,连接到该数据库集群的可用 Neptune 副本之一。每个 Neptune 数据库集群都具有一个读取器端点。如果有多个 Neptune 副本,则读取器端点会将每个连接请求定向到 Neptune 副本之一。
读取器终端节点为数据库集群的只读连接提供轮询路由。对读取操作(如 查询)使用读取器端点。
除非您拥有单实例集群(没有只读副本的集群),否则您无法将读取器终端节点用于写入操作。当且仅当在这种情况下,读取器可以用于写入操作以及读取操作。
读取器端点循环路由的工作原理是更改DNS入口指向的主机。每次解析时DNS,你都会得到一个不同的 IP,并且会针对这些IP打开连接IPs。建立连接之后,对于该连接的所有请求将发送到同一个主机。客户端必须创建新连接并重新解析DNS记录,才能连接到可能不同的只读副本。
注意
WebSockets 连接通常会长时间保存。要获取不同的只读副本,请执行以下操作:
-
确保您的客户端每次连接时都能解析该DNS条目。
-
关闭连接,然后重新连接。
不同的客户端软件可能以不同的DNS方式解析。例如,如果您的客户端解析DNS并使用该 IP 进行每个连接,则它会将所有请求定向到单个主机。
DNS客户端或代理的缓存会将DNS名称从缓存中解析为相同的端点。这对于轮询路由和故障转移场景都是一个问题。
注意
禁用任何DNS缓存设置以强制DNS解析。
数据库集群在可用 Neptune 副本之间分配对读取器端点的连接请求。如果数据库集群只包含主数据库实例,则读取方终端节点从主数据库实例为连接请求提供服务。如果为该数据库集群创建了 Neptune 副本,则读取器端点将从新 Neptune 副本继续为针对读取器端点的连接请求提供服务,对服务造成的中断最少。
以下示例介绍 Neptune 数据库集群的读取器端点。
mydbcluster.cluster-ro-123456789012.us-east-1.neptune.amazonaws.com:8182
Neptune 实例端点
实例端点是 Neptune 数据库集群中数据库实例的一个端点,连接到该特定数据库实例。数据库集群中的每个数据库实例具有自己的唯一实例终端节点,而不论具有何种实例类型。因此,数据库集群的当前主数据库实例具有一个实例终端节点。数据库集群中的每个 Neptune 副本也都具有一个实例端点。
对于可能不适合使用集群终端节点或读取器终端节点的场景,实例终端节点提供对与数据库集群连接的直接控制。例如,您的客户端应用程序可能根据工作负载类型需要精细的负载均衡。在这种情况下,您可以配置多个客户端以连接到数据库集群中的不同 Neptune 副本,以便分配读取工作负载。
以下示例介绍 Neptune 数据库集群中数据库实例的实例端点。
mydbinstance.123456789012.us-east-1.neptune.amazonaws.com:8182
Neptune 自定义端点
Neptune 集群的自定义端点表示一组选定数据库实例。在连接到端点时,Neptune 选择组中的实例之一来处理连接。您可以定义此终端节点引用的实例,并确定此终端节点的用途。
在创建自定义端点之前,Neptune 数据库集群没有自定义端点,您可以为每个预调配的 Neptune 集群创建最多五个自定义端点。
自定义终端节点根据数据库实例的只读或读/写功能以外的条件提供负载均衡的数据库连接。因为连接可以转到与端点关联的任何数据库实例,所以,请确保该组中的所有实例共享相同的性能和内存容量特征。在使用自定义终端节点时,通常不使用该集群的读取器终端节点。
此特征适用于具有特殊类型的工作负载的高级用户,在这些工作负载下,使集群中的所有 Neptune 副本保持相同是不切实际的。利用自定义端点,您可以调整用于每个连接的数据库实例的容量。
例如,如果您定义了多个自定义端点,这些端点连接到具有不同实例类的实例组,则可以将具有不同性能需求的用户定向到最适合其用例的端点。
以下示例介绍 Neptune 数据库集群中数据库实例的自定义端点:
myendpoint.cluster-custom-123456789012.us-east-1.neptune.amazonaws.com:8182
请参阅使用自定义端点了解更多信息。
Neptune 端点注意事项
使用 Neptune 端点时,请考虑以下问题:
-
使用实例终端节点连接到数据库集群中的特定数据库实例之前,请考虑改为对数据库集群使用集群终端节点或读取方终端节点。
集群终端节点和读取方终端节点可提供对高可用性场景的支持。如果数据库集群的主数据库实例失败,Neptune 将自动失效转移到新的主数据库实例。它通过将现有 Neptune 副本提升为新的主数据库实例或者创建新的主数据库实例来完成该操作。如果发生了失效转移,您可以使用集群端点重新连接到新提升或新创建的主数据库实例,或者使用读取器端点重新连接到数据库集群中的其它 Neptune 副本之一。
如果未采用此方法,您仍可以确保连接到数据库集群中的合适数据库实例来执行目标操作。为此,您可以在故障转移之后,以手动或以编程方式先搜索数据库集群中得到的可用数据库实例集,并确认其实例类型,然后再使用特定数据库实例的实例终端节点。
有关故障转移的更多信息,请参阅Neptune 数据库集群的容错能力。
-
读取器端点仅将连接定向到 Neptune 数据库集群中的可用 Neptune 副本。它不会定向特定查询。
重要
Neptune 不会执行负载均衡。
如果您要实现查询的负载均衡以分配数据库集群的读取工作负载,则必须在应用程序中进行管理。您必须使用实例端点直接连接到 Neptune 副本以进行负载平衡。
-
读取器端点循环路由的工作原理是更改DNS入口指向的主机。客户端必须创建新连接并重新解析DNS记录,才能连接到可能的新只读副本。
-
在失效转移期间,如果将 Neptune 副本提升为新的主数据库实例,则读取器端点可能会在短时间内将连接定向到数据库集群的新的主数据库实例。