web系统架构基于springCloud的各技术栈

博主目前开发的web系统架构是基于springCloud的一套微服务架构。

使用的技术栈:springboot+mysql+clickhouse+postgresql+redis+rocketMq+oss+eureka+base-gateway+apollo+docker+nginx+vue的一套web架构。

一、springboot3.0

  1. 特性:Spring Boot 3.0提供了许多新特性和改进,以进一步简化Spring应用程序的开发和部署。其中一些重要的特性包括:更好的性能和扩展性、更强大的自动配置、改进的安全性、与新技术的集成等。
  2. 性能和扩展性:Spring Boot 3.0在性能和扩展性方面做了许多优化。通过使用新技术和优化代码结构,Spring Boot 3.0可以更快地启动应用程序,提供更好的性能和响应速度。此外,Spring Boot 3.0还提供了更好的水平扩展和垂直扩展能力,以满足不同规模应用程序的需求。
  3. 自动配置:Spring Boot 3.0进一步增强了自动配置功能。它提供了更多的自动配置类和注解,可以帮助开发人员快速配置应用程序。同时,Spring Boot 3.0还提供了条件注解和自定义配置类,以支持更灵活的配置管理。
  4. 安全性:Spring Boot 3.0在安全性方面也做了许多改进。它提供了更强大的身份验证和授权功能,支持多种身份验证协议和授权机制。此外,Spring Boot 3.0还提供了更安全的默认配置,以保护应用程序免受常见安全漏洞的攻击。
  5. 新技术集成:Spring Boot 3.0与许多新技术进行了集成,以提供更好的开发体验和功能支持。其中一些重要的新技术包括:Java 17、Spring Framework 6.0、GraalVM原生镜像等。这些新技术的集成可以帮助开发人员更快地构建现代化、高性能的应用程序。

二、docker

Docker是一种容器化技术,它使用Linux内核的cgroup和namespace等特性,将应用程序及其依赖项打包到一个独立的、可移植的容器中,并确保这些依赖项在任何Docker环境中都能正常运行。以下是Docker的使用详解:

  1. 安装Docker:首先需要在支持Docker的操作系统上安装Docker。Docker可以在多个操作系统上运行,包括Linux、Windows和macOS等。
  2. 创建Docker镜像:Docker镜像是用于创建容器的模板,类似于虚拟机的镜像。可以使用Dockerfile来定义镜像的构建过程,也可以从Docker Hub等仓库中下载已有的镜像。
  3. 运行Docker容器:使用docker run命令可以创建并运行一个容器。容器是从镜像创建的实例,类似于虚拟机。可以通过-d、-it等参数来指定容器的运行方式。
  4. 管理Docker容器:可以使用docker ps、docker stop、docker start等命令来管理正在运行的容器。也可以使用docker exec命令进入容器内部执行命令。
  5. 推送Docker镜像:如果想要将本地构建的镜像分享给其他人或团队,可以使用docker push命令将镜像推送到Docker Hub或其他仓库中。
  6. 构建Docker镜像:可以使用Dockerfile来定义镜像的构建过程,包括安装软件、设置环境变量等。构建完成后,可以使用docker run命令来运行该镜像。
  7. 删除Docker容器和镜像:使用docker rm命令可以删除不再需要的容器,使用docker rmi命令可以删除不再需要的镜像。

 三、apollo

Apollo是一种配置中心,主要用于集中管理和维护微服务中的配置信息。以下是Apollo配置中心的详细解释:

  1. 简介:Apollo配置中心是一个简单、可靠、功能丰富的平台,用于构建云原生应用。它能够集中管理应用的所有配置信息,包括敏感信息,并提供灵活的权限控制和强大的数据治理功能。
  2. 架构:Apollo的架构包括三个主要组件:Portal(管理门户)、Config Service(配置服务)和 Admin Service(管理服务)。Portal是用户界面,用于对配置进行修改;Config Service负责定期从数据库中拉取配置信息,并在发生变化时推送给客户端;Admin Service则负责接收Portal发送过来的配置信息,对配置信息进行修改。
  3. 特点:Apollo具有以下特点:支持多种语言和框架、开放式集成自定义监控和报警功能、动态刷新、快速同步、丰富的数据展示等。同时,Apollo还提供了一个强大的界面,使得配置的管理和修改变得非常方便。
  4. 集成:Apollo可以与Spring Boot等微服务框架集成,使得配置的修改和更新能够实时地反映到微服务中。
  5. 使用:要使用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的详细解释:

  1. 网关的概念:网关是外部网络进入内部网络的入口,对内部网络服务起到保护作用。在微服务架构中,网关是所有外部请求进入微服务群的入口。
  2. 网关的作用:
  • 反向代理:为了保护内部网络服务的安全,通常不会直接暴露内部网络服务的IP地址,而是通过暴露网关IP地址,通过网关IP代理内部网络服务的IP地址。
  • 流量控制:当系统处于高峰期时,为了防止系统因访问量过大而崩溃,网关可以限制访问数量。
  • 熔断:当系统中的某个服务出现故障时,网关可以将该服务降级。有请求访问时,直接访问事先准备好的降级方法,等到服务修复后,用户即可继续访问。
  • 负载均衡:当路由的目标服务有多个时,网关可以实现负载均衡,将请求分发到不同的服务上。
  1. 网关的架构:网关的架构通常包括路由、过滤器等核心组件。路由是构建网关的基本模块,由ID、目标URL、一系列断言和过滤器组成。如果断言为真,则可以匹配该路由。过滤器可以在请求被路由前或之后对请求进行修改。
  2. Spring Gateway的特点:
  • 易于集成:Spring Gateway可以与Spring Boot集成为一体,简化开发和部署过程。
  • 动态路由:通过简单的配置,可以实现动态路由,根据不同的条件将请求路由到不同的服务。
  • 过滤器链:可以通过配置过滤器来实现请求和响应的处理,例如限流、权限校验等。
  1. 使用Spring Gateway的好处:
  • 统一入口:通过网关统一管理所有外部请求的入口,便于管理和维护。
  • 安全性:通过网关可以对所有进入微服务群的请求进行安全校验,例如权限校验、身份认证等。
  • 流量控制和熔断:通过网关可以实现对流量的控制和熔断功能,防止系统过载或某个服务故障导致整个系统崩溃。
  • 负载均衡:通过网关可以实现负载均衡,将请求分发到不同的服务上,提高系统的可扩展性和可靠性。
  1. Spring Gateway的快速入门:要使用Spring Gateway,需要创建一个Maven项目,然后添加Spring Boot和Spring Cloud的依赖。配置路由信息,并编写过滤器来实现所需的请求和响应处理逻辑。

总之,Spring Gateway是一个功能强大的API网关组件,适用于构建微服务架构的应用程序。通过使用Spring Gateway,可以简化开发过程、提高系统的可扩展性和可靠性、并增强系统的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/344981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

绘图软件Visio入门必备!Visio版本|下载|替代软件|模具图库|使用技巧

Visio是什么软件? Visio,全称为Microsoft Visio,是微软旗下的一款图表和矢量图形应用程序,属于Microsoft 365系列的一部分。Visio最初是由前美国软件公司Visio Corporation于1992年推出,微软于2000年收购了Visio Corp…

【华为 ICT HCIA eNSP 习题汇总】——题目集6

1、IEEE 802.11g 标准支持的最大协商速率为()。 A、300Mbps B、150Mbps C、54Mbps D、1200Mbps 考点:无线局域网 解析:(C) IEEE 802.11系列标准如下表: 标准数据传输速率主要技术IEEE 802.111M…

20240124在GoogleEarth中输入GPS坐标查看位置

20240124在GoogleEarth中输入GPS坐标查看位置 2024/1/24 18:08 缘起:斯蒂夫●霍金邀请来自未来的时间旅行者赴宴! 有空我也想过去围观一下! 于是好奇地找了一下这个地方! https://movie.douban.com/subject// 与霍金一起了解宇宙…

7、机器学习中的数据泄露(Data Leakage)

找到并修复这个以微妙的方式破坏你的模型的问题。 数据泄露这个概念在kaggle算法竞赛中经常被提到,这个不同于我们通常说的生活中隐私数据暴露,而是在竞赛中经常出现某支队伍靠着对极个别feature的充分利用,立即将对手超越,成功霸占冠军位置,而且与第二名的差距远超第二名…

低代码是不需要代码?

吐槽 我看到网上把低代码直接定义为需要很少甚至不需要代码,这是一种错误的描述。试想向一个不了解这个概念的人这样解释,人家还以为你用“意念”写出来的应用程序。 我的理解 所谓低,指的是低量,少量,所以低代码应…

Leetcode刷题笔记题解(C++):LCR 153. 二叉树中和为目标值的路径

思路:利用回溯的思想,回溯的退出条件为当前节点为空,是符合路径的判断条件为路径和为目标值且叶子节点包含了,代码如下: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *…

【Android】Android中的系统镜像由什么组成?

文章目录 总览Boot Loader 的加锁与解锁Boot 镜像内核RAM diskARM 中的设备树 (Device Tree) /System 和/Data 分区镜像参考 总览 各种Android设备都只能刷专门为相应型号的设备定制的镜像。 厂商会提供一套系统镜像把它作为“出厂默认”的 Android 系统刷在设备上。 一个完…

中国城市二氧化碳排放数据,农业服务业工业等行业排放量均有~有shp和excel格式

基本信息. 数据名称: 中国城市二氧化碳排放数据 数据格式: Shpexcel 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1ny农业排放量(万吨)2fwy服务业排放量(万吨…

无刷电机学习-方波电调 电路篇

想要彻底的理解无刷电机的驱动,那必然少不了学习他的驱动电路和程序。这里用开源的AM32无刷电调(方波驱动)来作为学习无刷电机笔记。 https://github.com/AlkaMotors附上作者github地址 AM32_Hardware: 基于AT32MCU的AM32PCB另一位大佬开源…

【python文件】生成的csv文件没两行数据之间有一个空行

问题描述 用python代码将数据写入csv文件,但生成的csv文件没两行数据之间有一个空行,如下图所示: 解决办法 在open函数中添加newline,如以下代码所示,即可解决这一问题。 with open(r"C:\Users\xxx\Desktop\DR…

Java实现桃花峪滑雪场租赁系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

Universal Approximation Capabilities of Mixture of Weibulls (混合韦布尔分布的万能近似)

找了好久都没有找到混合韦布尔分布是否有万能近似性质,下面这个算是一点线索,不过看不太懂。 回答1:Ultimately this sounds tautological: just define “well-behaved” as any density that can be approximated, according to some speci…

企业计算机服务器中了360后缀勒索病毒怎么办,360勒索病毒解密流程

计算机网络技术的不断应用,极大地提升了企业办公与生产效率,为企业提供了极大方便,但同时也为企业的数据安全埋下隐患,近期云天数据恢复中心再次接到企业的求助,企业的计算机服务器遭到了360后缀勒索病毒攻击&#xff…

Axure校园跑步社交APP原型图,大学生运动健身原型模板53页

作品概况 页面数量:共 50 页 兼容软件:仅支持Axure RP 9/10,非程序软件无源代码 应用领域:运动健身、校园app、社交应用 作品特色 本作品为校园跑社交app原型图,高保真带交互,是一款专注于校园健身社交的…

基于Python Django的大数据招聘数据分析系统,包括数据大屏和后台管理

基于Python Django的大数据招聘数据分析系统是一个综合利用大数据技术和数据可视化技术的招聘行业解决方案。该系统旨在帮助企业和招聘机构更好地理解和分析招聘市场的趋势和变化,从而提高招聘效率和质量。 首先,该系统提供了一个强大的后台管理功能&am…

SSL证书是什么,有哪些作用

SSL证书是什么? SSL证书 是一种提供SSL协议的证书,通过在客户端浏览器与WEB服务器之间建立一条SSL安全通道,对网络传输数据进行加密,防止数据被截取或窃听。一份SSL证书包括一个公共密钥和一个私用密钥:公共密钥主要用…

【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)

一.venv独立运行环境(虚拟环境) 一般每个不同的项目都会依赖各自的库,有些库的版本不一样会引起冲突,为了解决这个问题,需要使用虚拟环境,Python可以在每个项目目录下创建各自的虚拟环境,项目所依赖的包就在当前目录环…

【idea插件开发】idea插件访问浏览器web地址

背景 以往在eclipse上面开发插件,有兴致想尝试Idea上玩一下插件开发。想要在idea上面访问web地址 概要 记录在idea上面访问web地址 正文 1、点击File->New->Project… 选择IntelliJ Platform Plugin 2、点击下一步后,输入Project Name&#…

jenkins安装配置,使用Docker发布maven项目全过程记录(1)

使用的CentOS8 系统,其它Linux系统类似 1、jenkins安装 1.1、配置JAVA环境 使用的服务器环境中,安装了Java1.8与Java17,当前jenkins的最低java版本要求java11。系统默认使用的是java1.8,因此需要切换环境。 alternatives --co…

认识与探索大模型时代的RPA应用及进化(上)

AI Agent当前仍然处于技术爬坡与实验阶段,特别是在企业领域,真正的成熟应用还处于广泛探索与原型验证阶段,离成熟还尚待时日。而同时另外一种在最近几年广受欢迎的自动化解决方案-RPA(机器人流程自动化)也在LLM时代不断…