ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#网站的架构演进 ![](https://box.kancloud.cn/2016-05-20_573e7553b7ecc.png) ![](https://box.kancloud.cn/2016-05-20_573e7553df667.png) ![](https://box.kancloud.cn/2016-05-20_573e7554156c4.png) ![](https://box.kancloud.cn/2016-05-20_573e755442561.png) ![](https://box.kancloud.cn/2016-05-20_573e75546db77.png) ![](https://box.kancloud.cn/2016-05-20_573e75549f32b.png) ![](https://box.kancloud.cn/2016-05-20_573e7554d7535.png) ![](https://box.kancloud.cn/2016-05-20_573e75552e463.png) ![](https://box.kancloud.cn/2016-05-20_573e75555ff4d.png) #优化 ##优化两大核心原则-前端缓存 * 浏览器地址缓存,DNS Cache(TTL) * 浏览器中文件的缓存(Cache-Control) * cdn 中的缓存,cdn的原理(刷新的问题) * 文件分发路径上的缓存(内部Squid,varnish,nginx cache) ##优化两大核心原则-后端缓存 **数据库缓存** * 打开就一定好吗? * 如何保持? * 数据库连接池 **Memcached** * 内存缓存,无持久化,高性能 **Redis** * 可持久化,数据结构丰富 **MongoDB** * 不算是缓存,是数据库 * 坑比较多,长于描述类文件存储 ##优化两大核心原则-多级缓存 **页面内缓存** * 进程内缓存 * 页面内缓存 **OpCode Cache缓存(PHP)** * Java本身就支持 **本机缓存** * Opcode 加速器提供 **业务中间件缓存** * 商品信息中间件 * 用户信息中间件 * 好友关系中间件 ![](https://box.kancloud.cn/2016-05-20_573e7555ae8e2.png) ![](https://box.kancloud.cn/2016-05-20_573e7555d6504.png) ##优化两大核心原则-分离之分 **动静分离** 1. 动静分离不仅仅是体现在前端资源上 2. 数据库上也有动静分离 **读写分离** 1. 主从承压分离 **特征分离** 1. 根据字段大小不同,实现设计上的分离 **业务分离** 1. 数据库在业务分离,叫水平切分 2. 不同的业务使用不同的机器集群 3. 服务化 ##优化两大核心原则-分层之分 **前端代码分层** 1. base层 2. 公用层 3. page层 **后端业务代码分层** 1. MVC分层 **架构部署分层** 1. 业务逻辑程序,中间件,后端数据存储 **发布上线分层** 1. 重点业务,灰度发布 ##优化两大核心原则-分布之分 **分布式数据库** * 关系型数据库 * NoSQL数据库 **分布式缓存** * 内存缓存 * 可持久化缓存 * 文件缓存 **分布式存储** * 分布式文件存储 * 分布式日志数据存储 **分布式计算** * 数据统计分析 * 全文检索 ##优化两大核心原则-分工之分 **多线程** * 多线程处理同一件事情 **职责分工** * 插件,扩展,模块 * usb * Liunx内核 **Map-Reduce** * 将任务拆分,最后讲结果合并 **异步之分** * 异步让效率更高 * 系统更稳定 * 用户体验更好 ##架构与优化的保障 --工具化 1. 使用成熟的工具监控,Nagios,Mrtg,Cacti 2. 监控端口,请求,状态码,日志,Crontab 3. 自行编写合适自己的工具,比如分析Haproxy 的流量计算所有的实时请求数,实现数据的备份自动和扩容的半自动化,实现小文件备份自动化,灰度发布系统 4. 终极目标:抛开繁琐的运维步骤,抛开checklist,做到真正的自动化 ##架构与优化的保障 -- 成本 1. 上线前对业务的合理且充分的预估,根据业务的不同而不同 2. 一方面要用够机器的资源。一方面要敢于做扩容的决断 3. 检测业务的使用效率,做不同的对待,有回收,有扩容 4. 意外事件的保障,灾备 5. 降级,保障核心运转,保障读,差异服务,灰度服务 ![](https://box.kancloud.cn/2016-05-20_573e7556109cd.png) ![](https://box.kancloud.cn/2016-05-20_573e755632dd9.png) ![](https://box.kancloud.cn/2016-05-20_573e7556570e3.png)