传统高并发网站入门级架构思想

不涉及具体技术,都是烂大街的东西,只是简单总结一下。

1 前端域名分流

不同的内容从不同的域名的服务器获取。值得注意的是,cookie不能跨域名访问。

主域名下会产生一些cookie,通过不同的静态文件,比如图片,JS等,通过其他域名访问获取,可以节约cookie产生的流量。

wps6AC2.tmp

2 页面静态化

频繁需要从数据库中查询的数据需要显示在网页中。直接在服务器端生成html静态页面。访问直接请求html文件。

3 CDN

CDN一般都只应用于静态资源。解决空间线路问题。

中心服务器发布资源,然后分发给CDN服务器。客户端的请求通过DNS解析到离客户端线路最近服务器的IP地址。

wps6AD2.tmp

4 静态文件压缩与合并

js css等文件使用代码压缩工具进行压。

css sprite是一种典型的合并方案。将小图片合并到一起,显示图片时,通过CSS显示大图片的一小部分。

wps6AD3.tmp

5 分离思想

同一件事的不同细节使用不同组件程序实现,完成功能的分离。比如:

  • 上传与下载分离。
  • 消耗资源(CPU或内存)的程序与web服务器分离。
  • 数据库读写分离。

分离是架构设计中非常重要的思想。这里就不多说了。

6 缓存

缓存是提升性能最有效的方法。

对于准实时的数据可以通过缓存降低数据库的访问压力。

wps6AD4.tmp

7 全文检索

对于大型网站,站内搜索一定不能用数据库的like搜索。like效率低下,而且会造成全表扫描,消耗数据库资源。

使用倒排索引与分词技术可以实现高速文本搜索。

搜索功能一般使用专用的搜索服务程序来实现,比如非常著名的Solr。

wps6AD5.tmp

8 负载均衡

负载即计算机的资源被消耗。计算机资源一般指的的就是CPU资源,内存资源,磁盘资源,网络IO资源。

将资源的消耗分担给多个计算机来处理即负载均衡。而多个计算机连接后的计算机组即计算机集群。

而负载均衡也被分为硬负载均衡与软负载均衡。

我们常说的负载均衡一般指的都是网络IO的负载均衡。具体的技术非常多,LVS,Nginx,智能DNS等等,都可以对网络IO负载有效的分流。

wps6AE6.tmp

9 一些特殊模式的解决方案

秒杀场景

  1. 数据库表锁(高并发环境实际不可行)
  2. “二阶段处理”,记录大量用户提交的请求。之后统计这些请求的排在前面的用户。
  3. 使用Redis的List排队。

文章阅读数

  1. 数据库表锁(高并发环境实际不可行)
  2. “二阶段处理”,每阅读一次文章,记录增加一条,使用一个计算条数的程序定时统计文章的被阅读数量。
  3. 使用Redis的key-value实现。

以上特殊场景在具体环境下肯定有更好的解决方案。

10 云计算

这是个颠覆性的技术,这是个云计算的时代,几乎所有人都在谈论云计算。云计算到底意味着什么?

云计算的本质是以虚拟机为基础,当负载较大时,可以快速启动一些虚拟机,实现负载均衡;而当负载较小时,可以关闭掉一些虚拟机以释放资源。

云计算的真正意义在于把计算变成一种真正可以被计费的资源,就像家中的自来水,当需要的时候,增大阀门,使用更多的资源,当不需要的时候,关小阀门即可。

 

------------------------------------------------------------------------------------------

话题太大,有空再扩充。

原文地址:https://www.cnblogs.com/shijiaqi1066/p/5135849.html