2020-07-04- 第五周学习总结

用户头像
路易斯李李李
关注
发布于: 2020 年 07 月 08 日

1 分布式缓存

1.1 定义



存储计算机上的一个原始数据复制集,以便于访问。



缓存是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取的时候,用于加快读取的速度。一方面缓解了数据源的访问压力,另一方面提升了数据访问速度。



缓存和缓冲的区别

Buffer也是介于数据访问者和数据源之间的一种高速存储,用来解决数据访问者和数据源之间数据处理速度的不匹配性问题,比如从CPU写数据到磁盘上,CPU访问数据的速度要比磁盘快得多,这时候快速地向磁盘写数据,但是磁盘却不能将数据及时存储,此时CPU就要等待磁盘写数据完毕后才能再次向磁盘写数据。此时缓冲就是为了解决这种速度的不匹配性问题,当通过写数据时先将数据写入缓冲(Buffer)中,当Buffer写满后再通知磁盘进行读取。



缓存的数据结构是Hash表



1.2 缓存命中率



缓存命中率:缓存是否有效依赖于能多少次重用同一个缓存响应业务请求,这个度量指标被称作缓存命中率。



如果查询一个缓存,十次查询九次能够得到正确结果,那么它的命中率是90%。



影响缓存命中率的主要指标



  • 缓存键集合大小,键数量越少,缓存的效率越高。

  • 缓存可使用内存空间,物理上能缓存的对象越多,缓存命中率就越高。

  • 缓存对象生存时间,对象缓存的时间越长,被重用的可能性就越高。

1.3 缓存类型



分布式和集群的区别

很多个服务器构成的系统就叫做分布式,集群是分布式概念中的子集。特指的是提供同样功能的服务器构建应用服务器子系统。一组NoSQL服务器构成NoSQL集群。集群中每个应用服务器构件的应用是一样的。

集群中怎么添加一个服务器?实现伸缩。

(1)Memcache分布式缓存如何通过key找到对应服务器中的value。

使用hashcode进行服务器个数取模,余数就是对应服务器的序号。

也叫做余数hash算法。

(2)加进来的服务器,取模的数目不一样导致集群数据获取失败。

分布式对象缓存的一致性hash算法。



技术是纯粹的,不能指望一个技术解决所有问题。

1.4 Hash算法

1.4.1 一致性hash算法

一致性hash算法的思想是将服务器节点计算得到的hash值映射到0~2的32次方的hash环上,通过对服务器节点hash值排序,将在相邻节点之间的KV值存入到hash值较大的那个节点上,而大于最大的hash值服务器节点则保存到最小的hash值服务器节点上,这样就将整个HashCode组成一个环。



一致性hash节点扩容

每增加一个服务器,失效的key就会到数据源去查找。服务器越多,这种影响越小。

缺点

这种算法存在的问题是负载不均衡

1.4.2 基于虚拟节点的一致性hash算法

基于虚拟节点的一致性Hash算法是在一致性hash算法基础上,将每个物理节点生成N个虚拟服务器节点,并将虚拟机服务器节点的hashCode映射到Hash环上的一种算法。当需要找到KV应该保存到哪个节点上时,需要先知道KV对应的虚拟节点,再通过虚拟节点查找到物理节点上。



这种算法相对于一致性hash算法有着较好的负载均衡性,但是这种负载均衡性其主要核心因素在于hash函数,只要hash函数能将KV均匀分布再hash换上,那么整个算法就能保证相对的负载均衡。

2 消息队列

2.1 异步调用架构

消息生产者,消息队列,消息消费者

点对点模型,发布订阅模型。

2.2 优点

  • 实现异步处理,提升处理性能

  • 更好的伸缩性,根据业务需求适当增加生产者或者消费者。

  • 削峰填谷,将峰值请求进行队列异步处理。

  • 失败隔离和自我修复,生产者消费者之间不会相互依赖,且不受对方失败影响。

  • 解耦合,请求/响应耦合表面积 >>> 事件驱动耦合表面积

2.3 主要MQ产品比较

  • RabbitMQ,性能好,社区活跃,但是使用了Erlang开发,对于不熟悉Erlang的同学而言不便于二次开发和维护。(49M)

  • ActiveMQ影响较广泛,可跨平台,使用Java开发,对Java比较友好。(27M)

  • RocketMQ时阿里推出的一个开源产品,也是使用Java开发,性能较好,可靠性也比较高。(35M)

  • Kafka,LinkedIn出品,Scala开发,专门针对分布式场景进行优化,因此分布式的伸缩性会比较好。(63M)



3 负载均衡

3.1 常见负载均衡架构



  • HTTP重定向负载均衡

  • DNS负载均衡

  • 反向代理负载均衡

  • IP负载均衡

  • 数据链路层负载均衡

3.2 负载均衡算法



  • 轮询

  • 加权轮询

  • 随机

  • 最少连接

  • 源地址散列

3.3 应用服务器集群的Session管理



  • Session复制

  • Session绑定

  • 使用Cookie记录Session

  • Session服务器

4 分布式数据库



MySQL复制

  • MySQL主从复制

  • MySQL一主多从复制,优点有分摊负载、专机专用、便于冷备、高可用

  • MySQL主主复制

  • MySQL主主失效恢复



MySQL复制中,主主复制的两个数据库不能并发写入。复制只是增加了数据的读并发处理能力,没有增加写并发能力和存储能力。更新表结构会导致巨大的同步延迟。



用户头像

路易斯李李李

关注

还未添加个人签名 2020.05.11 加入

还未添加个人简介

评论

发布
暂无评论
2020-07-04-第五周学习总结