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继…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
