3393154828 发表于 2023-1-31 15:55:07

巨大站优化初期阶段布局精讲

本帖最后由 3393154828 于 2023-1-31 16:15 编辑

让网站变得简单是需要水平和跨部门协调的需要做的事情有:HTML静态化、图片server分离、数据库集群和库表散列、缓存……
大站也是从简单做起的,一个大站现在需要具备的功能就非常多了,应为需要管理海量的pgc、ugc用户


门户站点在面对大量用户訪问、高并发请求。
主要的解决技术方案是:1、优秀的linux系统、2、优秀的数据库、3、专业的编程语言、4、合理布局Web容器。
这几个解决方式意味着大投入,但是在网站的扩展性。低成本、高性能和高扩张性的布局上面又有差点意思。
1、HTML静态化
效率最高、消耗最小的是纯静态,尽可能页面採用静态页面,这个是最简单也是最有效的方法。例如:maigoo网就是一群码农在优化页面,疯狂给网站上静态单页
对于ugc/pgc/b2b等具备交互的大站,事不可能挨个实现静态化的,于是需要借助门户站点的新闻栏目,以及其它专题tag标签页,通过完善健全的伪静态url优化来实现,对于一个大型站点来说,对于一个大站来说用于一套功能齐全性能可靠的cms是必须的。
类似于xinsou.cc/g这个有交互功能的行业专业知识类pgc网站的论坛类型站点,静态化也是提高性能的必要手段,将内容页进行实时的静态化,有更新的时候再又一次静态化也是大量使用的策略,像猫扑的大杂烩就是使用了这种策略。网易社区等都是值得学习的案例。
html静态化是某些缓存策略的手段,对于系统中频繁使用数据库查询可是内容更新非常小的应用。能够考虑使用html静态化来实现,比方论坛中论坛的公用设置信息,这些信息眼下的主流论坛都能够进行后台管理而且存储再数据库中,这些信息事实上大量被前台程序调用,可是更新频率非常小,能够考虑将这部分内容进行后台更新的时候进行静态化。这样避免了大量的数据库訪问请求。
2、图片server分离
对于一个大型网站来说,图片是最消耗资源的。window server 或者是 linux的系统Apache、IIS的容器,都存在这个问题,有必要将图片与页面进行分离,这是基本上大型站点都会採用的策略。他们都有独立的图片server,甚至非常多台图片server。
这种架构能够减少提供页面訪问请求的server系统压力,而且能够保证系统不会由于图片问题而崩溃,在应用server和图片server上,能够进行不同的配置优化。比方apache在配置ContentType的时候能够尽量少支持,尽可能少的 LoadModule,保证更高的系统消耗和运行效率。
3、数据库集群和库表散列
大型站点都有复杂的应用,这些应用必须使用数据库,那么在面对大量訪问的时候,数据库的瓶颈非常快就能显现出来,这时一台数据库将非常快无法满足应用,于是我们须要使用数据库集群或者库表散列。
在数据库集群方面,非常多数据库都有自己的解决方式,Oracle、Sybase等都有非常好的方案。经常使用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就參考对应的解决方式来实施就可以。
上面提到的数据库集群因为在架构、成本、扩张性方面都会受到所採用DB类型的限制,于是我们须要从应用程序的角度来考虑改善系统架构,库表散列是经常使用而且最有效的解决方式。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离。不同的模块相应不同的数据库或者表。再依照一定的策略对某个页面或者功能进行更小的数据库散列,比方用户表,依照用户ID进行表散列,这样就行低成本的提升系统的性能而且有非常好的扩展性。sohu的论坛就是採用了这种架构。将论坛的用户、设置、帖子等信息进行数据库分离。然后对帖子、用户依照板块和ID进行散列数据库和表,终于可以在配置文件里进行简单的配置便能让系统随时添加一台低成本的数据库进来补充系统性能。
4、缓存
缓存一词搞技术的都接触过,非常多地方用到缓存。
站点架构和站点开发中的缓存也是非常重要。这里先讲述最主要的两种缓存。
高级和分布式的缓存在后面讲述。
架构方面的缓存,对Apache比較熟悉的人都能知道Apache提供了自己的缓存模块。也能够使用外加的Squid模块进行缓存,这两种方式均能够有效的提高Apache的訪问响应能力。


页: [1]
查看完整版本: 巨大站优化初期阶段布局精讲