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

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

技术架构的基本思路

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

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

分层思想

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

除了面向过程和面向对象的编程思想外,当然还有很多其他编程思想,其中面向切面的编程思想也逐渐在网站技术中得到重用。这种编程思想是想通过抽离重复可用的代码(如日志、用户权限等),让开发人员只关注核心代码,而忽略相同且琐碎的部分。不同编程思想下的业务代码对比如图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日志并进行多维度分析。
相关文章
|
7月前
|
敏捷开发 缓存 架构师
Apache 架构师总结的 30 条架构原则
Apache 架构师总结的 30 条架构原则
83 0
|
存储 人工智能 架构师
ChatGPT 与软件架构 (4) - 架构师提示工程指南
ChatGPT 与软件架构 (4) - 架构师提示工程指南
149 0
|
4月前
|
存储 架构师 测试技术
架构之道——人人都是架构师
本文的探讨和编写主要围绕三个方面:架构是什么?架构师要解决的问题有哪些?解决这些问题的方法论是什么?最后作者希望人人都能具备架构师思维。
|
7月前
|
机器学习/深度学习 人工智能 架构师
【架构师】AI时代架构师必备技能
【架构师】AI时代架构师必备技能
149 5
|
2月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
高并发下的秒杀系统设计是一个复杂的挑战,涉及多个关键技术点。40岁老架构师尼恩在其读者交流群中分享了16个关键架构要点,帮助解决高并发下的秒杀问题,如每秒上万次下单请求的处理、超卖问题的解决等。这些要点包括业务架构设计、流量控制、异步处理、缓存策略、限流熔断、分布式锁、消息队列、数据一致性、存储架构等多个方面。尼恩还提供了详细的实战案例和代码示例,帮助读者全面理解和掌握秒杀系统的架构设计。此外,他还分享了《尼恩Java面试宝典》等资源,帮助读者在面试中脱颖而出。如果你对高并发秒杀系统感兴趣,可以关注尼恩的技术自由圈,获取更多详细资料。
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
|
2月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
高并发下,如何设计秒杀系统?这是一个高频面试题。40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试Shopee时遇到了这个问题,未能很好地回答,导致面试失败。为此,尼恩进行了系统化、体系化的梳理,帮助大家提升“技术肌肉”,让面试官刮目相看。秒杀系统设计涉及16个架构要点,涵盖业务架构、流量架构、异步架构、分层架构、缓存架构、库存扣减、MQ异步处理、限流、熔断、降级、存储架构等多个方面。掌握这些要点,可以有效应对高并发场景下的秒杀系统设计挑战。
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
|
7月前
|
Dubbo Java 应用服务中间件
阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。
|
5月前
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
153 10
|
5月前
|
存储 运维 架构师
架构之道:人人都是架构师(1)
架构之道:人人都是架构师
210 8
|
7月前
|
运维 架构师 安全
架构师养成手册:架构师职责
小米是一名热情的技术爱好者和架构师,他探讨了架构师的角色和职责。主要涉及六个方面:顶层设计,需与企业战略目标对齐,制定架构原则;规划可适应未来变化的企业架构,分析需求并关注技术趋势;全局视角制定可落地的架构方案,兼顾全局与局部优化;技术选型与难题解决,选择合适技术并解决实际问题;关注方案与代码的广度与深度,确保宏观设计与微观实现的统一;同时,架构师还需具备管理能力,包括团队协作、资源调配和风险管理。
210 11