| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Nacos注册中心 -> 正文阅读 |
|
[Java知识库]Nacos注册中心 |
目录 2.分别在具体环境的配置文件和全局环境配置文件中增加属性配置 3.在配置类中将这些新属性注入,并在控制器中获取json数据,看谁优先级更高
里面可以对服务进行注册与发现 对于EureKa的改动,我们需要修改依赖,并且注释原本在order-service以及user-service服务中的原有的EureKa-client依赖,并添加nacos依赖
1.首先在父工程中导入alibaba的cloud依赖
2.然后在服务项目中配置Nacos注册依赖(注册发现服务的依赖)
3.在yaml中进行配置,配置映射,服务名称,以及对应的Nacos服务端口
引:为了给服务减轻压力,我们可以给服务的实例们(8081、8082...)配置集群->长沙集群,上海集群等等...? 给服务实例配置集群 1.修改yaml文件,给Nacos的配置加上cluster节点名称即可
?2.然后给对应的实例进行启动即可,(不要启动错了,不然会覆盖之前的集群名称) 集群调用问题: 服务调用尽可能选择本地集群的服务,不然延迟会很高
步骤: 在yaml文件中对需要调用服务采用Nacos负载均衡策略,然后重启即可
?策略:优先本地集群,如果没有的话,就随机; 如果没有本地集群,说明只能跨集群调用服务——>(耗时较长,毕竟调用的服务在另一个地方),会出现警告?
? 直接在Nacos页面对服务实例修改权重即可
在产品更新时,我们可以对一个服务实例的权重降到很低,那么用户请求就很难请求到这个服务上了,那么我们就可以对其进行升级,升级完毕后,再将权重慢慢调大,这样就可以满足用户,也可以满足服务;?
没设置命名空间的时候,默认是public; 如果环境设置不一样,那么服务之间就不能进行访问;(实例找不到->也就是userservice服务实例); 每个namespace的id是唯一的; 配置方法: 1.在yaml配置文件加上namespace命名空间即可(先得在Nacos中创建环境)
?共同:它们都是向注册中心拉取服务信息,但是第一次会将服务信息放到服务的列表缓存中,下次拉取就直接从服务列表缓存中拿就行了,速度较快; ?Nacos: 临时实例:采用心跳检测,服务实例主动向注册中心汇报自己饿的情况(这里Nacos和EureKa都差不多,但是Nacos速度较快);——>如果服务消费者想要知道提供者服务是否挂了,得自己去向注册中心拉取服务才知道; 非临时实例:*Nacos会主动询问实例是否还存在(如果不存在)——>Nacos注册中心会立即主动推送变更消息:效率非常高;——>坏处:服务器压力会大,因为总是对服务进行访问 ?区别: Nacos支持服务端主动检测服务提供者状态:临时实例采用心跳模式,非临时实例采用服务器主动访问模式; 临时实例心跳不正常会被踢出,非临时实例则不会被剔除; Nacos支持服务列表消息推送模式,即时更新;
场景:如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且不需要重启,效率较高;?
?1.首先在Nacos中的配置列表中增加一个配置文件:文件名字:服务名称+环境+yaml ?2.然后配置一个bootstrap.yaml,里面是服务的配置信息:(服务名称,Nacos连接地址,环境,extendion拓展的yaml配置)——>注意之前的yaml配置要删除,放在bootstrap.yaml中
?3.然后在控制层可以进行测试 ?
1.使用注解@RefreshScope注解实现热更新 2.自动实现刷新利用@ConfigurationProperties:通过配置一个Properties类注入容器中,里面配置dateformat,然后注入controller中; 对比:个人觉得@RefreshScope会让代码太冗余了,如果我多个控制器都要用到扩展的配置文件中的属性,岂不是每个属性都得@Value赋值+@RefreshScope; 而@ConfigurationProperties+@Component将扩展属性全部放到容器中,我们的控制器直接注入这个组件就行了,然后get值,这样代码冗余减少了很多;
?? 1.先配置全局环境配置(支持多环境)2.分别在具体环境的配置文件和全局环境配置文件中增加属性配置3.在配置类中将这些新属性注入,并在控制器中获取json数据,看谁优先级更高
?可以在服务配置里面修改服务实例的测试环境,就不用每次去修改代码了 结果:? ? ?总结:具体环境配置优先级>全局>本地
nginx完成Nacos的负载均衡,mysql实现主从复制?(Nacos集群读取共享数据) ? 咱这是8g机器,开两端口就是极限了.... ? ?1.先创建数据库,根据Nacos配置文件中的内容(包括:连接的数据库+username+password+所连接的数据库个数)? 2.不同nacos中的配置端口需要修改,修改成与其他Nacos不一致的 ?3.在nacos中的cluster.conf配置中修改端口:也就是说当前nacos被启动,端口会是其中一个 ?4.当我们启动多个nacos时,对其在地址栏进行访问,会采用负载均衡的方法,访问Nacos集群中的一个服务器; 在nginx中进行配置 ?5.然后访问即可; |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:19:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |