Spring Cloud part10—Nacos在配置中心上的原理剖析
Nacos 配置中心原理解析
Nacos 配置中心的主要作用
本来我寻思把这篇文章放到负载均衡那个讲的,结构感觉那样会很长,我感觉没有人想读论文那样长的技术博客,就算了
在分布式系统中,配置管理面临三大核心挑战:配置分散(多服务、多环境配置散落在各节点)、更新繁琐(修改配置需重启服务)、一致性难保证(多节点配置易出现不一致)。Nacos
配置中心的核心作用就是解决这些问题
配置集中化管理
将所有服务的配置(如数据库连接、接口地址、限流规则等)集中存储在 Nacos
Server,替代传统的本地配置文件(如
application.yml),避免配置分散在各服务节点的文件系统中,便于统一维护。
动态配置更新
支持配置在运行时动态修改并生效,无需重启服务。例如:修改数据库连接池参数、调整日志级别、更新限流阈值等,通过
Nacos 推送机制实时同步到所有相关服务,极大提升系统灵活性。
多维度配置隔离 通过「命名空间(Namespace)+
分组(Group)+ Data ID」三级结构,实现多环境(如
dev/test/prod)、多业务(如支付...
Spring Cloud part9—Nacos负载均衡的实现和原理深入解析
Nacos 上的负载均衡
服务多级存储模型
在之前我们讲解 Nacos 的数据模型可以了解,Nacos 实例 Key
由如下三元组唯一确定,命名空间,分组,服务名
12345678Namespace(命名空间)├─ group(服务分组)│ ├─ service(服务名)│ │ ├─ instance 1(实例1:IP+端口)│ │ ├─ instance 2(实例2:IP+端口)│ │ └─ ...│ └─ other service(其他服务)└─ other group(其他分组)
在之前,我们的服务模型都是按照两层划分的,一个服务就是一个业务的微服务,一个服务下可以有多个实例
不过随着我们的业务规模越来越大,为了增加稳定性和容灾性,我们会将一个实例部署在多个机房,所以
Nacos 引入了地域 (Zone)
的概念,把同一个服务的多个实例部署到不同地域的机房中
(鸡蛋分开不同的篮子放) ;又把在同一个地域的机房的多个服务实例称为集群
(Cluster) 。比如,杭州机房的 2 个用户服务 user-service
称为杭州...
Spring Cloud part8—Nacos注册配置中心的使用和源码分析
Nacos 的工作流程剖析
image-20250719124926528
Nacos 服务注册部分
有这么一个包,spring-cloud-commons
image-20250719124212246
在这里,你会看到一个熟悉的包,loadbalancer,这就是我们之前深度分析的负载均衡的包,Nacos的负载均衡先不讲,在这个包下面,有个
serviceregistry包,这个包的作用就是服务注册相关内容的包
image-20250719125222356
其中,ServiceRegistry
包是关注与服务注册相关的核心接口,这个ServiceRegistry接口是Spring
Cloud提供的服务注册的标准,集成到SpringCloud中实现服务注册的组件,都需要实现这个接口。看一下它的代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344package...
赫炎的印加诺克攻略
...
Spring Cloud part7—Nacos注册中心的原理和使用
Spring Cloud Alibaba
什么是Spring Cloud Alibaba
Spring Cloud Alibaba 是阿里巴巴基于 Spring Cloud
规范开发的微服务生态体系,旨在为开发者提供一套完整的微服务解决方案,Spring
Cloud Alibaba 生态以 Nacos、Sentinel、Seata
为核心,整合了网关、消息队列等组件,形成了一套适合国内企业的微服务解决方案。其优势在于组件一体化、高性能、本土化适配,尤其适合对稳定性和并发能力要求高的业务场景。
Spring Cloud Alibaba
核心组件及功能
Spring Cloud Alibaba 与 Spring 官方提供的 Spring Cloud
生态的不同,就基本都是体现在组件的不同上,基本Spring Cloud
生态的该有的各种组件类型,Spring Cloud Alibaba 也基本都有
Spring Cloud...
如何在IDEA中以不同端口开启同一个服务多个实例
具体步骤
首先打开服务窗口,通过View ->
Tool Windows -> Service
这里会列出本项目各个服务的启动类,如果没有点击那个加号添加服务
首先右键点击已经启动的项目,然后复制你需要以不同端口打开的实例的配置
image-20250720233138782
然后在设置中选择更多操作,选择允许多个实例和添加虚拟机选项
image-20250720233223924
然后在虚拟机选项那一栏,按照虚拟机的配置项目添加你需要启动的端口号
image-20250720233347159
确定后应用,就能看到多出来的那个实例了
image-20250720233423276
我们启动一下,测试一下,可以看到新的端口启动的实例正常被发现,正常被注册
image-20250720233625677
堂堂结束
Spring Cloud part5—Eureka服务注册与发现组件
Spring Cloud Eureka 组件
什么是服务注册与发现组件
在 Spring Cloud
中,注册中心是一个用于管理微服务实例并进行服务发现的核心组件。它可以帮助系统中的各个服务组件相互了解对方的位置以及状态,从而实现服务之间的通信。主要有以下功能:
服务注册:服务注册是指系统中的各个服务实例将自己的信息(如 IP
地址、端口、元数据等)注册到注册中心,以便其他服务能够找到它。
服务发现:服务发现是指服务消费者可以通过注册中心查询其他服务的位置信息(如
IP 地址、端口等)。
健康检查
负载均衡
多环境支持与切换
分布式支持
想一下这些问题
服务消费者该如何获取服务提供者的地址信息
如果有多个服务提供者,消费者该如何选择
消费者如何得知服务提供者的健康状态
简介
Eureka 一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka 是
Netflix 开源的服务注册与发现组件,后被纳入 Spring Cloud 生态,分为Eureka
Server与Eureka Client。它基于...
Spring Cloud part4—服务的拆分与调用的原则
服务拆分
如何进行微服务的在设计之初的拆分
首先,微服务拆分之所以能显著提升企业需求响应速度,本质是通过架构解耦实现研发效能的非线性增长。
一般是从业务领域出发,按边界领域进行拆分,微服务的本质是
“业务服务化”,因此最核心的拆分依据是业务领域的自然边界。可以通过
“领域驱动设计(DDD)” 梳理业务模块,识别出独立的
“领域”,每个领域对应一个或多个微服务。
梳理业务流程:列出系统的核心业务流程(如电商的
“商品管理”“订单处理”“支付结算”“用户会员” 等)。
划分领域边界:每个业务流程中,识别出 “不可再分”
的独立业务单元(领域),这些单元应具备完整的业务能力,且与其他单元的依赖较弱。
定义服务职责:每个领域对应一个服务,明确其核心职责(如
“订单服务”...
Spring Cloud part3—第一个微服务程序
第一个 Spring Cloud
微服务程序
Spring Boot 与 Spring Cloud
选型
Spring Cloud 和 Spring Boot
的版本兼容性十分重要,不匹配的版本可能导致功能缺失、依赖冲突等问题。
给出几种常见的版本选项
Spring Boot 2.3.x 与 Spring Cloud Hoxton.SR12
适用场景:适用于对稳定性要求较高,且业务逻辑相对传统,没有大量新兴技术需求的项目。。比如一些企业的内部管理系统,像财务管理系统、人力资源管理系统等,这些系统功能较为固定,注重数据的安全性和业务流程的稳定性。
Spring Boot 2.4.x 与 Spring Cloud 2020.0.3
适用场景:适合有一定规模,需要在微服务架构中逐步引入新技术,对性能和可扩展性有一定要求的项目。比如中型电商平台,需要处理高并发的商品浏览、订单提交等业务,并且可能后续会接入一些新的促销活动模块、个性化推荐服务等。
Spring Boot 3.0.x 与 Spring...
Spring Cloud part2—认识微服务解决方案SpringCloud
微服务解决方案SpringCloud
简介
Spring
Cloud是Java领域内非常热门的微服务解决方案,SpringCloud在业内已经被广泛应用,对于微服务中常见的问题和挑战都有很好的解决效率。
Spring Cloud
提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具,比如配置管理、服务发现、
熔断、智能路由等,他们可以在任何分布式环境中很好的⼯作。
其实SpringCloud就是一个完整的微服务架构,提供了所有功能,整个开发项目中所需要的架构功能微服务都有,也就是说整个springcloud就是一个完整的项目,这个架构已经搭建完毕了,用到了直接获取即可,只需要往架构中注入自己的业务代码就可以
作为基于 Spring
的全家桶,它并非单一框架,而是一套整合了众多成熟组件的开源解决方案 ——
从服务注册发现(Eureka、Nacos)到负载均衡(Ribbon),从配置中心(Config、Apollo)到熔断降级(Hystrix、Resilience4j),从
API 网关(Gateway)到分布式追踪(Sleuth+Zipkin),Spring...
Spring Cloud part1—理解微服务架构
认识微服务架构
在入门Spring Cloud
之前,我们需要先了解下什么是微服务,在架构发展的过程中,项目开发遇到了哪些问题,以及Spring
Cloud是用来解决什么问题的。
单体架构 vs 微服务架构的区别
在学习微服务之前,先了解它与传统单体架构的核心差异,能帮助我们更好地理解微服务的设计初衷
下图表示了单体架构到微服务架构的发展过程
image-20250710085009656
单体架构将所有功能模块(如用户管理、订单处理、支付系统等)打包在一个应用程序中,部署在单一服务器或集群上。
特点
代码集中在一个代码库,开发工具和技术栈统一
部署简单,只需打包成一个应用(如 JAR、WAR...

















