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继…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...