微服务框架中Nacos的个人学习心得

微服务框架需要学习的东西很多,基本上我把它分为了五个模块:

第一:微服务技术模块

分为三个常用小模块:

1.微服务治理:

注册发现

远程调用

配置管理

网关路由

2.微服务保护:

流量控制

系统保护

熔断降级

服务授权

3.分布式事务:

分布式事务

TCC模型

AT模型

Seata

第二:缓存技术模块

分为三个小模块

1.分布式缓存:

Redis数据结构

SpringDataRedis

缓存穿透、雪崩

2.多级缓存:

Openresty

多级缓存

Nginx本地缓存

缓存数据同步

3.Redis集群:

Redis集群

Redis主从复制

Lua脚本

数据持久化

第三:异步通信模块

分为两个模块

1.异步通信:

数据持久化

消息堆积问题

MQ消息模型

SpringAMQP

2.可靠消息服务:

消息可靠性

消息幂等性

镜像集群

延迟队列

第四:搜索技术模块

主要就一个分布式搜索:

DSL语句

RestAPI

ES集群状态

第五:Devops模块

主要就是Docker技术:

Docker使用

Dockerfile

Dockers compose

版本兼容关系:

SpringCloud的关键:如何在Java代码中发起Http请求,来达到分布式的需求。

关于Nacos的理解

关于Nacos,我的理解是,在SpringCloudAlibaba中Nacos是Eureka的替代,但是他的功能要比Eureka多一些。

Nacos的依赖:

复制代码
父工程依赖:
<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>

子工程的依赖:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>


在子工程的application.yml引入的配置:
spring:
  cloud:
    nacos:
      server-addr: localhost:8848

///========注意 在做这些操作之前需要把以前使用Eureka的依赖和配置都注释掉

Nacos集群配置:

Nacos可以直接在网页上修改权重,不过Nacos他默认的选择的是随机查询

Nacos有个特殊的地方的是他有一个命名空间Namespace:

在Nacos网页上选择新建命名空间然后复制命名空间id粘贴到项目中的application.yml文件中:

从这里可以知道,我们需要服务可访问,必须把他们放在同一个命名空间之下

==========Nacos与Eureka之间的区别在于服务的健康检测=============

Nacos所有的新创建实例默认为临时实例,临时实例做的检测时心跳检测,Nacos检测时间比Eureka的要快一些。当Nacos创建的实例为非临时实例,Nacos会主动询问服务,并且当这个实例挂掉之后,Nacos不会清理掉他,而是会等他重新启动,并且会把服务挂掉的信息告诉给消费者。

如何设置临时和非临时实例:

CP和AP,CP就是强关联

关于Nacos的配置管理:

(对于一些有热更新需求的配置进行管理)

总结:如果需要在Nacos配置内完成热更新,我们需要做以下几件事情,第一,在Nacos浏览器中修改Nacos中的配置管理并发布(注意记住Nacos中配置管理的DataId),其次在发布成功之后我们需要在后端程序中新建一个配置文件(名字一定要是bootstrap.yaml),在配置文件中我们需要加入服务的名称,开发环境以及后缀名,然后我们需要在相对应的Controller类中加入@RefreshScope注解,然后把配置文件的属性和名称使用@Value("${配置全称}"),这样我们就完成了Nacos的配置拉取和热修改

===如果Nacos创建了配置管理但没有加配置文件名称如userservice.yaml(加配置环境名称:userservice-dev.yaml)则表示这个配置是属于共享的环境配置,我们可以在这里面设置其他服务器所共享的配置。如果不同区域内的程序则调用不到dev

(profiles:

active: dev #开发环境,这里是dev)的配置下面配置是test的文件。

如果配置属性里面都有的话,遵循如下配置:项目里面写的配置<服务名.yaml<服务名-环境名.yaml

Nacos的集群处理:

Nacos1-3是我在一台电脑上模拟的Nacos集群的效果,在里面我分别修改了

三个端口作为Nacos的启动端口,和修改了

application.propersties文件里面的内容作为连接数据库,其中db.num=1代表有一个集群数量(几台MySQL默认一台)并且把三个Nacos的端口分别改成8845、8846、8847三个不同的端口。做完这些操作之后还需要对Nginx的config文件进行修改:找到里面的nginx.conf文件,在里面添加配置

复制代码
upstream nacos-cluster {
    server 127.0.0.1:8845;
	server 127.0.0.1:8846;
	server 127.0.0.1:8847;
}

server {
    listen       80;
    server_name  localhost;

    location /nacos {
        proxy_pass http://nacos-cluster;
    }
}

这样当我们访问80端口的时候就会自动给我们随机访问到Nacos的8845~8847之间的端口从而实现集群搭建。

相关推荐
匠在江湖1 小时前
裸机单片机任务调度器实现:基于规范分层(COM/APP/SRV/DRV)架构,(附 任务调度器 / 微秒延时函数 / 串口重定向 源码)
单片机·嵌入式硬件·架构
gaize12131 小时前
服务器怎么选择与配置才能满足企业需求?
运维·服务器·架构
加个鸡腿儿1 小时前
经验分享2:SSR 项目中响应式组件的闪动陷阱与修复实践
前端·css·架构
一条咸鱼_SaltyFish2 小时前
[Day15] 若依框架二次开发改造记录:定制化之旅 contract-security-ruoyi
java·大数据·经验分享·分布式·微服务·架构·ai编程
早日退休!!!3 小时前
ARM A核、ARM M核、X86与RISC-V架构:寄存器作用及上下文处理差异报告
arm开发·架构·risc-v
Cyber4K3 小时前
【Kubernetes专项】DockerFile、数据持计划、网络模式及资源配额
运维·网络·云原生·容器·kubernetes
数说星榆1814 小时前
在线高清泳道图制作工具 无水印 PC
大数据·人工智能·架构·机器人·流程图
万岳科技系统开发4 小时前
开源跑腿系统源码整体架构解析:从下单到配送的完整流程
架构
2503_946971864 小时前
【Kernel/Consensus】2026年度第二周内核重构与分布式共识战争基准索引 (Benchmark Index)
网络安全·微服务·重构·数据集·分布式系统·系统内核
乾元4 小时前
现场运维机器人的工程化落地——移动探针采集 + AI 诊断,在真实网络中的实现路径
运维·网络·人工智能·架构·机器人·自动化