Nacos
1. Nacos是什么?
https://nacos.io/
官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。
集 注册中心+配置中心+服务管理 平台
Nacos 的关键特性包括:
-
服务发现和服务健康监测
-
动态配置服务
-
动态 DNS 服务
-
服务及其元数据管理
2.服务注册中心
注册应用到服务注册中心,(114平台)管理所有微服务、解决微服务之间调用关系错综复杂、难以维护的问题;
2.1核心功能:
服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。
服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。
服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raft
服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存
服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)
2.2市面上注册中心
CAP原则(Consistency, Availability, Partition Tolerance)是分布式系统设计中一个非常重要的理论,由Eric Brewer在2000年提出,并在2002年被Seth Gilbert和Nancy Lynch证明为分布式计算领域的基本定理。CAP原则阐述了在设计分布式系统时需要在这三个核心属性之间做出权衡:
一致性(Consistency): 指的是任何读操作都能读取到之前已完成的写操作的最新结果,即系统维护数据的一致状态。强一致性要求所有节点在同一时刻看到的数据完全相同。
可用性(Availability): 指的是每一个请求都能在有限的时间内得到响应,无论这个响应是成功还是失败。高可用性系统能够持续处理请求,即使在部分节点失败的情况下也是如此。
分区容错性(Partition tolerance): 指的是尽管网络可能因为各种原因(如网络故障、断电等)被分割成多个独立的小区域,系统仍能继续运行。在分布式系统中,由于网络问题导致的分区几乎是不可避免的。
CAP原则的核心观点是,在一个分布式系统中,由于网络分区(Partition)是可能且必须被考虑进去的现实情况,因此设计者不能同时保证强一致性(Consistency)和高可用性(Availability);在出现网络分区的情况下,系统必须在C和A之间做出选择。因此,实际的分布式系统设计往往围绕CP(一致性与分区容错性)、AP(可用性与分区容错性)或某种弱化一致性模型下的CA(尝试接近一致性和可用性,但需牺牲在分区情况下的某些保证)来展开。实际上,由于现代互联网的特性,大多数分布式系统倾向于选择AP,以保证服务的高可用性,然后通过最终一致性或其他较弱的一致性模型来实现一定程度上的数据一致性。

3.安装
3.1 Docker 安装
docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:1.4.1
3.2 Docker + MySql


# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:""}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
db.url.0=jdbc:mysql://2388.e31.luyouxia.net:14145/nacos?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowMultiQueries=true
db.user=root
db.password=123456
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### The token expiration in seconds:
nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
# default current work dir
server.tomcat.basedir=
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
换成自己的SQL
docker run --name nacos -d -p 8848:8848 --privileged=true --restart=always -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /opt/nacos/logs:/home/nacos/logs -e SPRING_DATASOURCE_PLATFORM=mysql -v /opt/nacos/conf/application.properties:/home/nacos/conf/application.properties -v /opt/nacos/data:/home/nacos/data nacos/nacos-server:1.4.1
3.3访问管理页面
访问nacos的管理端:http://127.0.0.1:8848/nacos ,默认的用户名密码是 nacos/nacos

3.4集群模式(扩展)

4.版本关系

3589

被折叠的 条评论
为什么被折叠?



