第五周总结 - 缓存、消息中间件、负载均衡器、分布式数据库

发布于: 2020 年 07 月 07 日
第五周总结-缓存、消息中间件、负载均衡器、分布式数据库

缓存:

1.把访问频繁的,相对稳定的数据结果,存在离用户相对近的地方,通过多层级缓存,过滤到大量的请求,可保护后端低速设备,比如数据库IO。

2.缓存的命中率是缓存架构要考虑的质量属性,命中率受,健值集合大小,缓存空间大小,缓存对象生命周期影响,需要在这三种之间平衡。增加缓存空间需要投入更多的硬件,可以提高命中率;延长缓存对象的生命周期,会增加数据不一致现象;

3.缓存无处不在,是一种性价比非常高的技术方案,从浏览器缓存、CDN、反向代理缓存、分布式数据缓存、本地缓存、数据库缓存等,调用链上任何环节都可以缓存。

4.分布式缓存要解决增减节点key失效问题,一般通过采用虚拟节点+一致性hash算法来降低增减节点时缓存失效的影响程度。

5.缓存管理时,需要考虑缓存穿透防护、缓存雪崩(主要通过规范运维过程和使用一致性hash算法)、缓存预加载等问题。

6.缓存更新一般有两种方式,一是设计失效时间,为了避免大批量缓存同时失效,可能触发雪崩,失效时间要随机,二是通过事件机制,业务发生时,自动删除不一致的缓存,并通过后续的请求重新加载缓存。

消息中间件:

1.消息机制有很多好处,

    a.可提高并发性能,屏蔽消费者和生产者之间处理能差异,通过消息中间件可以保护消费者,让消费者按自己节奏处理,持续而稳定,削峰填谷。

    b.可提高可用性,通过引入消息中间件,把消费者和生产者的同步调用,拆分成异步调用,任何一方短时间的故障,都不会影响到对方,同时异步可以提高系统的吞吐。在RPC调用者,一般通过超时、熔断来提高可用性。

    c.可提高可维护性,消息中间件是消费者和生产者之间“接口层”,只要通信协议不变化,任何一方都可以进行升级,而无需告知对方。

    d.可提高可扩展性,符合开闭原则,面向扩展是开放的,对修改是关闭的,尤其是对于订阅发布模式,发布者代码不用修改,通过扩展订阅者,就能扩展业务。

    e.可提高伸缩性的灵活性,生产者、消息中间件、消费者,通过消息中间件分割了,三者都可以根据自己的负载情况,按需伸缩。

    f.可提高内聚性和低耦合,系统之间通过实现定义的接口协议通信,除此之外没有耦合性。

    g.消息中间件是企业的重要基础设施,在面向SOA架构中,ESB一般内置消息中间件,是分布式事务“可靠消息”的核心组件。

负载均衡:

1.按某种算法把请求分配给集群中各节点,集群一般指应用集群,当然也包括其他集群:Redis集群、分布式文件系统、大数据集群等。应用集群要求无状态,所以负载均衡算法相对要简单,而redis集群是有状态的要用到一致性算法来负载。

2.应用集群的负载均衡,在七层网络模型的,二层链路层(通过mac地址)、三层网络层(通过ip)、四层传输层(通过ip+端口)、七层表现层都有对应的产品和适应场景,层次越高要关注的协议细节越多,对性能的影响越大,当然可编程性越大。一般大型互联网企业都会选择二层负载均衡,一般的企业使用四层也即是反向代理负载均衡,比如Nginx。也有两级负载均衡的部署,越外层使用的负载均衡所处层次越低。

分布式数据库:

1.数据在任何时刻都只有一个写入点,不管是主从复制,还是主主复制,在一时刻只有一个节点可写入。

2.主从复制、主主复制可以解决并发读和高可用问题,但是无法解决并发写的问题,并发写可以通过引入消息中间件来削峰填谷和分库分区。

3.主从复制如果主节点宕机了,从节点无法自动提供写服务,所以可用性低;主主复制是采用双机热备策略,一个主节点运行时,另外一个处于待机状态(并没有闲着,会实时同步主的变更),一旦监听到主宕机了,待机状态的主节点就会接管写入权限。

4.主主复制,如果主宕机,在切换时系统存在短暂不可写状态,可能影响系统的写可用性。

5.基于binlog同步时,数据一致性存在一定的延迟,延迟时间包括网络通信时间和binlog回放时间,如果一个大SQL,可能会造成回放时间较长,时间越长,数据的不一致现象越严重。

6.分布式数据库在CAP理论中,追求的是最终一致性和分区容错性,选择了AP模型。

7.分布式数据库的主从复制、主主复制可以提高系统的性能、可用性,可专机专用(用于特定场景)。

用户头像

吴建中

关注

还未添加个人签名 2018.04.18 加入

还未添加个人简介

评论

发布
暂无评论
第五周总结-缓存、消息中间件、负载均衡器、分布式数据库