第 5 周 技术选型(一)总结
5.1 分布式缓存架构:架构原理与使用中的注意事项
关键知识点:
缓存是通过 Hash 表,树的形式保存
缓存的关键指标:缓存命中率
影响缓存命中率的主要指标:1、缓存键集合大小,2、缓存可使用内存空间,3、缓存对象生存时间 TTL(Time To Live)
5.2 分布式缓存架构:常见的缓存实现形式
关键知识
一是代理缓存,把数据缓存到客户端
二是反向代理缓存,在服务端缓存数据,代理数据中心的请求内容
三是多层反向代理缓存
四是内容分发网络(CDN),把静态数据缓存到距离用户最近的服务器上
五是 CDN 同时配置静态文件和动态内容
通读缓存和旁路缓存
代理缓存,反向代理缓存,CDN 缓存都是通读缓存,客户端连接的是通读缓存而不是生成相应的原始服务器。
对象缓存是一种旁路缓存,通常是用一个独立的键值对(key-value)存储。如果旁路缓存没命中,直接去访问服务器,并把数据缓存到旁路缓存。
缓存分布式集群:
本地对象缓存构建分布式集群(被抛弃)
远程分布式对象缓存(互联网主要使用)
Memcached 分布式对象缓存(Share-Nothing 架构)
5.3 分布式缓存架构:一致性 Hash 算法
主要知识点:
1、一致 Hash 算法,主要解决扩容的问题。
2、分布式对象缓存的一致性 hash 算法,通过 hash 把服务器放到一个 2 的 32 次方再减一的环上,然后把 key 的值放在顺时针最近的服务器上。
3、分布式对象缓存的一致性 hash 算法,问题一是负载不均衡,二是增加服务器对负载的分摊也不均衡
4、解决办法:基于虚拟节点的一致性 Hash 算法,业界:150 个节点
5、缓存主要优化读性能
6、更新缓存数据主要用到算法是 LRU 算法
5.4 消息队列:如何避免系统故障传递?
主要知识点:
1、通过消息队列提高写性能
2、消息队列构建异步调用架构
点对点模型:如果生产者生产后,消费者消费后,该消息就从消息队列移除。
发布订阅模型:消息可以同时被多个消费者消费(消息队列的主要使用的模型)
3、事件驱动架构 EDA
5.5 负载均衡架构:如何用十行代码写一个负载均衡服务器?
主要知识点
1、HTTP 重定向负载均衡
优点:实现简单
缺点:一次请求变两次,性能低,安全性差。HTTP 层太重了
2、DNS 负载均衡(互联网常用方式)
两层负载均衡:1、DNS 负载均衡;2、后端实现负载均衡服务器
3、反向代理负载均衡
检查本地是否有请求的内容,如果有直接返回,无则再把这个请求向后分发,规模比较小,几台十几台的应用服务器
缺点:效率低,代理的是 HTTP 请求
4、IP 负载均衡
不去构建 HTTP 的数据包,通过修改 IP 地址,为每个达到一个 TCP/IP 的数据包修改里面的 IP,把目标地址改成应用服务器的 IP 地址,源地址改为负载均衡服务器的 IP 地址
缺点:请求简单,相应是复杂的,而负载均衡服务器是瓶颈
5、数据链路层负载均衡(实践中用得最多)
修改 mac 地址
7、负载均衡算法最常用是加权轮询
8、Session 的管理
8.1、Session 复制(不用)
8.2、Session 绑定
8.3、利用 Cookie 记录 Session(常用)
8.4、Session 服务器(最常用)
9、把架构设计为无状态 Share-Nothing 架构,是分布式系统架构最高效最容易管理和实现,而状态管理使用专门的服务器进行管理。
评论