分布式缓存技术

分布式缓存技术_第1张图片
如果要从这三个不搭边儿的短语中找出一些共性,普通人恐怕思来想去也说不出个所以然,但程序员却能脱口而出:
高并发用户访问
随着云计算与 Web 2.0 的发展,许多企业或组织都在面对空前的需求,这也引领着着各项互联网技术的发展与变革,比如:集群技术、负载均衡、海量数据处理、系统安全,以及今天要讨论的主角——分布式数据库缓存。
什么是数据库缓存?
计算机中的存储器分为硬盘、内存、3级缓存、和2级缓存,随着存储器容量的减少,计算机从存储器中调用数据的速度也在加快。
分布式缓存技术_第2张图片
我们常见的数据库,比如oracle、mysql等,都是将数据存放在磁盘中。这种存储机制并不足以应对业务系统对数据库产生的增、删、查、改带来的庞大IO压力。所以数据库缓存技术就此诞生,用以实现热点数据的高速缓存,提高应用的响应速度,缓解后端数据库的压力。
什么是分布式数据库缓存?
如今的互联网平台常常要面对百万级的并发用户访问,解决每秒数以千计的并发事务处理,既要实现低延时、保证24*7*365的可用性,还要拥有灵活的弹性与可伸缩性...可以说,传统Web 架构已经无法满足用户日益增涨的需求。
而分布式数据库缓存是在内存中管理数据并提供数据的一致性保障,采用数据复制技术实现高可用性,具有较优的扩展性与性能组合。这种数据存储机制,实现了更短的响应时间,同时极大地降低数据库的事务处理负载,极好地解决了大流量情况下数据库服务器和Web服务器之间的瓶颈。
分布式数据库系统
指建立在网络之上的数据库系统,包含分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。
分布式数据库系统的特点
分布式数据库在逻辑上是一个统一的整体物理上是分别存储在不同的物理节点上数据库中的数据不存储在同一计算机的存储设备上
分布式系统的CAP定理
在一个分布式系统中,Consistency(一致性)-Availability(可用性)-Partition tolerance(分区容错性),三者不可得兼。
Consistency:在分布式系统中的所有数据备份,在同一时刻是否同样的值。Availability:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。Partition tolerance:以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
3
主流的分布式缓存产品
在实际开发中,比较主流的分布式缓存系统主要有Memcached 和 Redis,这两款系统都采用key-value存储方案,却有各自的优缺点。
分布式缓存技术_第3张图片
Memcached
Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcached通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
分布式缓存技术_第4张图片
Memcached 的特点
哈希方式存储;全内存操作;简单文本协议进行数据通信;只操作字符型数据;集群由应用进行控制,采用一致性哈希算法。
Memcached的限制性
数据保存在内存当中的,一旦机器重启,数据会全部丢失;只能操作字符型数据,数据类型贫乏;以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安全性不足;能存储的数据长度有限,最大键长250个字符,储存数据不能超过1M。
分布式缓存技术_第5张图片
Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis的特点
Redis支持的数据类型包括:字符串、string、hash、set、sortedset、list;Redis实现持久化的方式:定期将内存快照写入磁盘;写日志;Redis支持主从同步。
Redis的限制性
单核运行,在存储大数据的时候性能会有降低;不是全内存操作;主从复制是全量复制,对实际的系统运营造成了一定负担。
4
Memcached VS Redis
Memcached与Redis都属于内存操作、KV存储的缓存系统,同时都是高度关注数据吞吐量与延迟状况的开源项目。而这两个项目在实际应用中的差异,则决定了其在不同应用场景中的表现。
数据支持不同
Memcached只支持字符型,储存数据不能超过1M;Redis除了字符型还支持List、Hash、Set、有序Set等,长度为512M。
内存管理机制不同
Memcached是全内存的数据缓存系统;Redis支持数据的持久化,会周期性地将更新数据写入磁盘,并实现主从同步。
集群管理不同
Memcached本身并不支持分布式,需要在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储;Redis可以直接使用Redis Cluster对集群进行管理(Redis Cluster是一个高性能高可用的分布式系统)。
由此可见,Memcached更适合对小型的静态数据进行缓存,对数据的安全性要求不高。而Redis适合处理对数据安全性有一定要求、或对数据结构有一定需求,或者需要存储的大型的数据、需要进行主从复制的项目。
End
近几年来,互联网+、软件国产化、O2O、工业4.0等主题的相继提出,为数据库带来了巨大的机会。未来,分布式数据库将走入标准化,对事物的支持也将转为普遍化,这个充满活力的领域的发展需要更多同行的参与。

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