首页 > 其他分享 >大型 网站成长过程的分析笔记===通过广告来来学习,重要的是思路

大型 网站成长过程的分析笔记===通过广告来来学习,重要的是思路

时间:2022-11-25 17:05:04浏览次数:68  
标签:缓存 网站 数据库 笔记 广告 使用 服务器 思路 分布式


  • ​​1.初始架构​​
  • ​​2.应用服务与数据分离​​
  • ​​3.使用缓存改善网站性能​​
  • ​​4.应用服务器集群化​​
  • ​​5.数据库读写分离​​
  • ​​6.使用反向代理和CDN​​
  • ​​7.使用分布式FS和分布式DBS​​
  • ​​8.使用NoSQL和搜索引擎​​
  • ​​9.业务拆分​​
  • ​​附:思维导图​​


《大型网站技术架构》读书笔记 - 网站的技术升级路线 

本文描述网站从小到大演变过程中的技术升级路线;

1.初始架构

一台服务器,应用、DB、文件都在一块,使用经典的LAMP模式构建整个站点; 
优点很明显,开发部署都简单,船小好掉头,做不起来也亏不了多少;

2.应用服务与数据分离

随着访问量的增长,出现问题了:web性能变差,数据存储空间不够 
这时候需要更多的服务器,首要任务是将数据库分离出来,单独占用一台服务器,如果文件读写多,需要增加文件服务器;不同的服务器对硬件的要求也不尽相同: 
应用服务器需要处理大量业务逻辑,这需要更强的CPU; 
数据库服务器需要快速磁盘检索和数据缓存,这需要更快的硬盘和更大的内存; 
文件服务器需要存储用户上传的文件,需要更大的硬盘;

3.使用缓存改善网站性能

访问量持续增长,web性能再次变差; 
考虑使用缓存改善网站性能;web的访问规律:80%业务访问集中在20%的数据上;使用缓存,数据库压力得到有效缓解; 
缓存可通过以下方式增加: 
增加应用服务器本地缓存,这个最直接,也最简单; 
增加远程分布式缓存集群;当本地的内存不足以放下需要缓存的数据时,就只有通过分布式; 
使用类似Memcached之类的开源缓存产品,缓存更多的数据;

4.应用服务器集群化

随着网站的成长,单一应用服务器成为网站瓶颈; 
解决方案:应用服务器集群化提高网站并发处理能力; 
做成集群的关键是增加负载均衡服务器来调度应用集群

5.数据库读写分离

问题:当增加缓存之后,随着访问量的持续增长,数据库再次出现问题:数据库负载压力过高 
解决方案:数据库读写分离 
利用数据库主从热备功能,实现读写分离;读写分离的细节这篇文章讲的很清楚了,就不多说,有需要的请参考:​​javascript:void(0)​​

6.使用反向代理和CDN

问题:网站做大,全国甚至全球各区域的访问量都来了,但是各区域的访问速度差别巨大; 
解决方案:使用反向代理和CDN 
CDN和反向代理基本原理都是缓存,CDN部署在网络提供商的机房,用户请求最近的节点访问;而反向代理则部署在网站的中心机房;

7.使用分布式FS和分布式DBS

问题:应用集群如果将session管理做好,或做成无状态的应用集群,可达到线性伸缩;而数据库的压力却不是很好解决; 
解决方案:使用分布式数据库拆分,可使用的方法有: 
单表拆分:将不同的表放到不同的库中,从而降低单个数据库的结点的负载;这样带来的问题就是不同库中的表无法做join操作; 
另一种方法就是按业务拆分,将属于同一业务的表划分到一个库中,从而有效降低数据库负载,同时在业务逻辑实现上不至于过于复杂;

8.使用NoSQL和搜索引擎

问题:出现海量数据存储和检索的需求 
解决方案:使用NoSQl产品分布式部署来支持海量数据的查询和存储;

9.业务拆分

按照业务来划分子系统,按产品线划分系统,通过分布式服务来协同工作;

附:思维导图

卓越亚马逊地址: 《​​大型网站技术架构​​​》 
点击查看原图

大型 网站成长过程的分析笔记===通过广告来来学习,重要的是思路_缓存



标签:缓存,网站,数据库,笔记,广告,使用,服务器,思路,分布式
From: https://blog.51cto.com/u_15834343/5887044

相关文章

  • cs149笔记并行图计算
    ParallelProgrammingonGraphs这些课主要讲了关于图并行算法,包括pagerank等算法。PageRankPageRank算法可以见https://en.wikipedia.org/wiki/PageRank#math_2\[R[i......
  • 林晓斌 MySQL实战45讲(学习笔记)
    本系列是学习极客时间林晓斌的《MySQL实战45讲》系列的学习笔记。原文链接:https://time.geekbang.org/column/intro/13901基础架构:一条SQL查询语句是如何执行的?https://bl......
  • mx6ull字符设备驱动(以及新字符设备驱动)开发笔记
    在测试完后面的WIFI、4g网络驱动之后,这边需要测试一下ZigBee能否与开发板实现通信,看了网上的资料,可能需要修改设备树里面的串口信息啥的,索性先学习一下如何进行驱动开发,毕......
  • 后端踩坑笔记:记一次内存泄漏查障修复过程
    前言由于某开发项目的特殊性,在开发过程中需要将一些核心的代码加密。但是项目一开始就是由swoft框架(一个基于swoole的PHP框架)进行开发,未找到swoft代码加密工具。因此想到了......
  • 令牌桶限流思路分享(PHP+Redis实现机制)
    一、场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源,通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个用户,他......
  • 编译原理笔记
    编译消除左递归 A->Aα|β结果A->βRR->αR|ε串的各部分术语  一个串abcde……1234一共有n个这个串的前缀,从这个串的尾部开始删除连续的0个、1个……n个,例如abcde……1......
  • 【MySQL】mysql | 数据处理 | 行转列 | 一种行转列的处理思路
    一、说明        1、mysql数据库        2、行转列场景,对于不同行业来说,使用频率不一样        3、本文档仅提供一种行转列的思路,仅做参考二、开始......
  • 重构:改善既有代码的设计 第三章 读书笔记
    目录代码的坏味道3.1神秘命名(MysteriousName)需要好的命名方式,有意义的命名方式3.2重复代码(DuplicatedCode)场景方法同一个类中出现重复代码提......
  • Vue2.0+3.0笔记
    生命周期 非单文件组件:全局事件时  脚手架文件结构  ├──node_modules├──public│├──favicon.ico:页签图标│└──index.htm......
  • 重构:改善既有代码的设计 读书笔记
    第1章重构,第一个示例1.1起点1.2对此起始程序的评价1.3重构的第一步1.4分解statement函数1.5进展:大量嵌套函数1.6拆分计算阶段与格式化阶段1.7进展:分离......