通过更改 Microsoft Visual Studio 程序包根目录下的指定执行组件的 Config 文件夹中生成的 settings.xml 文件,可以修改 KVSActorStateProvider 的默认配置。
Azure Service Fabric 运行时在 settings.xml 文件中查找预定义的节名称,并在创建基础运行时组件时使用这些配置值。
注释
请勿删除或修改 Visual Studio 解决方案中生成的 settings.xml 文件中的以下配置的节名称。
复制器安全配置
复制器安全配置用于保护在复制过程中使用的通信通道的安全。 这意味着服务看不到彼此的复制流量,确保使高度可用的数据也安全。 默认情况下,空的安全配置节会影响复制安全。
重要
在 Linux 节点上,证书必须是 PEM 格式。 若要详细了解如何查找和配置适用于 Linux 的证书,请参阅在 Linux 上配置证书。
节名称
<ActorName>服务复制器安全配置
复制器配置
复制器配置项用于配置负责使参与者状态提供程序状态高度可靠的复制器。 默认配置由 Visual Studio 模板生成,并应已足够。 本部分介绍了可用于调整复制器的其他配置。
节名称
<演员名称>服务复制器配置
配置名称
| 名称 | 单位 | 默认值 | 注解 |
|---|---|---|---|
| 批处理确认间隔 (BatchAcknowledgementInterval) | 秒 | 0.015 | 次要复制器在接收到操作后等待的一段时间,然后再将确认发送回主节点。 在此间隔内处理的操作所需发送的其他任何确认,都将合并为一个响应发送。 |
| ReplicatorEndpoint | 不适用 | 无默认值--必选参数 | 主要/辅助复制器用于与副本集中其他复制器通信的 IP 地址和端口。 这应该引用服务清单中的 TCP 资源终结点。 有关在服务清单中定义终结点资源的详细信息,请参阅服务清单资源。 |
| 重试间隔 | 秒 | 5 | 复制器在未收到操作确认后重新传输消息的时间间隔。 |
| 最大复制消息大小 | 字节 | 50 MB | 可以在单个消息中传输的复制数据的最大大小。 |
| MaxPrimaryReplicationQueueSize | 操作的数量 | 1024 | 主队列的最大操作数。 在主复制程序收到来自所有辅助复制器的确认后,将释放操作。 此值必须大于 64 且为 2 的幂。 |
| MaxSecondaryReplicationQueueSize (次级复制队列最大尺寸) | 操作的数量 | 2048 | 备用队列中的操作最大数目。 通过持久化技术提高操作状态的可用性后,该操作被释放。 此值必须大于 64 且为 2 的幂。 |
存储配置
存储配置用于配置用于保存正在复制的状态的本地存储。 默认配置由 Visual Studio 模板生成,并应已足够。 本部分介绍了可用于调整本地存储的其他配置。
节名称
<ActorName>ServiceLocalStoreConfig
配置名称
| 名称 | 单位 | 默认值 | 注解 |
|---|---|---|---|
| MaxAsyncCommitDelayInMilliseconds | 毫秒 | 200 | 设置持久的本地存储提交的最大批处理间隔。 |
| MaxVerPages | 页数 | 16384 | 本地存储数据库中版本页数的最大值。 它确定待处理事务的最大数量。 |
示例配置文件
<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Section Name="MyActorServiceReplicatorConfig">
<Parameter Name="ReplicatorEndpoint" Value="MyActorServiceReplicatorEndpoint" />
<Parameter Name="BatchAcknowledgementInterval" Value="0.05"/>
</Section>
<Section Name="MyActorServiceLocalStoreConfig">
<Parameter Name="MaxVerPages" Value="8192" />
</Section>
<Section Name="MyActorServiceReplicatorSecurityConfig">
<Parameter Name="CredentialType" Value="X509" />
<Parameter Name="FindType" Value="FindByThumbprint" />
<Parameter Name="FindValue" Value="9d c9 06 b1 69 dc 4f af fd 16 97 ac 78 1e 80 67 90 74 9d 2f" />
<Parameter Name="StoreLocation" Value="LocalMachine" />
<Parameter Name="StoreName" Value="My" />
<Parameter Name="ProtectionLevel" Value="EncryptAndSign" />
<Parameter Name="AllowedCommonNames" Value="My-Test-SAN1-Alice,My-Test-SAN1-Bob" />
</Section>
</Settings>
注解
BatchAcknowledgementInterval 参数用于控制复制延迟。 值“0”会导致尽可能低的延迟,但代价是吞吐量降低(因为必须发送和处理更多的确认消息,而每个消息包含的确认数量较少)。 BatchAcknowledgementInterval 的值越大,整体复制吞吐量就越高,但代价是导致更高的操作延迟。 这直接反映了事务提交的延迟时间。