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


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

    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 云计算

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

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

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

     

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

    话题太大,有空再扩充。

  • 相关阅读:
    groovy集合
    groovy函数、字符串、循环
    groovy运行程序和类型推断
    常见IT英语短语一
    常见IT英语单词
    认识Groovy
    maven入门
    springboot之内嵌tomcat修改端口号
    springboot手动配置数据源:
    img与父元素的间隙解决
  • 原文地址:https://www.cnblogs.com/shijiaqi1066/p/5135849.html
Copyright © 2020-2023  润新知