web系统架构基于springCloud的各技术栈
博主目前开发的web系统架构是基于springCloud的一套微服务架构。
使用的技术栈:springboot+mysql+clickhouse+postgresql+redis+rocketMq+oss+eureka+base-gateway+apollo+docker+nginx+vue的一套web架构。

一、springboot3.0
- 特性:Spring Boot 3.0提供了许多新特性和改进,以进一步简化Spring应用程序的开发和部署。其中一些重要的特性包括:更好的性能和扩展性、更强大的自动配置、改进的安全性、与新技术的集成等。
- 性能和扩展性:Spring Boot 3.0在性能和扩展性方面做了许多优化。通过使用新技术和优化代码结构,Spring Boot 3.0可以更快地启动应用程序,提供更好的性能和响应速度。此外,Spring Boot 3.0还提供了更好的水平扩展和垂直扩展能力,以满足不同规模应用程序的需求。
- 自动配置:Spring Boot 3.0进一步增强了自动配置功能。它提供了更多的自动配置类和注解,可以帮助开发人员快速配置应用程序。同时,Spring Boot 3.0还提供了条件注解和自定义配置类,以支持更灵活的配置管理。
- 安全性:Spring Boot 3.0在安全性方面也做了许多改进。它提供了更强大的身份验证和授权功能,支持多种身份验证协议和授权机制。此外,Spring Boot 3.0还提供了更安全的默认配置,以保护应用程序免受常见安全漏洞的攻击。
- 新技术集成:Spring Boot 3.0与许多新技术进行了集成,以提供更好的开发体验和功能支持。其中一些重要的新技术包括:Java 17、Spring Framework 6.0、GraalVM原生镜像等。这些新技术的集成可以帮助开发人员更快地构建现代化、高性能的应用程序。
二、docker
Docker是一种容器化技术,它使用Linux内核的cgroup和namespace等特性,将应用程序及其依赖项打包到一个独立的、可移植的容器中,并确保这些依赖项在任何Docker环境中都能正常运行。以下是Docker的使用详解:
- 安装Docker:首先需要在支持Docker的操作系统上安装Docker。Docker可以在多个操作系统上运行,包括Linux、Windows和macOS等。
- 创建Docker镜像:Docker镜像是用于创建容器的模板,类似于虚拟机的镜像。可以使用Dockerfile来定义镜像的构建过程,也可以从Docker Hub等仓库中下载已有的镜像。
- 运行Docker容器:使用docker run命令可以创建并运行一个容器。容器是从镜像创建的实例,类似于虚拟机。可以通过-d、-it等参数来指定容器的运行方式。
- 管理Docker容器:可以使用docker ps、docker stop、docker start等命令来管理正在运行的容器。也可以使用docker exec命令进入容器内部执行命令。
- 推送Docker镜像:如果想要将本地构建的镜像分享给其他人或团队,可以使用docker push命令将镜像推送到Docker Hub或其他仓库中。
- 构建Docker镜像:可以使用Dockerfile来定义镜像的构建过程,包括安装软件、设置环境变量等。构建完成后,可以使用docker run命令来运行该镜像。
- 删除Docker容器和镜像:使用docker rm命令可以删除不再需要的容器,使用docker rmi命令可以删除不再需要的镜像。
三、apollo
Apollo是一种配置中心,主要用于集中管理和维护微服务中的配置信息。以下是Apollo配置中心的详细解释:
- 简介:Apollo配置中心是一个简单、可靠、功能丰富的平台,用于构建云原生应用。它能够集中管理应用的所有配置信息,包括敏感信息,并提供灵活的权限控制和强大的数据治理功能。
- 架构:Apollo的架构包括三个主要组件:Portal(管理门户)、Config Service(配置服务)和 Admin Service(管理服务)。Portal是用户界面,用于对配置进行修改;Config Service负责定期从数据库中拉取配置信息,并在发生变化时推送给客户端;Admin Service则负责接收Portal发送过来的配置信息,对配置信息进行修改。
- 特点:Apollo具有以下特点:支持多种语言和框架、开放式集成自定义监控和报警功能、动态刷新、快速同步、丰富的数据展示等。同时,Apollo还提供了一个强大的界面,使得配置的管理和修改变得非常方便。
- 集成:Apollo可以与Spring Boot等微服务框架集成,使得配置的修改和更新能够实时地反映到微服务中。
- 使用:要使用Apollo配置中心,首先需要在Apollo Portal中创建一个新的应用,并为其指定唯一的App ID。然后,在代码中通过Apollo客户端提供的API来读取和更新配置信息。同时,需要确保Apollo Config Service和Admin Service在运行时能够访问到Apollo Portal。
四、eureka
Eureka是Netflix开发的服务发现框架,集成在其子项目spring-cloud-netflix中,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。Eureka是一个服务治理组件,主要包括服务注册和服务发现,用于搭建服务注册中心。
Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server提供服务注册服务,各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息。EurekaClient通过注册中心进行访问,是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka属于CAP中AP(Availability和Partition tolerance)架构。当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。结论是:违背了一致性C的要求,只满足可用性和分区容错,即AP。
五、gateway
Spring Gateway是Spring Cloud中的一部分,用于构建微服务架构的API网关。以下是关于Spring Gateway的详细解释:
- 网关的概念:网关是外部网络进入内部网络的入口,对内部网络服务起到保护作用。在微服务架构中,网关是所有外部请求进入微服务群的入口。
- 网关的作用:
- 反向代理:为了保护内部网络服务的安全,通常不会直接暴露内部网络服务的IP地址,而是通过暴露网关IP地址,通过网关IP代理内部网络服务的IP地址。
- 流量控制:当系统处于高峰期时,为了防止系统因访问量过大而崩溃,网关可以限制访问数量。
- 熔断:当系统中的某个服务出现故障时,网关可以将该服务降级。有请求访问时,直接访问事先准备好的降级方法,等到服务修复后,用户即可继续访问。
- 负载均衡:当路由的目标服务有多个时,网关可以实现负载均衡,将请求分发到不同的服务上。
- 网关的架构:网关的架构通常包括路由、过滤器等核心组件。路由是构建网关的基本模块,由ID、目标URL、一系列断言和过滤器组成。如果断言为真,则可以匹配该路由。过滤器可以在请求被路由前或之后对请求进行修改。
- Spring Gateway的特点:
- 易于集成:Spring Gateway可以与Spring Boot集成为一体,简化开发和部署过程。
- 动态路由:通过简单的配置,可以实现动态路由,根据不同的条件将请求路由到不同的服务。
- 过滤器链:可以通过配置过滤器来实现请求和响应的处理,例如限流、权限校验等。
- 使用Spring Gateway的好处:
- 统一入口:通过网关统一管理所有外部请求的入口,便于管理和维护。
- 安全性:通过网关可以对所有进入微服务群的请求进行安全校验,例如权限校验、身份认证等。
- 流量控制和熔断:通过网关可以实现对流量的控制和熔断功能,防止系统过载或某个服务故障导致整个系统崩溃。
- 负载均衡:通过网关可以实现负载均衡,将请求分发到不同的服务上,提高系统的可扩展性和可靠性。
- Spring Gateway的快速入门:要使用Spring Gateway,需要创建一个Maven项目,然后添加Spring Boot和Spring Cloud的依赖。配置路由信息,并编写过滤器来实现所需的请求和响应处理逻辑。
总之,Spring Gateway是一个功能强大的API网关组件,适用于构建微服务架构的应用程序。通过使用Spring Gateway,可以简化开发过程、提高系统的可扩展性和可靠性、并增强系统的安全性。
相关文章:
web系统架构基于springCloud的各技术栈
博主目前开发的web系统架构是基于springCloud的一套微服务架构。 使用的技术栈:springbootmysqlclickhousepostgresqlredisrocketMqosseurekabase-gatewayapollodockernginxvue的一套web架构。 一、springboot3.0 特性:Spring Boot 3.0提供了许多新特性…...
【第十五课】数据结构:堆 (“堆”的介绍+主要操作 / acwing-838堆排序 / 时间复杂度的分析 / c++代码 )
目录 关于堆的一些知识的回顾 数据结构:堆的特点 "down" 和 "up":维护堆的性质 down up 数据结构:堆的主要操作 acwing-838堆排序 代码如下 时间复杂度分析 确实是在写的过程中频繁回顾了很多关于树的知识&…...
el-select选项过多导致页面卡顿,路由跳转卡顿
问题:el-select数据量太大,导致渲染过慢,或造成页面卡顿甚至于卡死 卡顿原因:DOM中数据过多,超过内存限制 解决方法: 1.使用Virtualized Select 虚拟化选择器,页面就不卡了 2.el-select做分…...
信息流广告参数回传工具怎么做联调
信息流广告在抖音等平台上越来越受到广告主的青睐,它能够在用户浏览内容的同时,以自然的方式展示广告,提高曝光率和点击率。然而,为了更好地评估广告效果,需要进行参数回传联调。本文将介绍一种实用的工具——数灵通外…...
matlab appdesigner系列-常用18-表格
表格,常用来导入外部表格数据 示例: 导入外界excel数据:data.xlsx 姓名年龄城市王一18长沙王二21上海王三56武汉王四47北京王五88成都王六23长春 操作步骤如下: 1)将表格拖拽到画布上 2)对app1右键进行…...
密码学的100个基本概念
密码学作为信息安全的基础,极为重要,本文分为上下两部分,总计10个章节,回顾了密码学的100个基本概念,供小伙伴们学习参考。本文将先介绍前五个章节的内容。 一、密码学历史 二、密码学基础 三、分组密码 四、序列密码 五、哈希…...
Python中的进制转换——bin/oct/hex函数与int函数
简介 进制转换可能是一个工作学习中的常见小任务,手写相关函数显然很麻烦。 Python有相关内置函数一般能满足我们的需求。bin()、oct()、hex()将十进制转换为常用的二、八、十六进制,而 int()函数可指定第二个参数从而将其它进制转换为十进制。或许后者…...
RT-Thread 瑞萨 智能家居网络开发:RA6M3 HMI Board 以太网+GUI技术实践
不用放大了, 我在包里找到张不小的…… 以太网HMI线下培训-环境准备 这是社群的文档:【腾讯文档】以太网线下培训(HMI-Board) https://docs.qq.com/doc/DY0FIWFVuTEpORlNn 先介绍周六的培训是啥,然后再介绍一下要准…...
力扣刷题第十天 美丽塔 一
给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 < heights[i] < maxHeights[i]heights 是一个 山脉…...
c# ADODB.Recordset实例调用Fields报错
代码: using System; using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ADODB;namespace ConsoleApp1 {internal class Programre{static ADODB.Recordset recordsetInstance…...
windows和linux下SHA1,MD5,SHA256校验办法
今天更新android studio到Android Studio Hedgehog | 2023.1.1时,发现提示本机安装的git版本太老,于是从git官网下载最新的git。 git下载地址: https://git-scm.com/ 从官网点击下载最新windows版本会跳转到github仓库来下载发布的git&…...
高新技术企业申报需要具备哪些条件?
(一)企业申请认定时须注册成立一年以上; (二)企业通过自主研发、受让、受赠、并购等方式,获得对其主要产品(服务)在技术上发挥核心支持作用的知识产权的所有权; &#…...
测试不拘一格——掌握Pytest插件pytest-random-order
在测试领域,测试用例的执行顺序往往是一个重要的考虑因素。Pytest插件 pytest-random-order 提供了一种有趣且灵活的方式,让你的测试用例能够以随机顺序执行。本文将深入介绍 pytest-random-order 插件的基本用法和实际案例,助你摆脱固定的测试顺序,让测试更具变化和全面性…...
DophineScheduler通俗版
1.DophineScheduler的架构 ZooKeeper: AlertServer: UI: ApiServer: 一个租户下可以有多个用户;一个用户可以有多个项目一个项目可以有多个工作流定义,每个工作流定义只属于一个项目;一个租户可…...
企业如何稳步开启SASE实施之路
在上一篇题为《企业为什么选择SASE?香港电讯专家给你答案!》的文章中,我们从SD-WAN的安全策略和能力、市场趋势的推动及SASE的四大特性分析了企业选择采用安全访问服务边缘(SASE)的原因。基于SASE的各项优势࿰…...
【Oracle】收集Oracle数据库内存相关的信息
文章目录 【Oracle】收集Oracle数据库内存相关的信息收集Oracle数据库内存命令例各命令的解释输出结果例参考 【声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 【Oracle】收集Oracle数据库内存相关的信息 …...
MySQL也开始支持JavaScript了
2023 年 12 月 16 日,Oracle 公司在一篇名为 《Introducing JavaScript support in MySQL》的文章中宣布 MySQL 数据库服务器将开始支持 JavaScript 语言。 这个举措标志着继PostgreSQL之后, MySQL 也支持使用 JavaScript 编写函数和存储过程了。作为最…...
百度大脑 使用
百度大脑: 官方网址:https://ai.baidu.com/ 文档中心:https://ai.baidu.com/ai-doc 体验中心:https://ai.baidu.com/experience 百度大脑则是百度AI核心技术引擎,它包括基础层、感知层、认知层和安全,是百…...
Spring Boot 中的外部化配置
Spring Boot 中的外部化配置 一、配置文件基础1.配置文件格式(1)YAML 基本语法规则(2)YAML 支持三种数据结构 2.application 文件3.application.properties 配置文件4.application.yml 配置文件5.Environment6.组织多文件7.多环境…...
10个常考的前端手写题,你全都会吗?(下)
前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天接着上篇再来分享一下10个常见的JavaScript手写功能。 目录 1.实现继承 ES5继…...
OBS Advanced Timer:全场景直播计时神器,让你的直播节奏掌控自如
OBS Advanced Timer:全场景直播计时神器,让你的直播节奏掌控自如 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 作为主播,你是否曾因手动计时失误导致直播环节超时ÿ…...
驱动残留清理技术解析:Display Driver Uninstaller实战指南
驱动残留清理技术解析:Display Driver Uninstaller实战指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninsta…...
MedGemma 1.5新手必看:从安装到问诊,完整使用流程详解
MedGemma 1.5新手必看:从安装到问诊,完整使用流程详解 你是否曾面对一份复杂的化验单,需要快速理解其临床意义?是否在深夜值班时,想快速确认某个药物的相互作用?或者,作为一名医学生࿰…...
ExcelDataReader实战指南:高效处理Excel文件3步法掌握跨格式解析
ExcelDataReader实战指南:高效处理Excel文件3步法掌握跨格式解析 【免费下载链接】ExcelDataReader Lightweight and fast library written in C# for reading Microsoft Excel files 项目地址: https://gitcode.com/gh_mirrors/ex/ExcelDataReader ExcelDat…...
掌握TegraRcmGUI:从入门到精通的Switch注入实践指南
掌握TegraRcmGUI:从入门到精通的Switch注入实践指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款基于C开发的图形化界面工具…...
效率倍增:基于快马平台集成最新openclaw构建自动化采集工具
最近在做一个数据采集项目时,发现手动写爬虫实在太费时间了。每次都要重复处理请求头、代理设置、数据清洗这些基础工作,效率特别低。后来发现了openclaw这个工具包的新版本,正好结合InsCode(快马)平台快速搭建了一个自动化采集工具ÿ…...
Vue 3.4+ 实验性/新特性深度实战(2026版)
一、背景:从“稳定”到“极致体验”截至 2026 年,Vue 3.4 与 3.5 已全面普及,但许多能显著降低心智负担的特性(如 defineModel)在早期被标记为“实验性”,或仅在 3.5 才完全稳定。如果你还在写“Pr…...
Vivado平台下PCIe IP核选型指南:从硬核到XDMA的实战抉择
1. PCIe技术基础与Vivado开发环境搭建 第一次接触PCIe接口开发时,我被各种专业术语搞得晕头转向。后来才发现,理解PCIe就像理解高速公路系统一样简单。PCIe本质上是一种点对点的高速串行总线,就像城市间修建的多车道高速公路。每个"车道…...
7个实用技巧:从零开始开发jquery-qrcode自定义二维码生成器
7个实用技巧:从零开始开发jquery-qrcode自定义二维码生成器 【免费下载链接】jquery-qrcode qrcode generation standalone (doesnt depend on external services) 项目地址: https://gitcode.com/gh_mirrors/jq/jquery-qrcode jquery-qrcode是一款轻量级的纯…...
RMBG-2.0在YOLOv8项目中的应用:目标检测与背景去除联合处理
RMBG-2.0在YOLOv8项目中的应用:目标检测与背景去除联合处理 1. 为什么需要把目标检测和背景去除连在一起做 你有没有遇到过这样的场景:电商团队要批量处理上千张商品图,先用YOLOv8框出产品位置,再手动抠图换背景,最后…...
