明天你会感谢今天奋力拼搏的你。
ヾ(o◕∀◕)ノヾ
CAP理论可以查看我的另一篇文章:《分布式系列:分布式相关概念介绍》
Nacos 作为注册中心时,支持 AP(可用性和分区容错性)与 CP(一致性和分区容错性)模式的切换,这使其能根据不同业务场景需求灵活调整架构特性。
注意:
如果要进行CP模式配置,最好修改下Nacos服务端配置文件,其中的raft相关配置进行设置,如下为raft相关配置示例:
# 选举超时时间设置为5秒,避免网络抖动导致频繁选举
nacos.core.protocol.raft.data.election_timeout_ms=5000
# 快照间隔设置为1小时,平衡性能和数据安全
nacos.core.protocol.raft.data.snapshot_interval_secs=3600
# 根据CPU核心数适当调整工作线程数
nacos.core.protocol.raft.data.core_thread_num=16
nacos.core.protocol.raft.data.cli_service_thread_num=8
# 使用安全的线性读策略
nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
# RPC超时时间适当调大,避免网络波动影响
nacos.core.protocol.raft.data.rpc_request_timeout_ms=10000
# 启用数据安全保障
nacos.core.protocol.raft.data.sync=true
# 开启pipeline优化提升性能
nacos.core.protocol.raft.data.replicator_pipeline=true
# 适当增加buffer大小提升性能
nacos.core.protocol.raft.data.disruptor_buffer_size=32768
1、在SpringBoot项目客户端配置
SpringBoot项目可以通过以下方式可以切换注册实例为AP还是CP:
# application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 通过ephemeral属性来控制是临时实例(AP)还是持久化实例(CP)
ephemeral: false # false表示CP模式,true表示AP模式(默认)
2、通过API方式注册客户端实例
@Service
public class ServiceRegistration {
@NacosInjected
private NamingService namingService;
public void registerService() throws NacosException {
Instance instance = new Instance();
instance.setIp("192.168.1.1");
instance.setPort(8080);
instance.setEphemeral(false); // 是否是临时实例
instance.setWeight(1.0); // 实例权重
instance.setClusterName("DEFAULT"); // 集群名
namingService.registerInstance("service-name", instance);
}
}
最佳实践建议
《官方文档,Nacos1.0.0发布支持ephemeral字段说明》
全部评论