【架构】Java 系统架构演进的思考
文章目录
- 1 前言
- 2 单体应用架构
- 3 垂直应用架构
- 4 分布式架构
- 5 SOA 架构
- 6 微服务云架构
- 7 总结
1 前言
随着移动互联的发展,网站、H5、移动端的应用规模也不断扩大,不管是应用的数量还是质量都得到了指数级的提升。开发者的数量与日俱增,应用的复杂度也在不断提高,如何快速的完成功能的交付,并且协调众多的开发者一起进行分工合作,这是一个复杂的系统工程。互联网从萌芽到现在,系统架构大体经历了几个过程:单体应用架构、垂直应用架构、分布式架构、SOA架构、微服务云架构。在本文中,将介绍架构的演进过程以及自己的思考。
2 单体应用架构
在互联网发展的早期,其网站应用的流量较小,所有的功能代码以及数据存储都是一台服务器之上,这样的做法可以减少开发、部署和维护项目的成本。在这个阶段,一般都是前后端不分离的阶段,一个 tomcat 下部署多个应用服务。常见的技术栈包括 spring+mybaits+jsp
或者 spring+mybaits+freemaker
。该种方式的优点是单人维护,开发节奏快,缺点是不适合大型项目,模块之间耦合较大,单点容错率低。
3 垂直应用架构
垂直应用架构出现的背景是网站的访问量越来越大,单一应用还可以增加节点来应对,但是并不是所有的模块都需要增加服务能力,所以需要对服务按照功能进行拆分,对用户访问量大的模块进行扩容。系统的拆分分担了流量,解决了并发的问题,还可以针对不同的功能模块进行分工和优化,此外一个系统的问题不会影响其它的系统,提高了系统间的容错率,这是垂直应的优点,同时各个系统之间无法调用,会存在重复的功能代码,另外对于管理系统来说,session 的会话保持也是一个巨大的问题,这种模式下,一般采用 tomcat session 复制的模式,对资源的消耗比较大。
4 分布式架构
在分布式系统中,会将系统中重复的代码单独抽离出来作为独立的服务,原来的垂直系统分成了独立的服务层和具体业务的展现层,该种架构下提高了代码的复用性,但是系统间的复杂度和耦合度增加,项目维护难度较大。
5 SOA 架构
对于 SOA 架构,就是在分布式的架构基础之上引入了一个服务注册中心,用来解耦展现层和服务层,极大的解决了系统的运维难度。在 SOA 的架构下,ssm 框架 + dubbo + zk 的结构可谓是风靡一时。在 SOA 的架构下,服务进一步的拆分,可以尽可能的发挥人员的效力,在此种架构下,同时也实现了前后端的分离,使得开发效率进一步的提高,后端和前端都各自专注于自己的领域,系统的复杂度进一步提高。
6 微服务云架构
在万物互联,万物上云的时代,微服务的架构应运而生。微服务的架构进一步的拆分服务,并引入各种系统组件,用于服务治理,服务监控,链路追踪,鉴权与授权。在此种场景下,各个服务组件更加专业化,不仅仅是服务的注册与发现,还有配置中心,链路追踪等,微服务全家桶(springcloud springcloud alibaba)。
SOA 的架构与微服务的架构服务能力对比:
SpringCloud 各个组件可选的技术方案。
7 总结
在本文中,主要介绍了是近10年来服务架构的演进路径,以及每一种架构的优点和缺点。现在是万物互联,万物上云的时代,微服务是目前十分流行的大型项目的解决方案。但是在实际的项目开发中,也要考虑实际情况,要考虑项目的定位和发展情况不能过度开发,最流行的解决方案不一定是最好的,而是要选择与业务场景最适配的架构,这样才可以保证项目的交付与迭代更新。
相关文章:

【架构】Java 系统架构演进的思考
文章目录 1 前言2 单体应用架构3 垂直应用架构4 分布式架构5 SOA 架构6 微服务云架构7 总结 1 前言 随着移动互联的发展,网站、H5、移动端的应用规模也不断扩大,不管是应用的数量还是质量都得到了指数级的提升。开发者的数量与日俱增,应用的…...
Python爬虫——解析_jsonpath
jsonpath的安装 pip install jsonpathjsonpath的使用: obj json.load(open(json文件, r, encodingutf-8)) ret jsonpath.jsonpath(obj, jsonpath语法)json文件: { "store": {"book": [{ "category": "末世"…...

华为发布数字资产继承功能
在华为开发者大会2023(HDC.Together)上,华为常务董事、终端BG CEO、智能汽车解决方案BU CEO余承东正式发布了数字资产继承功能,HarmonyOS提供了安全便捷的数字资产继承路径。 在鸿蒙世界中,我们每个人在每台设备、应用…...

阿里云NAS文件存储基本介绍与购买使用
文章目录 1.NAS文件存储基本概念1.1.什么是NAS文件存储1.2.NAS的应用场景1.3.NAS、OSS、EBS的区别 2.购买NAS文件存储2.1.开通NAS服务2.2.创建NAS文件系统2.3.配置NAS文件系统属性2.4.查看购买的NAS服务 3.NAS文件存储基本使用3.1.修改NAS文件系统默认的名称3.2.NAS的权限组3.3…...

大模型使用——超算上部署LLAMA-2-70B-Chat
大模型使用——超算上部署LLAMA-2-70B-Chat 前言 1、本机为Inspiron 5005,为64位,所用操作系统为Windos 10。超算的操作系统为基于Centos的linux,GPU配置为A100,所使用开发环境为Anaconda。 2、本教程主要实现了在超算上部署LLAM…...

机器学习笔记:李宏毅ChatGPT课程1:刨析ChatGPT
ChatGPT——Chat Generative Pre-trained Transformer 1 文字接龙 每次输出一个概率分布,根据概率sample一个答案 ——>因为是根据概率采样,所以ChatGPT每次的答案是不一样的(把生成式学习拆分成多个分类问题)将生成的答案加到…...
Llama 2 with langchain项目详解(三)
Llama 2 with langchain项目详解(三) 17.3 Llama 2 with langchain基础 本节讲解在LangChain中使用Llama 2模型的基础知识,展示如何运行LangChain的代码,及在云端运行Llama 2的700亿模型。 首先,使用Python的pip管理器安装一系列库,包括huggingface/transformers、datase…...
牛客 AB30 排序(快排模板)
描述 给定一个长度为 n 的数组,请你编写一个函数,返回该数组按升序排序后的结果。 数据范围: 0≤�≤11030≤n≤1103,数组中每个元素都满足 0≤���≤1090≤val≤109 要求࿱…...

【Linux旅行记】第一个小程序“进度条“!
文章目录 一、预备知识1.1回车换行1.2缓冲区 二、倒计时三、进度条3.1普通版本源代码3.2高级版本源代码 🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 &…...

DeepMind将AI用于可控核聚变:将等离子体形状模拟精度提高65%
近日,英国AI公司DeepMind宣布取得了一项新的突破,成功实现了AI可控核聚变。这一技术能够在高温等离子体环境下实现精准放电,为核聚变技术的发展提供了新的思路和创新。 长期以来,相关领域的科学家们,一直在寻找清洁、取…...

Scrum是什么意思,Scrum敏捷项目管理工具有哪些?
一、什么是Scrum? Scrum是一种敏捷项目管理方法,旨在帮助团队高效地开展软件开发和项目管理工作。 Scrum强调迭代和增量开发,通过将项目分解为多个短期的开发周期(称为Sprint),团队可以更好地应对需求变…...
【从零单排Golang】第十三话:使用WaitGroup等待多路并行的异步任务
在后端开发当中,经常会遇到这样的场景:请求给了批量的输入,对于每一个输入,我们都要给外部发请求等待返回,然后才能继续其它自己的业务逻辑。在这样的case下,如果每一个输入串行处理的话,那么很…...

WSL2安装CentOS7和CentOS8
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、下载ZIP包?二、安装1.打开Windows子系统支持2.安装到指定位置3.管理虚拟机4.配置虚拟机1.配置国内源2.安装软件3.安装第三方源 5.配置用户1.创建…...

不平衡电网条件下基于变频器DG操作的多目标优化研究(Matlab代码Simulink实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码&Simulink实现&文章讲解 💥1 概述 文献来源: 最近,利用并网转换器(GCC)克服电网故障并支撑电网电压已…...
【Leetcode】(自食用)简单题||单词数
step by step. 题目: 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: "Hello, my name is John" 输出: 5 解释: 这里的单词是指连续的不是空格…...

C语言代码的x86-64汇编指令分析过程记录
先通过Xcode创建一个terminal APP,语言选择C。代码如下: #include <stdio.h>int main(int argc, const char * argv[]) {int a[7]{1,2,3,4,5,6,7};int *ptr (int*)(&a1);printf("%d\n",*(ptr));return 0; } 在return 0处打上断点&…...

基于springboot+vue的房屋租赁系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
Python文件读写操作详解:从基础到高级
摘要:文件读写是Python编程中常见的操作之一。本文将介绍Python中文件读写的基础知识,包括打开文件、读取文件内容、写入文件、关闭文件等基本操作。此外,还将探讨一些高级文件读写技术,如使用上下文管理器、处理异常、使用with语…...

ThreadLocal基本介绍
文章目录 什么是ThreadLocalThreadLocal解决了什么问题ThreadLocal的作用 ThreadLocal的使用场景ThreadLocal的代码示例ThreadLocal的优点ThreadLocal的缺点与volatile、synchronized、ThreadLocal比较 总结 什么是ThreadLocal ThreadLocal是Java中的一个线程本地变量…...

ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义
背景:本文是对上一个文章的补充,在源码编译之前,项目是有完整的ffmpeg编译脚本的,只不过新增了断点调试ffmpeg,所以产生的上面的文章,也就是说,我在用make编译成功后,再去做的源码编…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
C/Python/Go示例 | Socket Programing与RPC
Socket Programming介绍 Computer networking这个领域围绕着两台电脑或者同一台电脑内的不同进程之间的数据传输和信息交流,会涉及到许多有意思的话题,诸如怎么确保对方能收到信息,怎么应对数据丢失、被污染或者顺序混乱,怎么提高…...

机器学习复习3--模型评估
误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异称为:误差(error)。 误差定义: ①在训练集上的误差称为训练误差(training error)或经验误差(empirical error&#x…...
信息系统分析与设计复习
2024试卷 单选题(20) 1、在一个聊天系统(类似ChatGPT)中,属于控制类的是()。 A. 话语者类 B.聊天文字输入界面类 C. 聊天主题辨别类 D. 聊天历史类 解析 B-C-E备选架构中分析类分为边界类、控制类和实体类。 边界…...

Modbus转Ethernet IP深度解析:磨粉设备效率跃升的底层技术密码
在建材矿粉磨系统中,开疆智能Modbus转Ethernet IP网关KJ-EIP-101的应用案例是一个重要的技术革新。这个转换过程涉及到两种主要的通信协议:Modbus和Ethernet IP。Modbus是一种串行通信协议,广泛应用于工业控制系统中。它简单、易于部署和维护…...