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...
使用IDEA新建Java项目时候出现的一些生成文件都有什么作用
分析Idea创建项目的时候产生的文件作用
下面使用 IDEA 创建JAVA项目时
Build system 方式选择 IntelliJ
后创建出的项目包含的各个文件部分
image-20250716233538096
其中
.idea:
这个目录是 IntelliJ IDEA 的项目配置目录,它包含了许多关于项目设置的
XML
配置文件,如项目的编码、语言级别、编译器设置、项目结构、编译器设置、代码样式等。这个目录是
IntelliJ
特有的,通常不应该被加入到版本控制系统中(除非团队中所有成员都使用
IntelliJ IDEA),对项目的正常运行和开发环境的配置至关重要。
out/
这是 IntelliJ 默认的编译输出目录,编译过程中生成的
.class 文件和其他资源会被存放在这里。默认情况下,Java
类编译后的输出会放在 out/production/[项目名]
目录下。
[projectName].iml
这是一个 IntelliJ...
Docker part6—Docker容器数据卷详解
Docker 容器数据卷
什么是容器数据卷
容器数据卷是 Docker
中用于持久化存储容器数据的一种机制。简单来说,数据卷就像是容器与宿主机之间的
“共享文件夹”
Docker 将应用与运行的环境打包形成容器运行,
Docker容器产生的数据,如果不通过 docker...
DESIRE-Tony Ann 乐谱
12345678910111213141516171819202122X:1T:DESIREC:Tony AnnQ:1/4=130M:4/4L:1/8K:F#%%score (T1 T2)V:T1 trebleV:T2 treble[V:T1] |: z2 f2f2f2 z2 f2f2f2 | z2 f2f2f2 z2 f2f2f2 |[V:T2] |: F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2 z2 f2f2f2 | z2 f2f2f2 z2 f2f2f2 |[V:T2] F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2 z2 f2f2f2 | z2 f2f2f2 z2 f2f2f2 |[V:T2] F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2 z2 f2f2f2 | z2 ^a2f2^a2f2 z2 f2^a2f2^a2f2 |[V:T2] F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2f2 z2 f2f2f2f2 | z2 f2f2f2f2 z2...