ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【系统架构】架构演进 [打印本页]

作者: tsx81428    时间: 2024-9-7 01:57
标题: 【系统架构】架构演进
系列文章目次

第一章 系统架构的演进
第二章 REST风格架构
第三章 事件处理


  

媒介

最近笔者一直在学习系统架构的相关知识,对系统架构的演进过程做了一番归纳整理。我们知道,如今盛行的系统架构都不是突然出现的,而是随着互联网的发展,业务复杂度的提升,为了适应各种复杂场景渐渐设计演化出来的。下面我将分析架构演进过程中出现的几种具有代表性的架构方式,他们为什么出现 ?办理了什么问题 ?又为什么会被镌汰?让我们带着疑问往下看。

一、原始分布式

原始分布式架构指的是早期的分布式系统设计,这些系统在20世纪70年代末至80年代初开始出现,那时计算机技术正处于从大型主机系统向个人计算机(微型机)变化的阶段。在这个时期,硬件资源相对有限,网络通信技术尚不成熟,因此分布式架构面对诸多挑战。以下是原始分布式架构的一些特点和问题:
原始分布式期间,最初的设计愿景是符合UNIX的分布式设计哲学:即保持接口与实现的简单性,比系统的任何其他属性,包括准确性、一致性、完备性都更加重要
同时,在摸索过程中也得到了一个非常重要的教导:某个功能能够进行分布式,并不意味着其就应该进行分布式,强行进行分布式操纵,只会自食苦果

二、单体系统期间

这种架构是整个架构史上出现最早,使用范围最广,使用人数最多的架构风格了。无论你的业务有多复杂,都可以使用这种架构,只不过是性能、扩展性、可靠性、可维护性的问题。这种架构本身比力简单。需要说明的是,这种被称为单体架构的架构风格也是后来出现了微服务架构风格后才追认的,一开始根本就没有架构风格可言,也没有谁有概念去研究和区分架构风格。全部人都认为软件结构就应该是如许的,没有其他的方式,直到随着技术的发展,出现了性能瓶颈,单体架构变得越来越难用,使用这种架构的技术本钱逐渐大到无法忍受时,才慢慢探索出了后来的架构风格。单体架构重要有以下几个特性:
我们一样平常说的都是大型的单体架构应用,这种架构要求每一处代码,每一个组件设计都尽大概的完美、可靠,但是这种提升是有限度的,单体架构在大规模业务,超高并发的请求量下显得束手无策。
固然不是说单体架构就应该镌汰,完全否决。采取什么架构要根据场景来,一样平常规模较小的系统,采取单体架构是最符合的选择,复杂度不高,快速搭建出应用。
单体系统又叫"巨石系统",从名字上看好像是不可拆分的,但实际上并不是完全不可拆分。起码代码结构上可以按照差别的业务模块划分。纵然是一个完备的单体应用,也可以部署多个副本系统,通过负载均衡技术来分摊流量压力。
单体系统真正的缺陷不是怎样拆分,而是拆分后的自治、隔离。单体系统全部的代码都运行在一个进程内,全部模块、方法的调用都不需要考虑网络分区、对象复制等棘手的事和性能丧失。在获得这些好处的同时,一旦代码出现缺陷,造成了资源的浪费,那就会导致整个应用崩溃,影响是灾难性的。这在大型互联网公司是不能忍受的。

三、SOA期间

起首介绍SOA架构出现前的三种常用的架构模式。
烟囱架构

烟囱架构设计是一种信息孤岛式的架构模式。指的是一种与其他相关信息系统完全没有互操纵大概和谐工作的设计模式。如许的系统其实并没有什么架构设计可言。重要特点如下:
烟囱式架构在早期IT系统建立中较为常见,特别得当那些需求稳固、变动频率低的场景。然而,在当前快速迭代、高并发和需要高度灵活的业务环境下,烟囱式架构逐渐显现出其局限性,促使企业转向微服务、SOA等更灵活的架构模式。
微内核架构

微内核架构又叫插件式架构。这种架构比力好理解,就是把一些公用的基础服务、数据、资源整合到一起,提供一个被全部其他业务公用的核心依赖,其他的业务模块以插件的情势存在。如许也能可以提供可扩展、灵活的、自然隔离的功能特性。

事件驱动架构

这种架构是为了能让子系统互相通信,在这些子系统之间建立一套事件队列管道,来自系统外部的消息以事件的情势发送至管道中。各个子系统就从这个管道中订阅本身感爱好、能处理的事件消息,亦可以本身发送新的事件到管道队列中去。如许一来,每个消息的处理者都是高度解耦独立的,同时又能够通过事件队列管道进行通信。
笔者履历过的一个项目是开发一个医院内部耗材管理软件。医院一样平常有许多个信息系统,比如his系统、电子病历系统、门诊系统,医疗设备管理系统等等,少的十几个,多的几十个。那这些系统之间要想建立联系,最直接的方式就是互相做接口通信,这个工作量是比力大的,很不灵活,而且这些系统有一些数据是公用的,比如医护人员账号,院内科室部门划分等,在每个系统上都要维护一次,有改动则每个系统都要本身添加一次。笔者开发的软件作为医院内部软件的一个子软件,自然避免不了和其他系统交互,获取基础数据。我碰到过有许多医院都有一个类似事件队列管道的基础服务中心组件,来承担者各个系统之间交互的中介者角色,每个系统都会发布一些事件消息到事件队列管道中去,以供其他系统订阅获取。

SOA架构的出现就是为相识决单体架构所不能办理的问题,譬如步伐出错,获得自治与隔离的能力,实现技术异构等目标。SOA架构的几个特征如下:
SOA架构明确采取了SOAP作为长途调用协议,依靠SOAP协议族(WSDL、UDDI、和WS-*)来完成服务的发布、发现和管理;利用企业服务总线(ESB)的消息管道来实现各个子系统之间的交互,让各个子系统不需要直接相互依赖,通过ESB就可以实现相互通信,实现了服务之间的松耦合,为背面的服务编码,服务管理提供了良好的基础。
SOA架构不但仅关注技术,还关注研发过程中涉及到的需求、管理、流程和组织。终极目标是想提供出一套自顶向下的研发方法论,全部的企业只需要根据SOA的理论思绪,就可以办理软件开发中的全部问题。
但是SOA终极照旧寂静下去了,本质缘故因由是它过于严格的规范定义带来太过的复杂性,构建在SOAP基础上的ESB、BPM、SCA、SDO等上层技术组件,使得其更加复杂。这就对开发人员有很高的要求,必须对这一套技术掌握很深才能进行软件开发工作。它得当实现多个异构大型系统之间的复杂集成交互,它不是一种普适性的软件架构办理方案,简单场景使用SOA架构又得不偿失,以是终极落幕了。
四、微服务架构

微服务架构将一个大型的应用步伐拆分成一组小型、自治的服务。这些服务围绕着业务功能构建,可以通过轻量级通信机制(通常是HTTP RESTful API)相互通信。下面是微服务架构的一些核心特点和原则:
微服务架构的优势在于进步了系统的灵活性、可维护性和可扩展性,但同时也带来了服务间的复杂和谐、数据一致性挑战以及运维复杂度增长等问题。
微服务是从SOA演化来的,但笔者认为微服务和SOA是两种差别的架构风格,只管他们的表现情势一致,但微服务没有同一的尺度或规范,SOA却有严格同一的技术尺度和规范。微服务对于服务的注册、管理、隔离、发现、负载均衡等有差别办理方案,没有同一技术尺度,这带来了极大的自由度,对于普通开发者而言,微服务架构是非常和睦的,灵活的架构设计,熟悉什么什么组件就用什么,但对于架构设计者来说就没那么友好了,需要架构师有较强的架构能力才能选择符合的架构,因为没有尺度,需要根据差别的场景选择符合的办理方案。
五、后微服务期间

后微服务期间,这一概念固然没有明确的定义边界,但可以理解为在微服务架构得到广泛应用并逐渐成熟之后,软件开发和架构设计领域的新趋势和思考。以下是几个大概标志着进入后微服务期间的特点和发展方向:
后微服务期间更加强调在微服务基础上的优化、整合与智能化,以应对更加复杂多变的业务需求和技术挑战。
六、无服务期间

无服务器(Serverless)期间是指一种云计算的实行模子,此中开发者无需直接管理服务器或其运行环境,而是将重点放在编写代码和构建应用逻辑上。云服务商自动管理和动态分配计算资源,按需运行代码片段(通常称为“功能”)。以下是无服务器架构的几个核心特点:
代表性技术和服务包括AWS Lambda、Azure Functions、Google Cloud Functions等。无服务器架构正在推动软件开发进入一个更高效、灵活的新期间。
总结

架构的演进会是持续的,没有一种架构会一直存在下去,持续大规模使用,只能说在当前环境下得当采取什么样的架构,微服务和无服务之后大概还会出现其他的架构风格,但是每个阶段出现的架构都是值得我们去探索思考的,理解每种架构出现的意义和被镌汰的缘故因由,才能更好办理眼下的软件开发问题,为未来架构演进寻找出路。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4