Nacos入门

1.安装nacos

 链接:https://pan.baidu.com/s/1ya4JafcksxADgr39Ibw8kA?pwd=emgq 
提取码:emgq

 解压完,在bin里面双击startup.cmd启动。

2.nacos入门

服务注册到nacos步骤:

1.cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖:

<dependency>
    <
groupId>com.alibaba.cloud</groupId>
    <
artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <
version>2.2.6.RELEASE</version>
    <
type>pom</type>
    <
scope>import</scope>
</
dependency>

2.添加nacos的客户端依赖

<!-- nacos客户端依赖 -->
<dependency>
    <
groupId>com.alibaba.cloud</groupId>
    <
artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</
dependency>

3.在application.yml文件添加nacos地址:

spring:      
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos服务地址

4.启动nacos,浏览器输入nacos地址

 5.用户名和密码

用户名:nacos

密码:    nacos 

6.服务列表查看启动并注册的服务 



3.服务分集存储

nacos中有一个集群的概念,集群就是多台机器干相同的事。比如说厨房中,多个洗菜的可以叫集群,多个切菜的也可以叫集群。

服务调用尽可能选择本地集群的服务,跨集群调用延迟较高,本地集群不可访问时,再去访问其它集群。

nacos默认是只有一个集群的,可以修改application.yml添加下面内容来修改集群

spring:
 
cloud:
   
nacos:
     
server-addr: localhost:8848 # nacos服务端地址
     
discovery:
       
cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州

 nacos默认是随机访问集群的,可以修改application.yml添加下面内容来优先找本地集群服务

1.设置集群名

spring:
 
cloud:
   
nacos:
     
server-addr: localhost:8848 # nacos服务端地址
     
discovery:
       
cluster-name: HZ #配置集群名称,也就是机房位置

2.设置负载均衡的IRuleNacosRule,这个规则优先会寻找与自己同集群的服务

userservice:
 
ribbon:
   
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则  

Nacos会优先选择同集群服务实例列表,本地集群找不到提供者,才去其它集群寻找,并且会报警告,确定了可用实例列表后,再采用随机负载均衡挑选实例


4.集群负载均衡策略

实际部署中会出现这样的场景:

服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。

权重越小被访问的频率越小,也是有可能访问到的。当权重为0时,就不会被访问,可以通过修改权重实现热部署(无需停机重启)。 

5.环境隔离

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离,不同隔离直接无法访问,只有在同一个命名空间的服务才可以相互访问。

 

 设置某个服务在这个环境中,在application.yml配置

cloud:
   
nacos:
     
server-addr: localhost:8848
     
discovery:
       
cluster-name: HZ #配置集群名称,也就是机房位置
       
namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 #命名空间,填ID

 在不同环境中,两个服务相互调用控制台会报下面错误

 

6.临时实例和非临时实例 

服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面的配置来设置:

spring:
 
cloud:
   
nacos:
      discovery:
        ephemeral: false # 设置为非临时实例  临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会

nacos和eureka的区别:

1. Nacos eureka 的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
2. Nacos Eureka 的区别
Nacos 支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos 支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos 集群默认采用 AP 方式,当集群中存在非临时实例时,采用 CP 模式; Eureka 采用 AP 方式

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要取得Nacos配置中心中的List类型配置,需要使用Nacos提供的Java SDK,具体步骤如下: 1. 引入Nacos Java SDK的依赖,可以在Maven中添加如下依赖: ```xml <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos.version}</version> </dependency> ``` 2. 在代码中使用Nacos SDK获取配置,示例代码如下: ```java import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; import java.util.List; import java.util.Properties; import java.util.concurrent.Executor; public class NacosConfigExample { public static void main(String[] args) throws NacosException { String serverAddr = "localhost:8848"; // Nacos服务地址 String dataId = "example"; // 配置ID String group = "DEFAULT_GROUP"; // 配置分组 Properties properties = new Properties(); properties.put("serverAddr", serverAddr); ConfigService configService = NacosFactory.createConfigService(properties); String content = configService.getConfig(dataId, group, 5000); // 获取配置内容,超时时间为5000ms // 将List类型的配置转换为List对象 List<String> list = Arrays.asList(content.split(",")); // 监听配置变化 configService.addListener(dataId, group, new Listener() { @Override public void receiveConfigInfo(String configInfo) { // 配置变化后的处理逻辑 List<String> list = Arrays.asList(configInfo.split(",")); // ... } @Override public Executor getExecutor() { return null; } }); } } ``` 在获取配置之后,可以将List类型的配置内容转换为List对象进行处理。同时,可以使用addListener方法监听配置的变化,当配置发生变化时,会触发Listener中的回调函数,从而进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值