八卦阵 发表于 2024-9-4 19:03:36

组件Nacos,MAC怎样启动Nacos,目录Nacos组件简介 怎样改变Linux的java版本



目录

Nacos组件简介 
怎样改变Linux的java版本(Nacos要看一下对应的java版本是否精确)
Eureka和Nacos区别
使用Nacos怎样完成服务发现和服务注册

Nacos的健康检查
Nacos环境隔离
Nacos的设置中央
Error creating bean with name 'distroFilterRegistration' defined in class path resource : 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宣布开源,并且快速称为国内最受关注的开源产品
https://img-blog.csdnimg.cn/direct/5f852164028d4c7fa3010704f55e0310.png
Nacos选择进行三个内部产品合并同一开源(Configserver非持久注册中央,VIPServer持久化注册中央,Diamond设置中央)
https://img-blog.csdnimg.cn/direct/cc778c865bbd45e3ab33001bb4b6da53.png
   bin里面放起停脚本,conf设置文件,target放Nacos运行须要的jar包。
cmd是windows,sh是Linux系统https://img-blog.csdnimg.cn/direct/13b2cac659d44ff89178c6bbdb538d8a.png
点击startup.cmd
Nacos的启动模式默认是集群模式,穷屌丝没有集群,以是修改文件修改成单机模式。
https://img-blog.csdnimg.cn/direct/ee99990105234fdfbfc5fb2811c47080.png

   起首我们须要进入目录
cd  Nacos整个文件夹拖动过来
然后cd bin
然后sh startup.sh,下面两句就成啦
https://img-blog.csdnimg.cn/direct/a43ae948609e4be0a9863d8a3c2991fb.png
输入这个,如果成了,你会看到以下图片http://127.0.0.1:8848/nacos
https://img-blog.csdnimg.cn/direct/be0f4e836af24ce9b574fc09c32510af.png
常见问题
   1.集群模式启动
2.端口启动冲突
ps aux | grep 8848      查看端标语的历程,然后进行不同历程的删除
把压缩包放到这个linux里面,然后解压
https://img-blog.csdnimg.cn/direct/5702e672b7da4e6fb00e9c0fc4ad57a1.png
unzip nacos.zip        --解压压缩包

bash startup.sh -m standalone          Ubuntun系统启动方式,在bin目录下(使用了单机模式)
怎样改变Linux的java版本(Nacos要看一下对应的java版本是否精确)

sudo update-alternatives --config java https://img-blog.csdnimg.cn/direct/6ef68ebe1992476285129ab3e9e4e630.png
选择你想要的数字即可
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的申请https://img-blog.csdnimg.cn/direct/2b814c418d0d4dabac361667550b2425.png
https://img-blog.csdnimg.cn/direct/78bac9c9685a4c6eb2bde2adf127af47.png
服务虽然下线了,但是他照旧运行的状态,只不外你放到注册中央,他会不给他发送请求。
https://img-blog.csdnimg.cn/direct/d9ca1d6e547b48a2af9cec911ddc2408.png
针对分配权重,但是现实上分配不见效的问题,如果不支持,如果spring Cloud Alibaba,此类框架仅识别流量值为0,和非0,并不按照Nacos实例中的流量值进行负载均衡 
   https://img-blog.csdnimg.cn/direct/7f6225dfecfb474b9c34c72771fc8b5d.png
只须要在yml文件spring cloud  下面引入下列代码即可。
loadbalancer:
      nacos:
      enabled: true 此时我发了十个请求左右,9092只收到了1个,别的是比力多https://img-blog.csdnimg.cn/direct/a0c3283d800e4d5d9834dea8f9fa2f04.png
https://img-blog.csdnimg.cn/direct/8ac7742ae01e45d4ab888988ed8eb908.png


Nacos的同集群优先访问。
   一个公司有多个机房,如果北京和上海,都有机房的话https://img-blog.csdnimg.cn/direct/4f0f4e2df1c14d429cfb706f487d2e06.png
https://img-blog.csdnimg.cn/direct/066d3c1098f34697bbde7c6193abe775.png
https://img-blog.csdnimg.cn/direct/7bf2d9ca68004abfb567afcb2960bbe4.png
我们订单服务设置的是在北京,我们希望它尽可能的去访问北京
https://img-blog.csdnimg.cn/direct/deac9bc754724a76b5e321a243bcdecb.png
我们可以发现在这块,下面的两个上海哥,没有一点请求,我们京爷一人单吃十条数据。https://img-blog.csdnimg.cn/direct/ca9288a06c9149bf8348df42eeae823c.png

https://img-blog.csdnimg.cn/direct/3c9baabf8a8d4ad693c2e84410ecaad9.png
   在这里我们对9090的北京✌️进行了下线,服务就去找我们的两个上海爷了。https://img-blog.csdnimg.cn/direct/2e21def528eb42b3b5309eb6a4ef6323.png
这个负载均衡,我们设置集群之前的权重已经做了,以是不消管。
loadbalancer:
      nacos:
      enabled: true   Nacos负载均衡:
1.服务上线/下线
2.服务设置权重
3.同集群优先访问             ——要开启Nacos的负载均衡
Nacos的健康检查

   Nacos作为注册中央,须要感知服务的健康状态,才气为服务调用方提供精良的服务
Nacos中提供了两种健康检查机制
1.客户端自动上报机制
客户端通过心跳上报方式,告知服务端(nacos注册中央)健康状态,默认心跳间隔5s
nacos会在超过15s未收到心跳后,将实例设置为不健康状态,超过30s将实例给删除
服务器端反向探测机制
nacos自动探知客户端健康状态,默认间隔时间为20s
健康检查失败后,实例会被标志为不健康,不会被立刻删除
https://img-blog.csdnimg.cn/direct/91c3953649bc4ebe8b556dd7f653d8c2.png
Nacos服务实例类型
1.暂时实例:如果实例宕机超过肯定时间,会从服务列表剔除,默认类型
2.非暂时实例,如果实例宕机,不会从服务列表删除,也可以叫永久实例
Nacos对暂时实例,采取的是客户端自动上报机制,对非暂时实例,采取服务器端反向探测机制。https://img-blog.csdnimg.cn/direct/2f6eb73c67c540e79e2d262a433b1c21.png
我们可以看当,Nacos当前是所有的都是暂时实例
https://img-blog.csdnimg.cn/direct/183cb6d03d374270b9e547ebf7693373.png
此时我们对yml,文件进行修改,想把他定位非暂时实例,再次运行,但是却发现,报错,大要信息就是,Nacos会保存暂时实例,暂时实例不可以修改成非暂时实例
https://img-blog.csdnimg.cn/direct/98652c7537e34c219b2f33c8f424f72b.png
如果你之前已经去nacos里面,把data目录里的,protocol目录删除,那你不会爆这个错误,如果报错,那么去吧这个目录删除了。
我们点开发现,暂时实例变成了false。https://img-blog.csdnimg.cn/direct/b9f0eda214264f0893d0a4ac724d267d.pnghttps://img-blog.csdnimg.cn/direct/fa4a51f493364435adf92e0182bfd113.png
服务节点,默认为暂时实例,暂时实例,采用客户端自动上报,非暂时实例采用的是服务器反向探测。
Nacos环境隔离

   1.开发环境
2.测试环境
3.预发布环境
4.发布环境
通常环境下,设置,数据库都是一样的,区别就是:预发布环境不对外,发布环境对外,外面的用户可以访问到。
订单服务                 商品服务
开发环境的服务,只能访问开发环境的服务,在这里面,增长一个namespace
他的后面的谁人数字来自于这块的下令空间的IDhttps://img-blog.csdnimg.cn/direct/49658ec987a54002ab043ac759913465.png
https://img-blog.csdnimg.cn/direct/14245a222add4dbd8818856378ad6d4b.png
这个点dev 列表下就放这两个服务。https://img-blog.csdnimg.cn/direct/85b1a9d8a15147c8b5887fde6b3c9ace.png
Nacos的设置中央

   当前项目的设置都在代码中,会存在以下问题
1.设置文件修改的时间,服务须要重新部署,微服务架构中,一个服务可能有成百个实例,挨个部署比力贫困,并且容易出错。
2.多人开发时,设置文件可能须要经常修改,使用同一个设置文件容易冲突
设置中央就是对这些设置项进行同一管理,通过设置中央,可以集中查看,修改,和删除设置,无需再逐个修改设置文件,进步效率的同时,也低落了出错的风险。
1.添加设置
2.引入依赖
3.修改设置文件
注意,服务管理的命名空间不即是设置文件的命名空间。我们须要单独设置设置文件的命名空间。https://img-blog.csdnimg.cn/direct/4d20ef1432964e7c85765eea87a1faee.png
https://img-blog.csdnimg.cn/direct/ccda92d91bad481eb92e0845f2f631d7.png
这个里面的id要求和应用名保持一致。
https://img-blog.csdnimg.cn/direct/a26f3772c76240738b5b5641bd1799f2.png

https://img-blog.csdnimg.cn/direct/84a824a9a3b946b1b5f38832f91ee69e.png
   https://img-blog.csdnimg.cn/direct/dd70042529f64e9dbd8defa2be59ae7d.png当我们想切换的时间,就在这个bootstrap.yml里面加上namespace:上面有复制
https://img-blog.csdnimg.cn/direct/e0d8c4294b7043bc80b17474047168c0.png

   看下面,我们可以看到很多的listener,还监听了这些文件,如果这三个文件全部设置,那么优先级是哪个最先呢?,第一个起首拼接出来的是name,其次是active(dev),最后是properties
https://img-blog.csdnimg.cn/direct/11e59e6420fd4884bdcb372852427a5a.png
   https://img-blog.csdnimg.cn/direct/855c7702808e4298879130c89fdf39e8.png我们可以观察到,这个优先级是最高的,上一个是次高,我们发现,可能越精细,他就越优先?
https://img-blog.csdnimg.cn/direct/251be9f51b6b403eb3f1c29ba576af45.png
Error creating bean with name 'distroFilterRegistration' defined in class path resource : Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 

   在这里我想把订单服务和商品服务放到Linux服务器上,由于我之前设置order-service为非暂时实例,然后我给他注释掉了,此时我再次申请,它变成了暂时服务,然后此时就会报错,因为你的protocol/,它记载着这个实例,此时你须要把这个实例删除,然后再重启服务,(那么我们怎样删除实例呢,我们在nacos删除会报错,然后就算把里面的实例下线之后,也会报错),以是我们从本质出发,删除Linux系统里面的protocol/即可。https://img-blog.csdnimg.cn/direct/fa61576e3a194a22a2e93fda592e569a.png
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:基于推送模式,服务列表有变革,及时推送给订阅者,服务端和客户端保持心跳连接。(当移除了一个节点,就会及时推送)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 组件Nacos,MAC怎样启动Nacos,目录Nacos组件简介 怎样改变Linux的java版本