读书笔记-《大型网站技术架构》概述

书名:《大型网站技术架构:核心原理与案例分析》
作者:阿里架构师——李智慧
声明:本文是我读本书的笔记,算不上原创,也算不上是转载,如果csdn能多一个文章标题,那也是极好的,哈哈

一、概述


1.大型网站架构演化
1.1、大型网站软件系统的特点:
高并发,大流量
高可用
海量数据用户分布广泛,网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
渐进式发展
1.2、大型网站架构演化发展历程
1)初始阶段的网站架构
{应用服务器{应用程序}{文件}{数据库}}
2)应用服务和数据服务分离
{应用服务器}{文件服务器}{数据库服务器}
3)使用缓存改善网站性能
80%的业务访问集中在20%的数据上 二八定律
缓存{本地服务器上的本地缓存}{分布式缓存服务器上的远程缓存}
{应用服务器 <本地缓存>}{文件服务器}{数据库服务器}{分布式缓存服务器n <远程分布式缓存>}
4)使用应用服务器集群改善网站并发处理能力(增加服务器分担访问存储压力):可伸缩集群架构
对大型网站而言,不管多么强大的服务器(线性增长)都满足不了网站持续增长的业务需求(指数增长)
{指数增长速度大于线性增长速度}
{负载均衡调度服务器}{应用服务器n <本地缓存>}{文件服务器}{数据库服务器}{分布式缓存服务器n <远程分布式缓存>}
5)数据库读写分离
数据库主从热备功能:将一台服务器(写)的数据更新同步到另一台服务器(读)上(读写分离)


      {负载均衡调度服务器}{应用服务器n <本地缓存> <统一数据访问模块>}{文件服务器}

{数据库服务器<主写><从读>}{分布式缓存服务器n <远程分布式缓存>}
6)使用反向代理和CDN加速网站响应
CDN部署在网络提供商的机房
反向代理网站中心机房

{CDN服务器}{反向代理服务器}


{负载均衡调度服务器}{应用服务器n <本地缓存> <统一数据访问模块>}{文件服务器}

{数据库服务器<主写><从读>}{分布式缓存服务器n <远程分布式缓存>}

原理:缓存 目的:加快用户访问速度,减轻后端服务器负载压力


7)使用分布式文件系统和分布式数据库系统


{CDN服务器}{反向代理服务器}


{负载均衡调度服务器}{应用服务器n <本地缓存> <统一数据访问模块>}{文件服务器n}

{数据库服务器n <主写><从读>}{分布式缓存服务器n <远程分布式缓存>}


分布式数据库是网站数据库拆分的最后手段,只有在表单数据规模非常庞大的时候才使用;
网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。


8)使用NoSQL和搜索引擎(数据存储和检索)


{CDN服务器}{反向代理服务器}


{负载均衡调度服务器}


{应用服务器n <本地缓存> <统一数据访问模块>}

{搜索引擎服务器}{NoSQL服务器}
{文件服务器n}{数据库服务器n <主写><从读>}{分布式缓存服务器n <远程分布式缓存>}


9)业务拆分

将一个网站拆分成许多不同的应用,每个应用独立部署维护,应用间通过超链接建立关系;

通过消息队列进行数据分发;


最多是通过访问同一个数据存储系统来构成一个关联的完整系统。

{CDN服务器}{反向代理服务器}


{负载均衡调度服务器}

{B应用服务器n}
{消息队列服务器}
{A应用服务器n [应用程序] <本地缓存> <统一数据访问模块>}


{搜索引擎服务器}{NoSQL服务器}
{文件服务器n}{数据库服务器n <主写><从读>}{分布式缓存服务器n <远程分布式缓存>}


10)分布式服务
将共用的业务提取出来,独立部署。有这些可复用的业务连接数据库,提供共同业务服务,而应用系统只需要管理用户
界面,通过分布式服务调用共同业务服务完成具体业务操作。

{CDN服务器}{反向代理服务器}


{负载均衡调度服务器}

{B应用服务器n}{A应用服务器n}
{消息队列服务器}
{分布式服务i服务器n [应用程序] <本地缓存> <统一数据访问模块>}


{搜索引擎服务器}{NoSQL服务器}
{文件服务器n}{数据库服务器n <主写><从读>}{分布式缓存服务器n <远程分布式缓存>}


2.大型网站架构模式
2.1网站架构模式
目的:实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标
2.1.1分层(横向)
应用层(视图层、业务逻辑层)
服务层(数据接口层、逻辑处理层)
数据层
分层对网站支持高并发向分布式发展至关重要,从规模很小的时候就应该采用分层的架构

2.1.2分割(纵向)
将不同的功能和服务分割,包装成高内聚低耦合的模块单元


2.1.3分布式
分布式应用和服务

分布式静态资源(动静分离)

分布式存储和数据


分布式计算(Hadoop及其MapReduce分布式计算框架进行批处理计算)
包括{搜索引擎的索引创建、数据仓库的数据分析统计等}
[分布式配置(线上服务器配置)、分布式锁(并发和协同)、分布式文件系统(云存储)]
2.1.4集群(提高系统的可用性)
及将多台服务器部署相同应用构成集群,通过负载均衡设备共同对外提供服务


2.1.5缓存

CDN:内容分发网络

反向代理:网站前端架构的一部分


本地缓存:


分布式缓存:
2.1.6异步 
业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式
异步执行 进行协作。

单服务器:多线程共享内存队列方式实现异步
分布式系统:分布式消息队列


异步消息队列特性:
提高系统可用性
加快网站响应速度
消除并发访问高峰

生产者消费者模型:生产者服务器在网站前端,生产者服务器处理完业务请求后,经数据写入消息队列,数据
会在消息队列服务器中存储堆积(队列的数据结构,先进先出fifo),消费者服务器依次处理


2.1.7冗余
服务器冗余备份,数据冗余备份(定期冷备份,主从热备分,灾难数据中心)


2.1.8自动化


发布过程自动化
自动化代码管理
自动化测试
自动化安全检测
自动化部署
自动化监控
自动化报警
自动化失效转移
自动化失效恢复
自动化降级
自动化分配资源
2.1.9安全


2.2架构模式在新浪微博的应用
lamp架构(linux+apache+mysql+php)




3.大型网站核心架构要素
架构:“最高层次的规划,难以改变的决定”
软件架构:“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”
{性能、可用性、伸缩性、扩展性、安全性}


3.1性能
使用上一节所介绍技术来提升性能
3.2可用性(高可用)
冗余
应用服务器集群{前提:应用服务器上不保存请求的会话信息}
存储服务器实时备份

软件开发过程的质量保证:预发布验证,自动化测试,自动化发布,灰度发布


3.3伸缩性
集群、服务、数量限制
应用服务器集群(负载均衡器)
缓存服务器(缓存路由算法)
关系型数据库(路由分区)
NoSQL数据库(先天支持)
3.4扩展性
事件驱动架构(消息队列)、分布式服务(将业务和分布式服务分离开来,通过分布式服务框架调用)


3.5安全性
应对策略


二、架构




  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值