SpringCloud全家通新人入门手册

news/2025/3/14 17:17:28/

一、架构图

 二、springCloud全家桶组件库

三、Spring Cloud 实战项目全景规划

 

四、技术选型

第一阶段:搭建基础的微服务功能,实现微服务之间的通信;

1、服务治理:服务治理的重点是搭建基础的跨服务调用功能。我会把用户服务、优惠计算服务和订单服务改造成可以独立启动的微服务,并借助 Nacos 的服务发现功能,通过 Webflux 组件中的 WebClient 实现基于 HTTP 的跨服务间的调用;

2、负载均衡:在这部分,我们将在服务治理的基础上,引入 Loadbalancer 组件为跨服务调用添加负载均衡的能力。除此之外,我会对 Loadbalancer 组件的扩展接口做自定义开发,实现一个金丝雀测试的负载均衡场景;

3、简化服务调用:我将使用 OpenFeign 组件对用户服务进行改造,将原先复杂的 WebClient 调用替换为简洁的 OpenFeign 调用。

第二阶段:为各个模块构建服务容错、分布式配置中心、分布式链路追踪能力;

1、配置管理:配置管理的重点是将三个微服务应用接入到 Nacos Config 配置中心,使用远程配置中心存储部分配置项

2、。服务容错:搭建 Sentinel Dashboard 控制台,通过控制台将降级规则和流量整形规则应用到业务埋点中。

3、链路追踪:这部分的重点是搭建分布式链路追踪与日志系统。

第三阶段:进一步实现微服务网关、消息驱动和分布式事务。

1、搭建微服务网关作为统一流量入口;

2、使用消息驱动组件对接 RabbitMQ;

3、通过分布式事务保证数据一致性。

补充知识:

 

重要流程:创建一个单pom项目改为父子pom项目

0、检查idea是否在父模块pom中生成子模块

    <modules><module>eureka</module></modules>

1、子模块pom.xml添加

    <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies>

2、使用Eureka搭建注册中心

        ① 通过idea创建一个maven模块

        ② 创建启动类 EurekaApplication

@EnableEurekaServer

        ③ 关闭链接到注册中心(不用自己链接自己)

spring.application.name=eureka
server.port=8761
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false

3、搭建server模块处理公共逻辑

① 使用方法:其他项目引入server模块的jar包

pom.xml

        <dependency><groupId>com.course</groupId><artifactId>server</artifactId></dependency>

② 注册到Eureka注册中心模块

第一步、增加eureka client依赖 

pom.xml

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

 第二步、增加配置,注册中心地址

application.properties

spring.application.name=eureka
server.port=8761eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

第三步、启动类加EnableeurekaClient注解

@EnableEurekaClient

4、搭建路由模块-gateway

作用:网关主要功能:限流(流量控制);重试(请求失败时重试,慎用); 跨域(前后端不在同一个域);路由转发请求); 鉴权(登录校验,签名校验等

① 配置端口为9000表示路由

application.properties

spring.application.name=gateway
server.port=9000

注册到注册中心逻辑同上

② 路由转发

application.properties

spring.cloud.gateway.routes[0].id=system
spring.cloud.gateway.routes[0].uri=http://127.0.0.1:9001
spring.cloud.gateway.routes[0].predicates[0].name=Path
spring.cloud.gateway.routes[0].predicates[0].args[0]=/system/**
spring.cloud.gateway.routes[0].filters[0].name=LoginAdmin
spring.cloud.gateway.routes[0].filters[0].args[0]=true

5、搭建业务模块-system处理业务逻辑

① 配置公共请求头

application.properties

server.servlet.context-path=/system


http://www.ppmy.cn/news/1048994.html

相关文章

Python实操手动抛出异常且用except捕获

try:scroe int(input(输入一个分数))if 1 < scroe < 100:print(分数为, scroe)else:raise Exception(分数错了) except Exception as e:print(e)

Mac下Jmeter安装及基本使用

本篇文章只是简单的介绍下Jmeter的下载安装和最基本使用 1、初识Jmeter 前一段时间客户端app自测的过程中&#xff0c;有偶现请求某个接口返回数据为空的问题&#xff0c;领导让我循环100次请求这个接口&#xff0c;看看有没有结果为空的问题。听同事说有Jmeter的专业测试工具…

监控 FTP 服务器

文件传输协议 &#xff08;FTP&#xff09; 用于在 TCP/IP 网络中的服务器和客户端之间传输文件&#xff0c;它是一种标准协议&#xff0c;广泛用于在各个垂直行业的组织之间从集中位置存储和分发数据。FTP协议的其他一些安全版本如下&#xff1a; SSH 文件传输协议 &#xff…

性能比较 - Spring Boot 应用程序中的线程池与虚拟线程 (Project Loom)

本文比较了 Spring Boot 应用程序中的不同请求处理方法&#xff1a;ThreadPool、WebFlux、协程和虚拟线程 (Project Loom)。 在本文中&#xff0c;我们将简要描述并粗略比较可在 Spring Boot 应用程序中使用的各种请求处理方法的性能。 高效的请求处理在开发高性能后端…

【Apollo】自动驾驶感知——毫米波雷达

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

依赖预构建与静态资源处理

依赖预构建 vite是一个基于浏览器原生ES-Module的前端构建工具。 当你首次启动vite的时候&#xff0c;vite会在本地加载你的站点之前预构建项目依赖。 原因&#xff1a; CommonJS和UMD兼容性&#xff1a;在开发阶段中&#xff0c;Vite的开发服务器将所有的代码视为原生ES模块。…

[Docker] Portainer + nginx + AList 打造Docker操作三板斧

Portainer : Docker容器图形化管理系统nginx: 反向代理利器AList: 文件管理系统 1. 安装 ##### portainer ##### # 拉取镜像 portainer 注: ce 社区版 ee 企业版 原项目(portainer/portainer)已弃用 docker pull portainer/portainer-ce # 运行容器 docker run -d --name por…

LeetCode--HOT100题(36)

目录 题目描述&#xff1a;146. LRU 缓存&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;146. LRU 缓存&#xff08;中等&#xff09; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache…