互联网集群架构介绍

来自CloudWiki
跳转至: 导航搜索

高并发访问

高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。

如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部(指挥部就是数据库及分布式存储)。

如:能缓存在用户电脑本地的,就不要让他去访问CDN/cache。 能缓存CDN/cache服务器上的,就不要让CDN/cache去访问源(静态web服务器)了。能访问静态web服务器的,就不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。

高性能高并发高可扩展网站架构访问的几个层次:

Cloud1-6.png

第一层 用户浏览器端

第一层:首先在用户浏览器端,使用Apache的mod_deflate压缩传输

第二层 静态页面缓存

静态页面内容缓存,如图片/js/css等或静态数据html,这个层面是网页缓存层,比如CDN.

第三层 静态服务器层

静态服务器层一般为图片服务器,视频服务器,静态HTML服务器。这一层是前面缓存层和后面动态服务器层的连接纽带。

第四层 动态服务器层

动态服务器层:php,java等,只有通过了前面3层后的访问请求才会到这个层,才可能会访问数据库及存储设备。经过前三层的访问过滤能到这层访问请求一般来说已非常少了,一般都是新发布的内容和新发布内容第一次浏览如;博文(包括微博等),BBS帖子。

特别提示:此层可以在程序上多做文章,比如向下访问cache层,memcache,redis,mysql,oracle,在程序级别实现分布式访问,分布式读写分离,而程序级别分布式访问的每个db cache节点,又可以是一组业务或者一组业务拆分开来的多台服务器的负载均衡。这样的架构会为后面的数据库和存储层大大的减少压力,那么这里呢,相当于指挥部的外层了

第五层 数据库cache层

数据库cache层,比如:memcache,redis等等。

根据不同的业务需求,选择适合具体业务的数据库。对于memcache、redis,可以在第四层通过程序来实现对本层实现分布式访问,每个分布式访问的节点都可能是一组负载均衡(数十台机器)。

第六层 数据库层

数据库层,一般的不是超大站点都会用mysql主从结构,程序层做分布式数据库读写分离,一主(或双主)多从的方式,访问大了,可以做级连的主从及环状的多主多从,然后,实现多组负载均衡,供前端的分布式程序调用,如果访问量再大,就需要拆业务了,比如:分司把www服务,blog服务,bbs服务都放一个服务器上,然后做主从。

第七层 存储层

存储层作为数据的存储可以考虑nfs、分布式文件系统(如mfs)、hadoop(hadoop适合海量数据的存储与处理,如做网站日志分析、用户数据挖掘等)

补充:CDN

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

Cloud1-7.png

CDN和反向代理的基本原理都是缓存数据,区别就在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据。

CDN对网络的优化作用:

CDN系统通过在网络各处放置节点服务器,从而将网站的内容放置到离用户最近的地方,避免了影响互联网传输性能的“第一公里”和“网间互联瓶颈”等各个环节,为改善互联网环境、解决网站的服务质量和提高用户的上网速度提供了有效的解决方案。


参考文档

千万级PV规模高性能高并发网站架构详解

https://blog.csdn.net/kangshuo2471781030/article/details/79253578

大型Web网站架构演变

https://www.jianshu.com/p/5a67d789216e

架构

https://www.cnblogs.com/lfs2640666960/p/8533632.html

Linux运维企业架构实战系列:

https://www.cnblogs.com/along21/p/8000812.html


所有看到的都是假的,都是一层一层缓存出来的。