软件架构演变:从单体架构到LLM链式调用

打印 上一主题 下一主题

主题 840|帖子 840|积分 2520

0 媒介

软件架构——我们数字世界的蓝图——自20世纪中叶计算机时代诞生以来,已经发生了巨大演变。 20世纪60年代和70年代早期,以大型主机和单体软件为主导。而今天,数字范畴已完全不同,运行在由云计算、API毗连、AI算法、微服务和编排平台组成的分布式网络上。
软件架构是如何随着岁月演变的?回首几十年来的技术进步,我们可以看到商业需求、市场趋势和工程实践的变革如何影响了软件架构。
1 大型主机和单体架构:约1940年代

最早的计算机是大型主机计算机——占据一个房间的大型强力硬件装备。大型主机最初是独立的机器,能够实行复杂的计算任务。在20世纪70年代之前,向大型主机发送指令通常使用打孔卡或磁带,输出则通过打印机接收。
1950年代的数据中心解释图示,包含中央处置惩罚器、磁带单位、磁带控制器、输入/输出控制器、控制台、打孔卡、卡片读取器、磁盘存储和高速打印机:

20世纪70年代之前,数据中心中安装了可以接收打孔卡或磁带指令的大型主机。图片来源:未知。
第一台大型主机计算机是哈佛马克一号(Harvard Mark I)和ENIAC,分别在20世纪30年代和40年代为军事和研究目标而开发。1948年,首台商用大型主机UNIVAC问世。接下来的几十年,大型主机凭借其在批处置惩罚事务数据方面的卓越本事,迅速被银行、金融和航空公司广泛采用。至今,很多此类系统仍在使用中。
大型主机应用通常使用COBOL(通用商业导向语言)编写,至今仍在大型主机环境中盛行。这些应用的软件架构是单体式的,即整个代码库是一个整体,包含数据架构、应用方法、数据库毗连、展示逻辑等,未做模块化设计。要更新这些组件的任何一个,开发人员都需要访问整个代码库,并将其以一个整体包重新部署。
单体架构图示,用户界面、应用逻辑和数据库存储在单一代码库中,一起部署:

2 网络和客户端-服务器:约1950年代

网络毗连计算机并促进它们之间的通讯——从大型主机到终端、大型主机到大型主机,后来扩展到客户端到服务器。从1958年开始,网络技术的发展使得大型主机可以通过电子方式毗连,将其变化为可以毗连多个终端的多用户计算机。代替了打孔卡和打印机,人们可以使用显示器、键盘和下令行界面(CLI)来发送和接收数据。
技术限制制约了最初的几台互联计算机系统。比方,多路复用大型主机只能在本地使用,因为电缆长度的限制要求终端与大型主机的位置非常接近。这些早期的数据中心不但包含计算机,还有大量的人力向大型主机发送任务。
ARPANET是首个公共的广域计算机网络,1969年正式上线。它使用分组交换来传输数据,这成为了我们今天所知的当代互联网的基础。
网络技术在1980年代推动了客户端-服务器结构的普及,其中应用分为服务器软件和通过计算机网络通讯的客户端软件。这种结构在今天很常见:客户端,通常是台式计算机,远程向服务器发出请求,服务器返回相应。通过分配计算资源,服务器负责数据处置惩罚和检索,而客户端负责展示数据。
客户端-服务器架构图示,客户端侧包含用户界面,向服务器侧发出请求,应用逻辑和数据库存储在服务器上:

首批客户端-服务器应用是邮件服务、Web服务器以及其他具有在线功能的桌面应用步伐。如今,客户端-服务器已成为大多数应用步伐的标准范式,更广义上涵盖了服务请求方和服务提供方的通用模子。
只管存在两层分离,很多此类应用步伐仍旧是单体构建的。所有应用功能都在单一代码库中,精密耦合,并共享一个数据库的访问权限。
3 万维网、网站和Web应用:约1980年代

1983年标志着互联网时代的到来。 互联网是使用TCP/IP协议在装备和应用之间传输通讯的全球计算机网络系统。这是FTP步伐、SSH系统以及当然还有万维网(WWW)的基础。
只管互联网和万维网如今常常被混用,但万维网现实上是险些十年后在1990年才发明的。万维网是一个信息系统——一个由HTML内容和链接组成的网络——通过互联网使用HTTP协议共享和组织信息。这种信息存储方式在全球范围内可访问,为网站和网络编程时代铺平了门路。
早期的网站是静态页面,从Web服务器上显示数据。1993年“通用网关接口”(CGI)的引入,使Web的交互性开始崭露锋芒,开启了Web应用的前景。
随着1995年JavaScript的发明,Web交互性迅速发展,JavaScript将脚本逻辑引入客户端。它很快成为Web编程的新标准,Web服务器可以更轻松地提供动态、交互式内容。早期的论坛、公告栏和Web表单正是这一时期的产物。
Web的发明及其潜在大概性很快引发了下一波应用开发浪潮。与其为应用步伐构建一个专用客户端,不如简朴地构建一个可以托管在Web上的网站。
4 面向服务的架构和Web服务:约1990年代

随着应用开发的发展,单一代码库变得越来越难以管理,而且很明显一个系统中包含的功能或数据可以在另一个系统中复用。
为相识决这些问题,模块化成为讨论的主题。在20世纪90年代,服务器端进一步分为两层:应用服务器和数据库服务器。应用服务器存储所有的应用和业务逻辑,而数据库服务器则存储数据记录,这种分离低落了高处置惩罚量下的延迟。
大约在同一时间,面向服务的架构(SOA)作为一种架构模式出现,其中软件功能被设计成独立的服务,只要系统遵循其使用规范,这些服务可以与任何系同一起使用。SOA鼓励开发企业应用时将其分解为疏松耦合的服务,这些服务通过网络上的通讯协议交互,这种模式至今仍占主导地位。
在SOA模式下,一个购物应用大概包含多个服务:一个用于库存跟踪,另一个用于订单处置惩罚,还有一个用于用户认证。与基于微服务的应用不同,SOA模式中的服务仍旧通过应用层共享同一个数据库。
面向服务的架构图示(SOA),应用逻辑被分成独立的服务,只管这些服务共享一个数据库:

随SOA发展,出现了订定一套标准和协议以定义这些服务与各种客户端之间的交互需求。DCOM和CORBA是一些非基于Web的标准,但很快被SOAP和REST API等基于Web的标准所代替。SOA提供了一种方式,让不同提供商的服务可以整合到一个应用中,或者让同一个服务在不同的客户端上使用,比如Web门户或专用桌面接口。
5 虚拟机和云计算:约2000年代

SOA为从传统的桌面应用向一种新型软件应用模式——SaaS(软件即服务)过渡铺平了门路,但虚拟机和云计算的出现进一步推动了未来几十年SaaS产品的快速增长。
虚拟机(Virtual Machine)是存在于软件层而非物理机上的计算机系统,由管理步伐(hypervisor)支持实现。 使用虚拟机,可以更轻松地创建、更新和销毁多个运行不同操作系统的机器,从而在应用开发过程中最大化资源分配和使用。
虚拟机图示,虚拟机通过管理步伐运行在同一物理机上:

固然机器虚拟化自20世纪60年代就已存在,但直到2000年代随着Linux、Microsoft和VMware的快速发布,才进入主流使用阶段。这段时间,亚马逊等公司发现了虚拟化带来的商业时机:管理型云计算服务。物理裸机昂贵且难以管理,对于需要扩展的公司来说是一个限制因素。有了Amazon EC2这样的云计算服务,公司可以租用虚拟机获得处置惩罚本事并根据需求进行扩展。
像Facebook和Netflix这样的新兴公司,得以专注于构建其软件功能,而无需维护底层硬件和数据中心。启动的技术门槛明显低落,加速了未来数十年初创公司和数字化原生业务的崛起。随之而来的是分布式计算和软件架构的下一步发展:微服务。
6 API、容器与微服务的崛起:约2010年代

2010年代是多个向分布式计算趋势搜集的时代。由于需要让第三方访问其服务,2000年Salesforce和eBay推出了首批商业API,答应其互助伙伴或客户在本身的网站或应用中集成功能。从Twitter和Google Maps到Stripe、Twilio以及如今的OpenAI,API经济迅速膨胀,推动了网络上的功能集成。
同样,微服务架构在像Amazon和Netflix这样的扩展型公司中开始盛行起来,这些公司需要加速和简化开发周期,而这一历程常被单体代码库拖慢。通过将应用分解为独立的微服务,每个微服务都有本身的数据库,各团队可以独立更新和部署,带来了更快速的发布和改进。
基于微服务的架构图示,独立的服务与独立数据库毗连,可以独立部署:

固然有多种方式来打包和部署微服务——可以运行在物理机或虚拟机上——微服务架构的增长也得益于容器的出现。与虚拟机类似,容器也是一个抽象层,概念上自20世纪70年代提出,但直到2013年Docker开源后才进入企业范畴。
与虚拟机相比,容器提供了更高程度的隔离,因此多个相同应用的实例和版本可以在同一操作系统上运行。运行应用步伐所需的所有组件——代码、运行时、库、依赖项和系统工具——都存储在容器内,这为部署应用或微服务提供了更高的可移植性和可扩展性。
容器图示,容器是一种抽象层,能实现应用或微服务的隔离:

当代应用开发需要一种健全的方式来架构和整合本地或第三方服务、数据库等各种组件。这就引出了今天的软件架构:编排和事件系统。
7 编排、事件系统与分布式依赖问题的解决:当代

随着计算模式向分布式模式发展——微服务、API以及某种程度上的SOA——软件架构面临一个突出的挑衅:这些独立的服务、数据库和组件如何进行通讯和交互,以形成一个协调一致的流程?
解决分布式服务间依赖问题的主要方法有两种:事件驱动架构和编排。
7.1 事件驱动架构

在事件驱动架构中,服务会将数据推送到一个服务总线或事件管道中,任何毗连的服务都可以读取并在必要时实行相关操作。 整体系统相应事件或状态变革,而不跟踪单个事件对其他事件的影响,从而低落服务之间依赖性。
只管服务总线的概念自SOA出现以来就已存在,但随着微服务的普及,它得到了进一步推广,代表性技术包括Kafka和Amazon SQS。事件驱动系统使得系统可以及时更新并提高相应本事,同时在并行处置惩罚中提拔吞吐量。这一架构支持快速更新的系统,如网约车或机票生意业务系统。
事件驱动架构图示,服务(生产者)将数据(称为事件)推入事件流中,其他服务(消费者)可以订阅并接收事件:

7.2 编排

编排为解决微服务依赖性问题以及事件驱动架构中遇到的问题提供了另一种可行方案。在编排模式中,中心协调器按照预定义的流程调度每项任务或微服务,仅在前一任务成功完成后才继承下一个任务。 不同于事件流,编排器会跟踪整个流程的进度,使开发人员能够更轻松地追踪和调试错误,实行故障赔偿机制。
编排图示,各服务、数据库、事件流等毗连至中央编排器,协调各组件进入有向的工作流:

8 使用xxx Conductor

使用先进的工作流编排平台如xxx Conductor,可在分布式计算范畴开释开发者的生产力。广泛应用于[微服务编排]、[事件处置惩罚]和[LLM链式调用],xxx Conductor资助团队轻松构建具备高弹性和可扩展性的系统:


  • 可视化工作流编辑器— 使用数十种集成、定制任务和内置的系统任务及操作器,涵盖API、Webhook、数据库及LLM,通过可视化方式构建和编辑工作流
  • 弹性本事—在Conductor的妥当基础办法上以最小延迟运行数百万个并发工作流,设计为恒久、快速和具备冗余
  • 故障处置惩罚—提供速率限制、重试计谋、超时等原生支持
  • 版本管理—无中断地对工作流进行版本控制,确保生产运行稳定
  • 内省与指标—检查工作流性能和日记,以便于测试和调试,并获取吞吐量等聚合分析
  • 企业级安全性—通过SSO、RBAC和密钥变量实现安全访问
关注我,紧跟本系列专栏文章,咱们下篇再续!
   作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等范畴都有丰富实践经验。
  各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
  负责:
  

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建立
  • 生意业务平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网毗连平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发发掘经验
  • 保举系统项目
    目前主攻市级软件项目设计、构建服务全社会的应用系统。
  参考:


  • 编程严选网
   本文由博客一文多发平台 OpenWrite 发布!

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表