最新消息:

网站架构技术知识

学习 eben 来源:知乎专栏 106浏览 0评论

网站架构知识学习

看一本书就应该有所收获,最近阅读完一本名叫《大型网站技术架构》的书籍,趁着时间还早,写一个人总结。本书作者李智慧,曾在阿里巴巴担任技术专家,参与阿里巴巴基础技术平台开发和架构设计。本书也是以比较通俗的语言介绍网站的技术架构。本人学浅,对书中的知识点并没有达到融会贯通的地步,只能根据自己的理解整理出此篇,以供同仁有所简单的了解,并对我的输出做出修改。纵观本书,一句话“技术之路,道路且长”

网站架构技术知识-1

网站架构的设计

什么是网站架构的设计

对网站的软件结构、逻辑结构、物理结构、层次结构、数据访问模型、硬件配置、网络拓扑结构等等进行总体的设计。

什么是网站的部署

网站发布。网站的开发完成后,网页程序及相关的数据库等发布在真实的网络及硬件环境中,并能够正常运行。

网站架构设计与部署的目标

  • 高可用性
  • 可扩展性
  • 可视性
  • 高性能
  • 安全性

大型网站的架构

网站架构模式

所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠运行灯一系列问题与挑战。为此,在实践中提出了许多解决方案,以实现网站高性能、高可靠性、易伸缩、可扩展、安全等各种技术架构目标

  • 分层

    在网站的分层架构中,常见的为3层,即应用层、服务层、数据层。应用层具体负责业务和视图的展示;服务层为应用层提供服务支持;数据库提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。

  • 分离
    网站越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分隔开来,包装成高内聚低耦合的模块单元,不仅有助于软件的开发维护也便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。比如在应用层,将不同业务进行分隔,例如电信智能家居项目,分为网上商城和用户系统和管理平台。当然如果系统发展到足够大,网上商城即可以拆分为订单系统、支付系统、用户系统等;而设备管理系统根据根据功能的不同,可以拆分为设备控制系统、设备管理系统、用户信息管理系统等。
  • 分布式
    将一个业务分拆多个子业务,部署在不同的服务器上,目前dubbo是使用最为广泛的技术。相关知识见 blog.csdn.net/u01314278
  • 集群
    通俗讲即同一个业务,部署在多个服务器上。服务器集群能够为相同的服务提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中加入新的机器即可;另外可以实现当其中的某台服务器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的服务器上,因此可以提高系统的可用性
  • 缓存
    缓存就是将数据存放在离计算距离最近的地方以加快读取速度。使用缓存有两个条件:访问数据热点不均衡,即某些频繁访问的数据需要放在缓存中;数据在某个时间段内有效,具体技术有:

    CDN:内容分发网络,缓存网站的一些静态资源;

② 反向代:部署在网站的前端,最先访问到的就是反向代理服务器;

③ 本地缓存:在应用服务器本地缓存热点数据,无需访问数据库;

   ④ 分布式缓存:应用程序通过网络通信访问缓存数据;

  • 异步
    业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。异步消息队列可以提高系统可用性、加快网站响应速度,消除并发访问高峰。
  • 冗余
    在集群中机器数量达到一定数量的时候,部分机器宕机会是常态,因此需要数据冗余备份,数据库定期备份称之为冷备份,主从分离实时同步称之为热备份
  • 自动化
    发布过程自动化、代码管理自动化、自动化测试、自动化安全扫描、自动化低级bug扫描、自动化监控、自动化报警、自动化失效转移、自动化降级。
  • 安全

网站架构的核心要素

软件架构即“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计”。一般来说软件架构需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。

性能

响应时间、并发访问数量、访问吞吐量来衡量一个网站的性能指标。所以优化网站性能的手段有:

Web前端性能优化
可以通过浏览器缓存、页面压缩传输、合理布局页面等手段;CDN加速,反向代理等手段。

应用服务器性能优化
可以使用服务器本地缓存和分布式缓存,也可以通过异步操作方式来加快响应,高并发问题可以使用集群方式。

数据库服务端
可用使用索引、缓存、SQL语句优化等手段。

  • 思维导图
网站架构技术知识-1

高可用

衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。

  • 高可用架构
    设计的目的是为了保证服务器硬件故障服务依然可用,数据依然保存并能够被访问。采用的手段有:数据和服务的冗余备份+失效转移机制。
  • 高可用服务
    通过负载均衡进行无状态服务的失效转移
  • 思维导图
网站架构技术知识-2

网站伸缩性

所谓伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。
衡量架构伸缩性的主要标准就是是否可用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总服务器数量是否有限制。

  • 网站架构的伸缩性设计
    可分为: ① 不同功能进行物理分离实现伸缩; ② 单一功通过集群规模实现伸缩
  • 应用服务器集群的伸缩性设计
    使用负载均衡手段实现伸缩,有关负载均衡的知识详见:blog.csdn.net/zhoudaxia
  • 分布式缓存集群的伸缩性设计
    分布式缓存集群伸缩性设计的目标:让新上线的缓存服务器对整个分布式缓存集群影响最小,也就是说新加入缓存服务器后应使整个缓存服务器集群中已经缓存的数据尽可能还被访问到。
  • 数据存储服务器集群的伸缩性设计
    关系数据库集群的伸缩性设计:主从读写分离
  • 思维导图
网站架构技术知识-3

扩展性

即项目之间的耦合性,指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。

  • 思维导图
网站架构技术知识-4

安全性

  • 思维导图
网站架构技术知识-5

站从小到大演变过程中的技术升级路线;

  • (1) 初始阶段网站架构:
    一台Server就刚需—应用程序、数据库、文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的网站
网站架构技术知识-6
  • (2) 应用和数据服务分离:
    随着用户数量的增多,可以将应用服务与数据服务分离以提高性能。三台Server平天下—业务发展,单台不再适应业务的发展,将应用和数据分离后成三台Sever(应用服务器、文件服务器与数据库服务器)。分离后三台Server对硬件资源的需求各不相同:应用服务器需要更快更强大的CPU,而数据库服务器需要更快的硬盘和更大的内存,文件服务器则需要更大的硬盘;
网站架构技术知识-7
  • (3) 使用缓存改善网站性能:
    用户继续增多,数据库的压力太大,此时考虑使用缓存。3+X的Server模式—减少数据库访问压力,提高网站的数据访问速度。缓存又可以分为:本地缓存和远程缓存(可以是分布式的),本地缓存访问速度快,但数据量有限;远程分布式缓存可以集群,因此容量不受限制;
网站架构技术知识-8
  • (4) 使用应用服务器集群改善网站并发处理能力:
    增加缓存的做法缓解了数据服务器的压力,接着考虑缓解应用服务器的压力,将应用部署到集群中。在这个集群的前端添加负载均衡服务器以进行负载均衡
网站架构技术知识-9
  • (5) 数据库读写分离:
    使用缓存后绝大部分都可以不通过DB就能完成,但仍有一部分(缓存访问不命中、缓存过期)和全部的写操作需要访问DB,在网站的用户达到一定规模后,DB因为负载压力过高成为网站的瓶颈。大部分主流DB都提供主从热备功能,利用这一功能就可以配置两台DB主从关系,一台数据更新同步到另一台Server上。网站利用DB的这一功能,实现DB读写分离,从而改善DB负载压力。
网站架构技术知识-10
  • (6) 使用反向代理和CDN加速网站响应:
    数据库读写分离缓解了数据服务器的压力,接下来考虑解决应用服务器的压力。在负载均很服务器加入反向代理服务器和CDN服务器。CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理则部署在网站的中心机房。使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。
网站架构技术知识-11
  • (7) 使用分布式文件系统和分布式数据库系统:
    CDN和反向代理缓解了应用服务器的压力,接着又得解决数据服务器的压力。随着网站业务的不断增长,数据库虽然采用了读写分离机制,仍然不能满足性能需要。考虑使用分布式文件系统和分布式数据库系统
网站架构技术知识-12
  • (8) 使用NoSQL和搜索引擎:
    NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
网站架构技术知识-13
  • (9) 业务拆分:
    通过分而治之的手段将整个网站业务分成不同的产品线,如淘宝将首页、商铺、订单、卖家、买家等拆分成不同的产品线,分归不同的业务团队负责。各个应用之间可以通过建立一个超链接建立关系,也可以通过消息队列进行数据分发。
网站架构技术知识-14
  • (10) 分布式服务:
    既然每一个应用系统都需要执行许多相通的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。

经典语录

  • 寻找最合适的,慎防过度设计
  • 网站的业务发展—业务成就了技术,事业成就了人,而不是相反
  • 随网站所需灵活应对,大型网站不是从无到有一步就搭建好一个大型网站,而是能够伴随小型网站业务的渐进发展,慢慢地演化成一个大型网站。
  • 技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段来解决。这句话我的理解,架构没有好坏之分,适合业务的就是最好的,同时在设计架构时不要局限于技术。

 

转载请注明:落伍老站长 » 网站架构技术知识

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址