nacos
简介
nacos是阿里团队使用Java开发,nacos致力于发现、配置和管理微服务。nacos提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据以及流量管理。
nacos可以更敏捷和容易地构建、交付和管理微服务平台。nacos是构建以“服务”为中心的现代应用架构(微服务范式、云原生范式)的服务基础设施。
nacos几乎支持所有主流类型的“服务”的发现、配置和管理。比如:
kubernetes
RPC&Dubbo RPC
Spring Cloud
关键特性
nacos的关键特性包括:
1、服务发现和服务健康监测
nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、openapi、或者一个独立的agent TODO注册service后,服务消费者可以使用DNS TODO或者HTTP&API查找和发现服务。
nacos提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。nacos支持传输层和应用层的健康检查,对于复杂的云环境和网络拓扑环境中服务的健康检查,nacos提供了agent上报模式和服务端主动检测2种健康模式。nacos还提供了统一的健康检查仪表盘,帮助您根据健康检查状态管理服务的可用性以及流量。
2、动态配置服务
动态配置服务可以以中心化、外部化和动态化的方式管理所所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变的更加高效和敏捷。
配置中心化管理让实现无状态服务变的更简单,让服务按需弹性扩展变得更加容易。
nacos提供了一个简洁易用的UI,帮助管理所有的服务和应用的配置。nacos还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,更安全的在生产环境中管理配置变更和降低配置带来的风险。
3、动态DNS服务
动态DNS服务支持权重路由、可以更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能更容易实现以DNS协议为基础的服务发现。
4、服务及其元数据管理
nacos能从微服务平台建设的视角管理数据中心的所有服务以及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由以及安全策略、服务的SLA以及最主要的metrics统计数据。
功能图
生态图
nacos概念
地域 物理的数据中心,资源创建成功后不能更换
可用区 同一地域内,电力和网络互相独立的物理区域。同一可用区内,实例的网络延迟较低。
接入点 地域的某个服务的入口域名。
命名空间 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的group或data id配置。
namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源 (如配置、服务)隔离等。
配置 在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如tar、war包)更好的和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更时调整系统运行时的行为的有效手段。
配置管理 系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。
配置项 一个具体的可配置的参数与其值域,通常以 param-key=param-value 的形式存在。例如在系统常配置的日志输出级别(logLevel=INFO|WARN|ERROR)就是一个配置项。
配置集
配置集ID nacos中的某个配置集的ID。配置集ID是组织划分配置的维度之一。data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。data id 通常采用java类包的命名规则(如 com.taobao.tc.refund.log.level)保证全局唯一性,此命名规则非强制性。
配置分组 nacos中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串,对配置集进行分组,从而区分data id 相同的配置集。当在nacos上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,比如database_url配置和MQ_topic配置。
配置快照
nacos的客户端SDK会在本地生成配置的快照。当客户端无法连接到nacos server时,可以使用配置快照显示系统的整体容灾能力。配置快照类似于git中的本地commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期的概念。
服务 通过预定义接口网络访问的提供给客户端的软件功能。
服务名 服务提供的标识,通过该标识可以唯一确定其指代的服务。
服务注册中心 存储服务实例和服务负载均衡策略的数据库。
服务发现 在计算机网络中,对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。
元信息 nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权策略、各种自定以标签,从作用范围来看,分为服务级别的元信息、集群的元信息以及实例的元信息。
应用 用于标识服务提供放的服务的属性。
服务分组 不同的服务可以归类到同一分组。
虚拟集群 同一个服务下的所有服务实例组成一个默认的集群,集群可以被进一步按需求划分,划分的单位可以是虚拟集群。
实例 提供一个或多个服务的具有可访问网络地址的进程。
权重 实例级别的配置。权重为浮点数。权重越大,分配给该实例的流量越大。
健康检查 以指定方式检查服务下挂载的实例的健康度,从而确认该实例是否能提供服务。根据检查结果,实例会被判断为健康或不健康。对于服务发起解析请求时,不健康的实例不会返回给客户端,
健康保护阈值 为了防止因过多实例不健康导致流量全部流向健康实例,继而造成流量压力把健康实例压垮并形成雪崩效应,应将健康保护阈值定义为一个0到1之家的浮点数。当域名健康实例占总服务实例的比例大小于该值时,无论实例是否健康,都会将这个实例返回给客户端。这样做虽然会损失一部分流量,但是保证了集群的剩余健康实例能正常工作。
作用
使用nacos简化服务发现、配置管理、服务治理以及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。
动态配置服务
动态配置服务能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
服务发现及管理
动态服务发现对以服务为中心的应用架构方式非常关键。nacos支持DNS-based和RPC-based模式的服务发现,nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助nacos可以更容易地为服务实现断路器。
动态DNS服务
通过支持权重路由,动态DNS服务能轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能更容易以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
架构
基本架构及概念
服务
服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。nacos支持主流的服务生态,如kebernetes service等。
服务注册中心
服务注册中心,他是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查询服务的可用实例。服务注册中心可能会调用服务实例的健康检查API来验证它是否能够处理请求。
服务元数据
服务元数据是指包括服务端点、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。
服务提供方
是指提供可复用和可调用服务的应用方
服务消费方
是指会发起对某个服务调用的应用方
配置
在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在,目的是让静态的系统工件或交付物更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。
配置管理
在数据中心,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。
配置服务
在服务或应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。
逻辑架构图及组件
服务管理 实现服务CRUD、域名CRUD、服务健康状态检查,服务权重管理等功能。
配置管理 实现配置管理CRUD,版本管理、灰度管理、监听管理、推送管理、聚合数据等功能
元数据管理 提供元数据CURD和打标能力
插件机制 实现三个模块可分可合能力,实现扩展SPI机制
事件机制 实现异步化事件通知,sdk数据变化异步通知等逻辑
日志模块 管理日志分类,日志级别,日志可移植性,日志格式,异常码+帮助文档
回调机制 sdk通知数据,通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性。
寻址模块 解决IP,域名,nameserver、广播等多种寻址模式、需要可扩展。
推送通道 解决server与存储、server间、server与sdk间推送问题
容量管理 管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性。
流量管理 按照租户,分组等多个维度对请求频率,长连接个数,报文大小,请求流控进行控制
缓存机制 容灾目录,本地缓存,server缓存机制。容灾目录需要使用工具
启动模式 按照单机模式,配置模式,服务模式下,dns模式或者all模式,启动不同的程序+UI
一致性协议 解决不通数据,不同一致性要求情况下,不同一致性机制
存储模块 解决数据持久化、非持久化存储,解决数据分片问题
nameserver 解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境映射问题
CMDB 解决元数据存储与三方cmdb系统对接问题,解决应用,人,资源关系
Metrics 暴露标准metrics数据,方便与三方监控系统打通
trace 暴露标准trace,方便与SLA系统打通,日志白平化,推送轨迹等能力,并且可以和计量计费系统打通
接入管理 相当于阿里云开通服务,分配身份、容量、权限过程
用户管理 解决用户管理,登录,sso等问题。
权限管理 解决身份识别,访问控制,角色管理等问题
审计系统 扩展接口方便与不同公司审计系统打通
通知系统 核心数据便更或者操作,方便通过SMS系统打通,通知到对应人数据变更
openAPI 暴露标准rest风格http接口,简单易用,方便多语言集成。
console 易用控制台,做服务管理、配置管理等操作。
SDK 多语言sdk
agent dns-f类似模式,或者与mesh等方案集成
CLI 命令行对产品进行轻量化管理,像git一样好用。
领域模型
数据模型
nacos 数据模型key由三元组唯一确定,namespace默认是空串,公共命名空间(public),分组默认是DEFAULT_GROUP
服务领域模型
配置领域模型
围绕配置,主要有两个关联的实体,一个是配置变更历史,一个是服务标签(用于打标签分类,方便索引),由ID关联。
类视图
nacos-sdk类视图
构建物部署以及启动模式
两种交付工件
nacos支持标准的docker镜像以及zip压缩的构建物
两种启动模式
nacos支持将注册中心于配置中心在一个进程合并部署或者将两者分离部署的两种模式。
免费的公有云服务模式
除了将部署和启动nacos服务外,在云计算时代,nacos也支持公有云模式,在阿里云共有云的商业产品中会提供nacos的免费的公有云服务。
安装
docker-compose方式安装
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install docker-compose -y
mkdir /usr/nacos
cd /usr/nacos
yum install -y git-1.8.3.1-23.el7_8.x86_64 docker-compose docker-ce
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker/
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://h8h8tgzq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker-compose -f example/standalone-mysql-8.yaml up -d
集群安装
nacos依赖Java环境来运行。如果是编译安装并运行nacos,还需要为此配置maven环境,版本要求如下
1、jdk1.8
2、maven3.2
3、centos7
IP地址
10.0.07 centos7 nacos msyql
10.0.0.8 centos7 nacos
10.0.0.9 centos7 nacos
说明:除了步骤5单独做以外,其他步骤三台节点都需要执行的
1、JDK安装部署
mkdir /app && cd /app
wget https://www-1259165587.cos.ap-nanjing.myqcloud.com/jdk-8u191-linux-x64.tar.gz
tar xf jdk-8u191-linux-x64.tar.gz
mv jdk-8u191-linux-x64.tar.gz /opt/
echo "JAVA_HOME=/app/jdk1.8.0_191">> /etc/profile
echo 'PATH=$JAVA_HOME/bin:$PATH'>> /etc/profile
echo 'CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar'>> /etc/profile
echo "export PATH JAVA_HOME CLASSPATH">> /etc/profile
source /etc/profile
java -version
oracle下载jdk的密码
17695691664@163.com
LiuShiYa111
2、maven部署安装
mkdir /app && cd /app
wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar xf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3-bin.tar.gz /opt/
echo 'export PATH=/app/apache-maven-3.6.3/bin:$PATH'>> /etc/profile
source /etc/profile
mvn -v
3、tar包方式安装
wget https://github.com/alibaba/nacos/releases/download/1.3.0/nacos-server-1.3.0.tar.gz
tar xf nacos-server-1.3.0.tar.gz
cd /app/nacos/bin/
4、编写配置文件
cat > /app/nacos/conf/application.properties <<EOF
server.servlet.contextPath=/nacos
server.port=8848
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://10.0.0.7:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=nacos
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.default.token.expire.seconds=18000
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.caching.enabled=true
nacos.istio.mcp.server.enabled=false
EOF
cat >/app/nacos/conf/cluster.conf<<EOF
10.0.0.7:8848
10.0.0.8:8848
10.0.0.9:8848
EOF
5、选择10.0.0.7台安装database
#获取安装包
cd /app
wget https://www-1259165587.cos.ap-nanjing.myqcloud.com/mysql-5.7.30-el7-x86_64.tar.gz
tar xf mysql-5.7.30-el7-x86_64.tar.gz
mv mysql-5.7.30-el7-x86_64 mysql
#修改环境变量
echo 'export PATH=/app/mysql/bin:$PATH'>> /etc/profile
source /etc/profile
mysql -V
#进行初始化
yum install -y libaio-devel
mkdir -p /app/mysql_data
useradd mysql -M -s /sbin/nologin
chown -R mysql.mysql /app/mysql_data
chown -R mysql.mysql /app/mysql
mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/app/mysql_data
>/etc/my.cnf
cat >/etc/my.cnf<<EOF
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/app/mysql_data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
#准备启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
systemctl start mysqld
systemctl enable mysqld
mysql
create database nacos;
use nacos;
grant all on nacos.* to 'nacos'@'10.0.0.%' identified by 'nacos';
select user,host from mysql.user;
source /app/nacos/conf/nacos-mysql.sql ;
exit
6、启动nacos并访问测试
sh /app/nacos/bin/startup.sh
http://10.0.0.7:8848/nacos/#/login
配置
application.properties
#*************** Spring Boot Related Configurations ***************#
### Default web context path:默认web上下文路径
server.servlet.contextPath=/nacos
### Default web server port:默认web服务器端口
server.port=8848
#*************** Network Related Configurations ***************# 网络相关配置
### If prefer hostname over ip for Nacos server addresses in cluster.conf:集群中Nacos服务器地址的主机名是否优先于ip
# nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:指定本地服务器的IP
# nacos.inetutils.ip-address=
#*************** Config Module Related Configurations ***************#配置模块相关配置
### If user MySQL as datasource:如果用户MySQL作为数据源
# spring.datasource.platform=mysql
### Count of DB:
# db.num=1
### Connect URL of DB:
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user=nacos
# db.password=nacos
#*************** Naming Module Related Configurations ***************#命名模块相关配置
### Data dispatch task execution period in milliseconds:数据调度任务执行周期(毫秒)
# nacos.naming.distro.taskDispatchPeriod=200
### Data count of batch sync task:批量同步任务的数据计数
# nacos.naming.distro.batchSyncKeyCount=1000
### Retry delay in milliseconds if sync task failed:同步任务失败时的重试延迟(毫秒)
# nacos.naming.distro.syncRetryDelay=5000
### If enable data warmup. If set to false, the server would accept request without local data preparation:如果启用数据预热。如果设置为false,服务器将在不准备本地数据的情况下接受请求
# nacos.naming.data.warmup=true
### If enable the instance auto expiration, kind like of health check of instance:如果启用了实例自动过期,类似于实例的健康检查
# nacos.naming.expireInstance=true
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
#*************** CMDB Module Related Configurations ***************#模块相关配置
### The interval to dump external CMDB in seconds:转储外部CMDB的间隔(以秒为单位)
# nacos.cmdb.dumpTaskInterval=3600
### The interval of polling data change event in seconds:轮询数据更改事件的间隔(秒)
# nacos.cmdb.eventTaskInterval=10
### The interval of loading labels in seconds:加载标签的间隔(秒)
# nacos.cmdb.labelTaskInterval=300
### If turn on data loading task:如果打开数据加载任务
# nacos.cmdb.loadDataAtStart=false
#*************** Metrics Related Configurations ***************#指标相关配置
### Metrics for prometheus 普罗米修斯的度量
#management.endpoints.web.exposure.include=*
### Metrics for elastic search elasticsearch的度量
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200
### Metrics for influx influxdb数据库的度量
management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true
#*************** Access Log Related Configurations ***************#访问日志相关配置
### If turn on the access log:如果打开访问日志
server.tomcat.accesslog.enabled=true
### The access log pattern:访问日志模式
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
### The directory of access log:访问日志目录
server.tomcat.basedir=
#*************** Access Control Related Configurations ***************#访问控制相关配置
### If enable spring security, this option is deprecated in 1.2.0:如果启用springsecurity,则在1.2.0中不推荐使用此选项
#spring.security.enabled=false
### The ignore urls of auth, is deprecated in 1.2.0:在1.2.0中,已弃用auth的ignore url
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
### The auth system to use, currently only 'nacos' is supported:要使用的身份验证系统,当前仅支持“nacos”
nacos.core.auth.system.type=nacos
### If turn on auth system:如果打开身份验证系统
nacos.core.auth.enabled=false
### The token expiration in seconds:令牌过期时间(秒)
nacos.core.auth.default.token.expire.seconds=18000
### The default token:默认令牌
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.打开/关闭身份验证信息的缓存。打开此开关,身份验证信息的更新将延迟15秒
nacos.core.auth.caching.enabled=true
#*************** Istio Related Configurations ***************#Istio相关配置
### If turn on the MCP server:如果打开MCP服务器
nacos.istio.mcp.server.enabled=false
###*************** Add from 1.3.0 ***************###
#*************** Core Related Configurations ***************#核心相关配置
### set the WorkerID manually手动设置WorkerID
# nacos.core.snowflake.worker-id=
### Member-MetaData成员元数据
# nacos.core.member.meta.site=
# nacos.core.member.meta.adweight=
# nacos.core.member.meta.weight=
### MemberLookup看
### Addressing pattern category, If set, the priority is highest寻址模式类别,如果设置,优先级最高
# nacos.core.member.lookup.type=[file,address-server,discovery]
## Set the cluster list with a configuration file or command-line argument使用配置文件或命令行参数设置群集列表
# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
## for DiscoveryMemberLookup为了发现
# If you want to use cluster node self-discovery, turn this parameter on 如果要使用群集节点自我发现,请启用此参数
# nacos.member.discovery=false
## for AddressServerMemberLookup用于AddressServerMemberLookup
# Maximum number of retries to query the address server upon initialization初始化时查询地址服务器的最大重试次数
# nacos.core.address-server.retry=5
#*************** JRaft Related Configurations ***************#JRaft相关配置
### Sets the Raft cluster election timeout, default value is 5 second设置Raft群集选择超时,默认值为5秒
# nacos.core.protocol.raft.data.election_timeout_ms=5000
### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute设置Raft快照将定期执行的时间量,默认值为30分钟
# nacos.core.protocol.raft.data.snapshot_interval_secs=30
### Requested retries, default value is 1请求重试,默认值为1
# nacos.core.protocol.raft.data.request_failoverRetries=1
### raft internal worker threads
# nacos.core.protocol.raft.data.core_thread_num=8
### Number of threads required for raft business request processing raft业务请求处理所需的线程数
# nacos.core.protocol.raft.data.cli_service_thread_num=4
### raft linear read strategy, defaults to index raft线性读取策略,默认为索引
# nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
### rpc request timeout, default 5 seconds rpc请求超时,默认为5秒
# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000