架构演变

架构的演变历史 随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在的微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。 阅读详情
一、传统架构方式:
最初做项目时,架构一般都会分为3层,即表现层展示系统界面,业务层处理各种业务逻辑,持久层操作来源于数据库中的数据,数据库中则存储我们需要存储的数据。
这种三层架构的方式适用于大多数项目,但这种方法还不能称之为架构,我们做的时候,顶多使用各种框架,如Spring,SpringMvc,Mybatis等等将这三层整合到一块。


这种架构会存在的问题:
当我们的项目并发量比较高时,就会存在问题。
使用这种架构方式,我们一般就只有一个工程,然后将这一个工程放在一个tomcat下,如果用户的访问量比较小,这是可以支撑的,当用户的访问量比较大时,这个服务就直接崩溃了。
一个tomcat服务器理论上可以支持500并发,实际上只有300-400左右。如果我们的并发量达到1000,怎么办?

此时,我们可以很自然得想到,可以新增多个tomcat来解决这个问题,即配置一个tomcat的集群,这种方式理论上也是可行的。
我们此时再增加一个tomcat,由于这两个tomcat需要分担这1000个并发量,所以我们需要使用负载均衡服务器(如nginx)放在前面来实现负载均衡。
但是这个时候就会有一个新的问题产生:
由于此时有多个服务器,当用户登录时,其信息会到其中一台tomcat下,如果他想要访问的某个服务却在另外一个tomcat服务中,那么他就无法访问,这就是因为Session信息在两个服务中不一致导致的问题,为了解决这个问题,我们就需要做Session共享。

什么是Session共享呢?
加入有两个tomcat,分别为A和B,A每隔一段时间就会向B广播自己有的Session,B接收到A广播的Session信息后,如果发现其中有Session是自己没有的,那么就会将其加入到自己的服务当中,同理B也会每隔一段时间向A广播自己的Session信息。这样就实现了Session共享。

这就解决了Session的问题。同时这种方式也理论上解决我们1000个并发所带来的问题。

但是这种方式会有瓶颈,如果我们此时的并发量上升到1万个,我们就需要20台服务器做tomcat集群。
然而当tomcat集群节点的数量增加时,服务器的能力先增加后下降。因为需要处理Session共享的问题,tomcat服务器太多,那么一台tomcat做Session共享的时间就会增加,而我们需要tomcat服务器处理的业务就没有资源来处理,所以就会导致服务器的能力下降。
所以集群中节点的数量不能太多,一般就5个左右。

那么我们如何处理更大数量的高并发问题呢?
从前面的叙述可以得知,部署过多的服务器之所以不行,就是因为会存在Session共享时间太长,导致资源被占用,实际需要被处理的业务逻辑无法获取到资源,所以只要我们解决了Session共享占用资源的问题,就可以处理高并发的问题了。
那么就有了以下架构方式:

我们将登陆系统单独拿出来,单点登录,即用户在一处登录后,整个系统的所有服务只要有权限均可访问,其他部分我们根据实际实现的功能分为不同的模块。
其他部门分成不同的模块是因为不同模块所面临的服务器压力是不一样的,如首页的服务器压力就比购物车所面临的服务器压力要高很多,所以按照不同的功能分为不同的模块,服务器压力比较高的模块就针对这个模块增加服务器集群,这样可以“因地制宜”,而不是一概而论。
这就是分布式,即多个系统相互协作完成功能。
各个系统之间需要进行通信,才能完成整个系统,通信可以使用WebService进行通信,由于WebService使用的基于Http协议传递的xml数据的方式进行通信,传输效率较低,也可以使用基于Http协议传递Json数据的Restful风格的通信方式(现在比较流行的方式),效率较高,效率最高的是基于scoket通信的Dubbo
以下是分布式结构的优缺点:
有了这些确定,我们在分布式架构的基础上再进行扩展,则为基于SOA的架构,面向服务的架构。
基于SOA的架构,也就是把工程拆分成服务层和表现层两个工程。
服务层中包含业务逻辑,只需要对外提供服务即可。每个服务只处理独立的功能。
表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现的。
如果服务层调用数据库的压力比较大,可以统一加缓存,减少服务器压力。这样缓存的利用率也比较高。
表现层和服务层依旧需要相互通信,可以按照不同的考虑选择不同的通信方式。
转载请注明出处。


HDFS架构演变之路 一.引言   至今为止,Hadoop从1.x一直发展到现在的3.x,其内部的分布式存储系统HDFS也在不断的适应如今互联网对安全性、高性能的要求,改进的原因主要是因为如下几个问题: 单点故障问题 单机内存受限问题 如何支撑亿级流量问题   相应地,HDFS也做了两次架构大的改变,下面一一介绍。 二.不同版本HDFS的架构设计 2.1 Hadoop 1.x   第一代的HDFS架构是一个简单的主从架构,整个集群中有一个主节点和若干个从节点,其中主节点管理着整个集群的元数据,并处理来自客户端的请求,从节点主 阅读详情

相关推荐

泛微E8流程监控指南:如何用SQL实时追踪审批节点状态?

本文详细介绍了如何利用SQL实时监控泛微E8系统中的审批流程状态,包括核心数据表结构解析、全链路监控SQL实战以及智能预警机制设计。通过数据库直接查询和状态关联分析,帮助企业快速定位卡顿节点,提升流程效率。适用于需要优化OA系统流程管理的企业IT人员和业务主管。

weixin_30687051的博客 437

系统架构的演变

系统架构是系统的一种整体的高层次的结构表示,它确定了系统的基本组织、组件之间的关系、组件与环境的关系,以及指导其设计和发展的原则。随着技术的发展和业务需求的增长,系统架构经历了从简单到复杂、从集中到分布的演变过程。

二十多岁的你迷茫又着急,想要车子,想要房子,想要享受旅行,你那么浮躁,拿什么看透人生! 1562

Simeck算法流程

算法流程 paper在此:https://eprint.iacr.org/2015/612.pdf x ⋘\lll⋘ c denotes the cyclic shift of x to the left by c bits. x & y is the bitwise AND of x and y. x⊕yx \oplus yx⊕y is the exclusive-or (XOR) of x and y. github代码在此:https://github.com/bozhu/Simeck

Simp123 1074

架构演变过程

架构演变过程 单体架构 、垂直应用架构、分布式架构、SOA、微服务架构、ServiceMesh

杨宇昌的博客 2941

52页PPT智慧矿山数字化工业大数据平台建设方案

致力于为煤炭企业构建“全”、“统”、“通”、”智”的(大数据平台/数据中台)体系,基于“数字新基建”时代的数据价值思考,构建全域数字化矿区共享能力中心,助力煤炭企业实现数字化转型,打通底层系统之间数据壁垒,加强公司整体管理和安全生产系数,为运营提供数据统筹模型,实现重点数据实时监控和数据共享开放服务。综上所述,智慧矿山数据治理是一个系统性的工程,需要煤炭企业内各部门连同行业和政府监管部门通力协作,制定数据标准和管理规范,重塑煤炭企业数据架构和数据传输链路,打通智慧矿山数据壁垒,保障数据质量和数据安全。

zuoan1993的博客 1055

STM32外部中断与事件机制深度解析:从硬件触发到软件响应

本文深入解析STM32外部中断与事件机制,从硬件触发到软件响应的完整流程。通过对比中断和事件的应用场景、响应速度及配置方法,帮助开发者优化嵌入式系统设计,特别适合需要低功耗或高实时性的项目。

weixin_29175469的博客 408

架构师之路---架构的演变详解

EAI 是将基于异构平台下的业务应用系统集成在一起的一种技术,是解决各个系统之间的互联、互相传输数据的一种解决方案。那为什么要出现这种解决方案?这主要是企业在发展过程中,出现了各种各样的应用系统比如ERP、PLM、财物系统、CRM等等,这些系统都是相互独立的,相互无法互通互联,形成 “信息孤岛”,企业无法实现对整体业务运作和流程管理的全面掌控。而 EAI 可以通过中间件作为粘合剂来连接企业内外各种业务相关的异构系统、应用以及数据源,从而满足企业内部应用系统之间信息共享的需要。

菠萝吹雪爱Java的博客 2459

告别安装报错!保姆级教程:用阿狸狗破戒大师V3.2.6搞定Cadence 17.4完整安装与补丁

本文提供Cadence 17.4的完整安装与破解教程,特别针对国内用户常见问题优化。从前期准备、镜像处理到阿狸狗破戒大师V3.2.6的智能破解,再到补丁管理与性能调优,详细指导每一步操作,确保一次性安装成功并提升设计效率。

weixin_30632089的博客 835

带你了解软件系统架构的演变

一个成熟的系统,并不是一开始就做到方方面面都完美,也不会去考虑什么高并发,高可用问题,但随着时间的推移,现有架构的问题就会慢慢的显现。比如用户激增,访问量不断增大,在这过程中 ,会不断的出现新的问题,而为了解决这些问题,软件技术架构都会发生重大变化,而针对不同业务特征的系统会有各自的侧重点,像淘宝这类网站要解决的事海量商品搜索 下单支付等问题。像腾讯 要解决数亿级别用户的实施消息传输等。每种业务都有自己不同的系统架构。 以Java Web 为例 搭建简单的电商系统这个电商系统有多个业务模块,假设现在有:.

优秀的程序员不应该是CRUD 7万+

ExpressLRS 915MHz vs 2.4GHz:实测对比与TX12遥控器的最佳搭配方案

本文深入对比了ExpressLRS 915MHz与2.4GHz两种频段在穿透能力、延迟、抗干扰等方面的实测表现,并结合RadioMaster TX12遥控器的硬件特性,提供了从微型花飞到极限远航等不同场景下的最佳搭配方案与EdgeTX系统配置指南,帮助FPV玩家根据核心飞行需求做出精准选择。

milk8的博客 445

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

架构的演变

基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。 1.什么是分布式? 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。 2.什么是高可用? 系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。 3.什么是集群? 一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。 如Zookeeper中的

LXY的博客 782

OpenCASCADE完整教程专栏完整目录

OpenCASCADE完整教程专栏完整目录

希望我的博客,能帮上你解决学习中工作中所遇到的问题 9697

软件架构的演变与趋势(软件架构演变的阶段、综合案例分析:在线电商平台架构演变、开发补充)

通过这一案例分析,我们可以清晰看到系统架构的演变过程。架构的演进是伴随业务增长和技术挑战逐步进行的,而每种架构都有其适用的阶段和场景。在架构设计过程中,团队需要结合实际业务需求、技术能力和未来发展计划,选择合适的架构模式,逐步引入新技术,以确保系统具备良好的扩展性、稳定性和维护性。

开源AI 专属 UI——papyrai-ui。《千界明彻录》(故事形式构建元思维)——胡说小说。更多思辨内容在公众号。 2329

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

系统架构演变

B. 分布式基础设施环境构建 1.分布式任务调度平台XXL-Job 2.分布式日志采集系统ELK 3.分布式事务解决方案LCN 4.分布式锁解决方案Zookeeper、Redis 5.分布式配置中心携程阿波罗 6.高并发分布式全局ID生成雪花算法 7.分布式Session框架Spring-Session 8.分布式服务追踪与调用链ZipKin C.项目运营与部署环境 1.分布式设施环境,统一采用docker安装 2.使用jenkins+docker+k8s实...

liuerchong的博客 566

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

软件架构模式的演变都经历了哪些?

软件架构模式的演变,是随着计算机硬件、网络技术、开发工具和需求的变化而发展的一个过程。软件架构将继续发展,以满足日益复杂的业务和技术需求,同时支持开发者更高效地交付高质量软件。

分享技术人生的学习笔记和过往心得,与志同道合者共同进步 1144

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

项目架构的演变

项目架构的演变 垂直架构 今天开始,仙鱼发现要学习的技术真的太多了,就我目前所掌握的来看,我就是一个渣渣,要深挖的东西太多了~对,今天开始我就一个热爱学习的渣渣,本渣决定不学秃头不停止。 今天记录一下新学习的项目架构的演变过程,图文并谈,希望对阅读文章的您能有帮助。 第一代 网络条件:拨号猫的时代 56kb–>7kb/s 项目特点:非常简单,基本上都是文本内容,夸张的来说,基本上...

女神的博客 655

微服务架构的演变过程

简介架构的演变流程,微服务的由来和组成

seeing97的博客 1038

架构演变 -单体到云原生

软件架构的演变反映了技术、业务需求和硬件条件的变化。从早期的单体架构到现代的云原生架构,每个阶段都有其特点和适用场景。单体架构适合小型项目,开发简单但扩展性差;垂直架构通过业务拆分提高了并行开发效率,但存在重复开发问题;SOA架构强调服务复用和异构系统集成,但架构复杂;微服务架构进一步细化了服务,提高了扩展性和容错性,但运维复杂;云原生架构充分利用云平台特性,实现弹性扩展和成本优化。

sv 1714

系统架构演变到Spring Cloud

1. 系统架构演变 随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此也不断的演 进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google 带领下来势汹涌的Service Mesh。我们到底是该乘坐微服务的船只驶向远方,还是偏安逸得过且过? 其实生活不止眼前的苟且,还有诗和远方。所以我们今天就回顾历史,看一看系统架构演变的历程;把握现在,学习 现在最火的技术架构;展望未来,争取成为一名优秀的Java工程师。

zyq13870585230的博客 487

系统架构演变之路

系统架构演变 集中式架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式调用是关键。 存在的问题: 代码耦合,开发维护困难 无法针对不同模块进行针对性优化 无法水平扩展 单点容错率低,并发能力差 垂直拆分 当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高...

一行代码敲一天 1882

数据库架构演变

1、单机时代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放不下时 2.数据的索引(B+ Tree)一个机器的内存放不下时 3.访问量(读写混合)一个实例不能承受 综合上述几个问题,数据库出现了演变! 2、Memcache...

千手修罗之乐少的博客 4111

技术架构解析与演变历程:全面解析编程架构的形成与演变

技术架构解析与演变历程:全面解析编程架构的形成与演变 【下载地址】技术架构解析与演变历程 这是一份深入解析技术架构的演示文稿,特别适合编程新手。它从架构的起源与定义讲起,详细剖析了架构的各个组成部分,如应用场景、业务规模、服务类型等,并探讨了技术选型的关键考量。文稿通过丰富的实例展示了架构随项目发展的演变过程,并分享了实...

gitblog_06725的博客 574
下一篇: maven工程搭建分析
JosBlue
博客等级 码龄9年 21粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值