在架构师的角度去看大型网站架构面临的挑战:技术架构的基本思路

简介: 技术架构的基本思路技术架构既要清晰地划分功能模块或子系统,又要对整个网站系统的技术逻辑有清晰的认知。庞大的技术架构确实会让人望而却步,架构设计也变得无从入手。如果把一个庞大的技术架构分成独立的几部分,然后再逐一深入的话,那么一个庞大的技术架构也不是不可理解的

技术架构的基本思路

技术架构既要清晰地划分功能模块或子系统,又要对整个网站系统的技术逻辑有清晰的认知。庞大的技术架构确实会让人望而却步,架构设计也变得无从入手。

如果把一个庞大的技术架构分成独立的几部分,然后再逐一深入的话,那么一个庞大的技术架构也不是不可理解的

分层思想

架构设计一般被认为是普通编码的进阶,因此我们先从熟悉的编程思想讲起。想必读者一定了解过面向过程和面向对象编程,无论是面向过程编程还是面向对象编程,都需要关心整个业务流程。很多时候,一些重复、通用的步骤会影响我们对整体业务结构的理解,会不自然地产生一种结构混乱的感觉。

除了面向过程和面向对象的编程思想外,当然还有很多其他编程思想,其中面向切面的编程思想也逐渐在网站技术中得到重用。这种编程思想是想通过抽离重复可用的代码(如日志、用户权限等),让开发人员只关注核心代码,而忽略相同且琐碎的部分。不同编程思想下的业务代码对比如图2.9所示。

网络异常,图片无法展示
|

图2.9 不同编程思想下的业务代码对比

从图2.9中可以看出,在面向过程和面向对象的编程思想下,我们需要关心整个业务流程,因此不得不用“认证用户-修改信息-日志记录”和“认证用户-修改密码-日志记录”来描述业务结构;而在面向切面的编程思想下,可以清晰地看到一种层次感,由于这种层次感,我们可以把业务结构简单地归纳为“认证用户-具体业务-日志记录”。

面向切面的编程思想能让我们更轻松地理解业务结构,就是因为这种“层次感”。那么,对于大型网站技术架构而言,如果把庞大的网站系统架构分成独立的几层,用分层的思维去理解庞大的架构,那么设计大型网站技术架构就不再无从下手了。因此,对于大型网站技术架构的设计而言,首先需要有分层思想,然后再对其分而治之。

IaaS、PaaS和SaaS分层管理

一般来说,用分层思想来理解大型网站系统,目前比较公认的架构分层是基础设施服务层(IaaS,Infrastructure as a Service)、平台服务层(PaaS,Platform as a Service)和软件服务层(SaaS,Software as aService)。例如,视频网站在IaaS、PaaS和SaaS分层下的技术架构如图2.10所示。需要注意的是,这里省略了应用程序部分和很多技术细节。

网络异常,图片无法展示
|

图2.10 视频网站在IaaS、PaaS和SaaS分层下的技术架构

IaaS层主要包括服务器、存储设备和网络设备等,即所有物理硬件都属于这一层。大型网站系统的物理设备可以是公有云的服务器(如阿里云服务器),也可以是购买的本地服务器。但无论是何种形式,对这一层的管理,并不是安排线路或者电源,而是估算每一个独立虚拟机的物理配置、磁盘大小及网络带宽等。

PaaS层主要包括一些公共软件,也可以说是大型网站系统的运行环境,如操作系统、分布式数据库和分布式文件系统等。我们对这一层的管理主要是选择需要的软件服务,如数据库和操作系统等。IaaS和PaaS层已经决定了网站系统的运行环境,SaaS层才是需要开发的部分。这里先将SaaS层的内部称为应用程序,具体内容在下面会详细说明。

前端、后端和云计算服务分层开发

本小节继续讨论2.3.2小节中提到的SaaS层中的应用程序。在这一部分,我们不仅要对其分层,而且要对其划分功能模块或子系统。

在第1章中讲过,大型网站一般以B/S架构为主,因此我们可以把应用程序进一步细分成前端、后端和云计算服务。而子系统的划分一般是根据业务架构而定的。以一个视频网站为例,前端、后端和云计算服务分层的技术架构如图2.11所示,其中前端部分的页面可能会使用多个子系统的功能。

网络异常,图片无法展示
|

图2.11 前端、后端和云计算服务分层的技术架构

前端指的是视图层,其作用是交互和展示,一般指的是网页。一些网站系统也有App或者PC软件,如果按照本小节的分层思路,其实它们也算是前端的一部分,不过很少有人这么说。后端指的是业务处理层,其作用是处理前端发送的请求,并且在处理后返回给前端。一些时候,后端也会接收非前端的请求(开放的API接口),不过后端处理的都是一些业务请求,如数据库操作和云计算任务调度等。

云计算服务受后端软件调度。这一部分一般是指运行时间较长或者需要持续运行的软件服务,如视频转码服务和爬虫服务等。在图2.11中,云计算服务被分成两部分,一部分是自身系统提供的云计算服务,另一部分是第三方云计算服务,它们是由第三方平台提供的。这两部分不一定同时存在,需要根据具体项目情况而定。

我们把IaaS、PaaS和SaaS分层架构与前端、后端和云计算服务分层架构合并,并加上一些技术说明(技术说明是参照1.2.7小节中的图1.11添加的),就可以得到一个完整的技术架构,如图2.12所示。

网络异常,图片无法展示
|

图2.12 完整的技术架构

图2.12基本能表述清楚一些必要的技术细节、系统逻辑和子系统划分,具体项目可以根据实际需要补充或省略一些细节。但这样的架构图只是架构设计的一部分,一般还需要使用其他辅助文档进一步明确细节。不过对架构有了清晰的理解后,其他文档的编写并不复杂。

本文给大家讲解的内容是大型网站架构面临的挑战:技术架构的基本思路

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
敏捷开发 缓存 架构师
Apache 架构师总结的 30 条架构原则
Apache 架构师总结的 30 条架构原则
26 0
|
6月前
|
存储 人工智能 架构师
ChatGPT 与软件架构 (4) - 架构师提示工程指南
ChatGPT 与软件架构 (4) - 架构师提示工程指南
75 0
|
5月前
|
Dubbo Java 应用服务中间件
阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。
|
1月前
|
机器学习/深度学习 人工智能 架构师
【架构师】AI时代架构师必备技能
【架构师】AI时代架构师必备技能
|
2月前
|
存储 消息中间件 算法
深度思考:架构师必须掌握的五大类架构设计风格
数据流风格注重数据在组件间的流动,适合处理大量数据。调用返回风格则强调函数或方法的调用与返回,过程清晰明了。独立构件风格让每个构件独立运作,通过接口交互,提升灵活性和可重用性。虚拟机风格则模拟完整系统,实现资源的高效利用。
深度思考:架构师必须掌握的五大类架构设计风格
|
2月前
|
设计模式 架构师 前端开发
架构师进阶篇-什么是架构师
架构师进阶篇-什么是架构师
61 0
|
9月前
|
架构师
架构系列——架构师必备基础:并发、并行与多线程关系
架构系列——架构师必备基础:并发、并行与多线程关系
|
4月前
|
人工智能 运维 架构师
数美科技首席架构师陈建:基于云上弹性的高可用实时风控架构实践
2023年10月31日-11月2日,2023云栖大会在中国杭州·云栖小镇举行,北京数美时代科技有限公司首席架构师陈建在【CloudOps云上运维专场】发表了题为《基于云上弹性的高可用实时风控架构实践》的主题演讲,从在线实时风控架构及高可用解决方案等方向做了分享。
|
5月前
|
Dubbo 应用服务中间件 Docker
阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
什么是微服务架构呢?简单说就是将一个完整的应用(单体应用) 按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发、部署、扩展。服务于服务之间通过注入RESTful api或其他方式调用。