小编说:本文为某高级运维工程师对《亿级流量网站架构核心技术》一书的学习笔记及自己的感悟。
墨菲定律 - 任何事没有表面看起来那么简单 - 所有的事都会比预计的时间长 - 可能出错的事情总会出错 - 担心某种事情发生,那么它就更有可能发生
康威定律 - 系统架构师公司组织架构的反映 - 按照业务闭环进行系统拆分/组织架构划分,实现闭环、高内聚、低耦合,减少沟通成本 - 如果沟通出现问题,应该考虑进行系统和组织架构的调整 - 适合时机进行系统拆分,不要一开始就吧系统、服务拆分拆的非常细,虽然闭环,但是每个人维护的系统多,维护成本高 - 微服务架构的理论基础 - 康威定律 https://yq.aliyun.com/articles/8611 - 每个架构师都应该研究下康威定律 http://36kr.com/p/5042735.html
二八定律 - 80%的结果取决于20%的原因
1.高并发原则
无状态
拆分
服务化
消息队列
数据异构
缓存银弹
· DNS缓存
· 浏览器DNS缓存
· 操作系统DNS缓存
· 本地DNS服务商缓存
· DNS服务器缓存
· 客户端缓存
· 浏览器缓存(Expires、Cache-Control、Last-Modified、Etag)
· App客户缓存(js/css/image...)
· CDN缓存(一般基于ATS、Varnish、Nginx、Squid等构建,边缘节点-二级节点-中心节点-源站)
· Opcache: 缓存PHP的Opcodes
· Proxy_cache: 代理缓存,可以存储到/dev/shm或者SSD
· FastCGI Cache
· Nginx+Lua+Redis: 业务数据缓存
· Nginx为例:
· PHP为例:
· 页面静态化
· 业务数据缓存(Redis/Memcached/本地文件等)
· 消息队列
· NoSQL: Redis、Memcache、SSDB等
· MySQL: Innodb/MyISAM等Query Cache、Key Cache、Innodb Buffer Size等
· CPU : L1/L2/L3 Cache/NUMA
· 内存
· 磁盘:磁盘本身缓存、dirtyratio/dirtybackground_ratio、阵列卡本身缓存
并发化
2.高可用原则
降级
限流
· 恶意请求流量只访问到Cache
· 穿透后端应用的流量使用Nginx的limit处理
· 恶意IP使用Nginx Deny策略或者iptables拒绝
切流量
· DNS: 更改域名解析入口,如DNSPOD可以添加备用IP,正常IP故障时,会自主切换到备用地址;生效实践较慢
· HttpDNS: 为了绕过运营商LocalDNS实现的精准流量调度
· LVS/HaProxy/Nginx: 摘除故障节点
可回滚
3.业务设计原则
4.总结
先行规划和设计时有必要的,要对现有问题有方案,对未来有预案;欠下的技术债,迟早都是要还的。