提示网站正在建设中lcms是什么意思
目录
认识和安装Nacos
启动方式
Nacos快速入门
提示
Nacos服务分级存储模型
服务跨集群调用问题
管理端设置策略
总结
Nacos环境隔离
如何创建
使用方式
编辑
总结
Nacos注册中心分析
临时实例和非临时实例
定义
配置方式
总结
认识和安装Nacos
Nacos是SpringCloud的一个组件,比Eureka功能更丰富一些
下载地址 :Releases · alibaba/nacos · GitHub
启动方式
打开bin目录,在该路径下打开cmd,输入命令
startup.cmd -m standalone
这种是以非集群式启动,因为我们还没有涉及到集群式服务启动。
如果想以集群式启动的话,直接双击startup.cmd就可以。
关闭双击shutdown.cmd就可以。
Nacos快速入门
在父项目的pom.xml文件中添加依赖:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency>
对于消费者和提供者所在的服务的pom.xml,因为Nacos和Eureka都是注册中心,所以说我们需要注释掉Eureka的依赖(如果有的话)。
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
按照springboot的老套路来说,添加完依赖后,我们就需要去修改或application.yml。
还是先注释掉以前的Eureka的配置(如果有的话),然后在spring的节点下加入
cloud:nacos:server-addr: localhost:8848
端口根据你的实际情况修改
启动Nacos时这里就可以看到你的版本、端口号、pid,ctrl+网址就可以直接跳转到你的注册中心管理端,账号和密码默认都是nacos。
ok,依赖和配置都完成后我们就可以启动项目了,接口功能也都是可以实现的。主要就是你观察管理端的信息。
提示
这里的版本我们都是要对应的,版本不兼容是不可以启动的,我给大家罗列出来。
spring-boot和spring-cloud的关系和spring-cloud-alibaba的关系和nacos的关系
这里呢,你就可以完全避免版本不兼容的问题的,如果想升级的话参照也是完全ok的。
Nacos服务分级存储模型
服务跨集群调用问题
服务调用尽可能选择本地集群的服务,跨集群调用比较费时;
本地集群不可访问时,再去访问其他集群。
在application.yml中配置起来也非常简单,在消费者和提供者中都要配置,因为要确保服务者和提供者在同一集群。
nacos:server-addr: localhost:8848discovery:cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州
就是比之前的多了两行而已,服务集群的名称要你自定义。
重启服务你就可以在Nacos的管理端发现变化了。
这里比Eureka好的是它可以直观的观察到每台服务器的ip地址。
同时我们还可以根据集群名称设置负载均衡
userservice:ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
这里的负载均衡规则会优先寻找与自己同集群的提供者服务。
管理端设置策略
管理端可以设置每个服务实例的权重,权重越大,被选择到的概率就越大。出现该策略的原因是每个机器的运行速度不一样,让好的机器承担更多的访问。
总结
一级:提供者的服务。
二级:集群的名称。
三级:集群中部署了该服务的物理服务器。
负载均衡策略
优先选择同集群服务实例列表
找不到提供者,才会去其他集群寻找,并且发出警告
先确认集群中的实例列表,再根据负载均衡策略选择具体的实例
权重策略
值在0~1之间
权重越大,概率越大
0的话就不会被访问
Nacos环境隔离
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离
如何创建
用来隔离不同环境
创建成功这里是可以看到的
使用方式
对于你的消费者服务,在你的配置文件中添加一行就可以
总结
每个namespace都有一个唯一的ID,除了默认的public
配置文件中的namespace属性设置的是ID,而不是名称
不同namespace下的服务不可见,也就是说刚才你修改后就获取不到提供者的服务了。
Nacos注册中心分析
临时实例和非临时实例
定义
临时实例(即服务)宕机或者下线时,会被nacos从服务列表中删除,而非临时实例依旧会存在。
服务默认就是临时实例
配置方式
cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州ephemeral: false #代表非临时实例
总结
nacos和eureka共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
区别
nacos服务端临时实例采用心跳模式,非临时实例采用主动检测模式
nacos支持服务列表变更的消息推送模式,服务列表更新及时
nacos集群默认使用AP方式,存在非临时实例,采用CP模式,Eureka采用的是AP模式。