本书主要源自《大型网站技术架构——核心原理与案例分析》,此系列文章是本书的读书笔记,再加上自己的思考整理而来。本人在业java小白工程师。
什么是架构
维基百科的定义:有关软件的整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
系统的各个重要组成部分及其关系构成了系统的架构,这些功能模块可以是具体的功能模块,也可以是非功能的设计与决策,他们相互关联组成一个整体,共同构成了软件系统的架构。
架构的核心要素
系统架构需要平衡以下五个要素之间的关系以实现需求和架构目标,也可以通过考察这些架构要素来衡量一个软件架构设计的优劣,判断其是否符合期望。
1 性能
判断标准:
- 响应时间
- 指应用执行一个操作需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标。
- 并发数
- 反映系统的负载特性,指同时提交请求的用户数目。
- 每秒事务数 TPS
- 指单位时间内系统处理的请求数量,体现系统的整体处理能力。
- 性能计数器
- 对服务器和操作系统性能的一些数据指标:System Load、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等指标。
2 可用性
网站的可用性(Availability)描述网站可有效访问的特性,也就是网站的页面能完整呈现在最终用户面前。衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。
3 伸缩性
所谓伸缩性是指,通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。衡量架构伸缩性的主要标准是是否可以用多台服务器构建集群,是否容易向集群添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。
4 扩展性
主要目的是网站的架构设计能够满足功能扩展,快速响应需求的变化。衡量网站架构扩展性的好坏就是,在网站增加新的产品业务时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。
5 安全性
网站架构设计要保证网站不受恶意访问和攻击,保护网站的重要数据不被窃取。