写点什么

第 5 周 技术选型(一)总结

用户头像
bearlu
关注
发布于: 2020 年 10 月 25 日

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 架构,是分布式系统架构最高效最容易管理和实现,而状态管理使用专门的服务器进行管理。

用户头像

bearlu

关注

还未添加个人签名 2017.12.10 加入

还未添加个人简介

评论

发布
暂无评论
第5周 技术选型(一)总结