组件Nacos,MAC如何启动Nacos,目录Nacos组件简介 如何改变Linux的java版本(Nacos要看一下对应的java版本是否正确)Eureka和Nacos区别使用N

目录

Nacos组件简介 

如何改变Linux的java版本(Nacos要看一下对应的java版本是否正确)

Eureka和Nacos区别

使用Nacos如何完成服务发现和服务注册

Nacos的健康检查

Nacos环境隔离

Nacos的配置中心

Error creating bean with name 'distroFilterRegistration' defined in class path resource [com/alibaba/nacos/naming/web/NamingConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 

Nacos和Eureka区别


Nacos组件简介 

2018年Eureka2.0宣布闭源(但是1.x仍旧为活跃项目),同年的7月份,阿里Nacos宣布开源,并且快速称为国内最受关注的开源产品

Nacos选择进行三个内部产品合并统一开源(Configserver非持久注册中心,VIPServer持久化注册中心,Diamond配置中心)

bin里面放起停脚本,conf配置文件,target放Nacos运行需要的jar包。

cmd是windows,sh是Linux系统

点击startup.cmd

Nacos的启动模式默认是集群模式,穷屌丝没有集群,所以修改文件修改成单机模式。

首先我们需要进入目录

cd  Nacos整个文件夹拖动过来

然后cd bin

然后sh startup.sh,下面两句就成啦

输入这个,假如成了,你会看到以下图片http://127.0.0.1:8848/nacos

常见问题

1.集群模式启动

2.端口启动冲突

ps aux | grep 8848      查看端口号的进程,然后进行不同进程的删除

把压缩包放到这个linux里面,然后解压

unzip nacos.zip        --解压压缩包

bash startup.sh -m standalone          Ubuntun系统启动方式,在bin目录下(使用了单机模式)

如何改变Linux的java版本(Nacos要看一下对应的java版本是否正确)

sudo update-alternatives --config java

选择你想要的数字即可

Eureka和Nacos区别

Eureka需要自己搭建一个服务,Nacos不需要自己搭建服务,组件已经准备好了,只需要我们启动即可(类似于tomcat)

使用Nacos如何完成服务发现和服务注册

1.引入spring-cloud-alibaba的依赖

2.引入Nacos相关的依赖

3.修改配置

4.远程调用

5.测试

启动Linux系统的

bash startup.sh -m standalone

当我们的应用针对9092下线了之后,发现只有9090,9091收到order的申请

服务虽然下线了,但是他还是运行的状态,只不过你放到注册中心,他会不给他发送请求。

针对分配权重,但是实际上分配不生效的问题,如果不支持,如果spring Cloud Alibaba,此类框架仅识别流量值为0,和非0,并不按照Nacos实例中的流量值进行负载均衡 

只需要在yml文件spring cloud  下面引入下列代码即可。

 loadbalancer:
      nacos:
        enabled: true

此时我发了十个请求左右,9092只收到了1个,其余是比较多

Nacos的同集群优先访问。

一个公司有多个机房,假如北京和上海,都有机房的话

我们订单服务设置的是在北京,我们希望它尽可能的去访问北京

我们可以发现在这块,下面的两个上海哥,没有一点请求,我们京爷一人单吃十条数据。

在这里我们对9090的北京✌️进行了下线,服务就去找我们的两个上海爷了。

这个负载均衡,我们配置集群之前的权重已经做了,所以不用管。

 loadbalancer:
      nacos:
        enabled: true

Nacos负载均衡:

1.服务上线/下线

2.服务配置权重

3.同集群优先访问             ——要开启Nacos的负载均衡

Nacos的健康检查

Nacos作为注册中心,需要感知服务的健康状态,才能为服务调用方提供良好的服务

Nacos中提供了两种健康检查机制

1.客户端主动上报机制

客户端通过心跳上报方式,告知服务端(nacos注册中心)健康状态,默认心跳间隔5s

nacos会在超过15s未收到心跳后,将实例设置为不健康状态,超过30s将实例给删除

服务器端反向探测机制

nacos主动探知客户端健康状态,默认间隔时间为20s

健康检查失败后,实例会被标记为不健康,不会被立即删除

Nacos服务实例类型

1.临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认类型

2.非临时实例,如果实例宕机,不会从服务列表删除,也可以叫永久实例

Nacos对临时实例,采取的是客户端主动上报机制,对非临时实例,采取服务器端反向探测机制。

我们可以看当,Nacos当前是所有的都是临时实例

此时我们对yml,文件进行修改,想把他定位非临时实例,再次运行,可是却发现,报错,大体信息就是,Nacos会保存临时实例,临时实例不可以修改成非临时实例

如果你之前已经去nacos里面,把data目录里的,protocol目录删除,那你不会爆这个错误,假如报错,那么去吧这个目录删除了。

我们点开发现,临时实例变成了false。

服务节点,默认为临时实例,临时实例,采用客户端主动上报,非临时实例采用的是服务器反向探测。

Nacos环境隔离

1.开发环境

2.测试环境

3.预发布环境

4.发布环境

通常情况下,配置,数据库都是一样的,区别就是:预发布环境不对外,发布环境对外,外面的用户可以访问到。

订单服务                 商品服务

开发环境的服务,只能访问开发环境的服务,在这里面,增加一个namespace

他的后面的那个数字来自于这块的命令空间的ID

这个点dev 列表下就放这两个服务。

Nacos的配置中心

当前项目的配置都在代码中,会存在以下问题

1.配置文件修改的时候,服务需要重新部署,微服务架构中,一个服务可能有成百个实例,挨个部署比较麻烦,并且容易出错。

2.多人开发时,配置文件可能需要经常修改,使用同一个配置文件容易冲突

配置中心就是对这些配置项进行统一管理,通过配置中心,可以集中查看,修改,和删除配置,无需再逐个修改配置文件,提高效率的同时,也降低了出错的风险。

1.添加配置

2.引入依赖

3.修改配置文件

注意,服务管理的命名空间不等于配置文件的命名空间。我们需要单独设置配置文件的命名空间。

这个里面的id要求和应用名保持一致。

当我们想切换的时候,就在这个bootstrap.yml里面加上namespace:上面有复制

看下面,我们可以看到很多的listener,还监听了这些文件,如果这三个文件全部配置,那么优先级是哪个最先呢?,第一个首先拼接出来的是name,其次是active(dev),最后是properties

我们可以观察到,这个优先级是最高的,上一个是次高,我们发现,可能越精细,他就越优先?

Error creating bean with name 'distroFilterRegistration' defined in class path resource [com/alibaba/nacos/naming/web/NamingConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 

在这里我想把订单服务和商品服务放到Linux服务器上,由于我之前设置order-service为非临时实例,然后我给他注释掉了,此时我再次申请,它变成了临时服务,然后此时就会报错,因为你的protocol/,它记录着这个实例,此时你需要把这个实例删除,然后再重启服务,(那么我们如何删除实例呢,我们在nacos删除会报错,然后就算把里面的实例下线之后,也会报错),所以我们从本质出发,删除Linux系统里面的protocol/即可。

Nacos和Eureka区别

1.Nacos除了服务发现和注册以外,还提供了配置中心,流量管理和DNS服务等功能

2.CAP理论

 Eureka遵循AP原则,Nacos可以切换AP和CP,Nacos根据识别CP或者AP的模式,如果注册Nacos的Client的节点是临时节点,那么Nacos对这个Client节点的效果就是AP,反之就是CP,AP和CP可以混合存在

3.服务发现

Eureka:基于拉模式,Eureka Client会定期从Server拉取服务信息,有缓存,默认每30s拉取一次。

Nacos:基于推送模式,服务列表有变化,实时推送给订阅者,服务端和客户端保持心跳连接。(当移除了一个节点,就会实时推送)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗哥不是甜妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值