[读书笔记]:大型网站技术架构——核心原理与案例分析

自从学了网站开发,就对 淘宝 京东 腾讯 这样的网站或应用很是好奇!他们是怎么弄出来?为什么能那么快?他们的架构又是怎么样的? 他们的开发人员一定很牛X吧!他们的高手遍地走吧?

一直都很好奇, 但是也没怎么去研究,一是懒,二是也找不到什么资料。第二条可以归结到第一条里!

在京东买的这本书《大型网站技术架构——核心原理与案例分析》拿回来后就迫不及待的翻开来看。第一章就带我领略了大型网站的演变之路,激动的连叫三个好。

废话一大堆!

大型网站软件系统有什么特点?

1、高并发、大流量;2高可用;海量数据;用户分布广泛,网络情况复杂;安全环境恶劣;需求快速变更,发布频繁;渐进式发展;

大型网站架构演化发展历程

1、初始阶段 的小型网站 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LMPA

2、随着业务的发展一台服务器满足不了需求,这个时候我们将应用与数据分离:应用服务器(强大CPU)、文件服务器(更大的存储容量)、数据库服务器(更快的硬盘更大的容量)

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

人都喜欢凑热闹 所以网站的80%业务访问都在集中在20%的数据上。

使用缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。

缓存可以减少数据访问次数,但是单一服务器能够处理的请求链接有限,在网站高峰期,应用服务器成为整个网站的瓶颈

4、使用集群式网站解决高并发、海量数据问题的常用手段。

通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上。

5、数据库读写分离

当网站的用户达到一定规模后,数据库应为负载压力过高而成为网站的瓶颈。目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以讲一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力

6、使用反向代理和CDN加速网站响应

CDN(Content Distribute Network,内容分发网络)和反向代理其基本原理都是缓存,区别在于CDN部署在网络提供商的机房,是用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器。

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

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。

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

8、使用NoSQL和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSql和非数据库查询技术如搜索引擎

9、业务拆分

大型网站为例应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,如大型购物交易网站会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分规不同的业务团队负责。

10、分布式服务

由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服务。 

在这个时候我们可以把每一个应用中相同的业务拿出来独立部署,由这些可复用的业务连接数据库,提供公用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用服务完成具体业务操作

就先写到这里吧!慢慢来 每天进步一点

原文地址:https://www.cnblogs.com/pjjwpc/p/3606564.html