分布式缓存技术总结笔记

引言:最近工作之余学习几种分布式缓存技术组件,在此做一个总结吧。

1.分布式概念

在此仅对自己所理解的分布式做一个简单的白话解释,如有不当之处,欢迎各位读者指正!

1.1 分布式系统

主要有多个数据源,需要进行跨库操作的应用系统都可以称之为分布式应用系统

1.2 分布式缓存技术

大型网站的分布式缓存技术,就是把数据存放在不同的物理机器上,利用分布式缓存中间件进行处理数据。

2.分布式系统产生原因

a.互联网应用系统,业务需求复杂,必须进行系统级别的垂直拆分,保证各个业务清晰,各自部署对外提供服务。
b.针对用户群广泛,存在高并发的问题,对单个节点的服务器造成非常大的压力
c.互联网时代,数据量巨大,需要分布式系统。

3.分布式系统产生的问题

数据的一致性,安全性、可扩展性、服务器的高可用、高承载能力等

4.分布式事务

4.1 概念

既然是分布式事务,就是要有两个数据源,而实现分布式事务,目前常用的手段就是利用“两阶段提交协议(Two-Phase Commit)”(简称2PC),2PC存在着两个重要的角色:事务协调器(TC),事务执行者

zookeeper可以实现分布式事务

4.2 缺点

2PC,可以看到节点之间的通信次数太多了,时间很长!时间变长了,从而导致,事务锁定的资源时间也变长了,造成资源等待时间变长!在高并发场景下,存在严重的性能问题!

4.3 最终一致性

分布式事务,写操作的时候,就使用乐观更新,使用版本号进行更新,能够保证最终一致性就行了

5.分布式缓存中间件

5.1 Redis

redis是以key-value的形式存储数据,是一个非关系型的,分布式开源的(BSD协议),水平可扩展的缓存服务器。redis用途:缓存(StackOverFlow),数据库(微博),消息中间件(微博)

5.2 Memcached

memcached 是由 Danga Interactive 开发并使用 BSD 许可的一种通用的分布式内存缓存系统。也是以key-value的形式存储数据。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。

5.3 SSDB

SSDB是一个快速的用来存储十亿级别列表数据的开源NoSql数据库,可以替代Redis数据库,是Redis的100倍容量。LevelDB网络支持,使用C/C++开发。与Redis完美兼容。

5.4Redis、Memcached、SSDB缓存数据库简单比较

a.都是key-value方式存储
b.redis支持多种数据类型,如String Hash Set List等,并且支持集群方案(3.x)
c.Redis单线程操作(少了内部的锁,性能好,可以保证数据的原子性,Redis可以有多个实例变相提供并发操作),Memcached多线程操作(耗资源)。Memcached支持事务的概念,Redis事务支持很弱(Redis只能保证一个Key的原子性操作,多个Key的事务操作是不支持的,可以使用Lua脚本解决)。
d.Redis与SSDB,SSDB是基于google性能极高的LevelDB作为存储引擎去架构的,而且可以与Redis完美整合,一般会使用相互结合的方案,因为SSDB性能高大上,但是高可用性不如Redis。(Redis和SSDB结合,Redis可以解决高并发的读,SSDB解决高并发的写。 )---推荐方式
e.Redis持久化方式:RDB、AOF(推荐)

我是一名奋斗在二线城市,每天挤公交上班写代码的程序猿!励志在有限的时间能够贡献出自己最大的能量!请持续关注!我在等你!

你可能感兴趣的:(分布式缓存技术总结笔记)