分布式缓存技术

如果要从这三个不搭边儿的短语中找出一些共性,普通人恐怕思来想去也说不出个所以然,但程序员却能脱口而出:

高并发用户访问

随着云计算与 Web 2.0 的发展,许多企业或组织都在面对空前的需求,这也引领着着各项互联网技术的发展与变革,比如:集群技术、负载均衡、海量数据处理、系统安全,以及今天要讨论的主角——分布式数据库缓存。

什么是数据库缓存?

计算机中的存储器分为硬盘、内存、3级缓存、和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存储方案,却有各自的优缺点。

Memcached

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcached通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

Memcached 的特点

哈希方式存储;全内存操作;简单文本协议进行数据通信;只操作字符型数据;集群由应用进行控制,采用一致性哈希算法。

Memcached的限制性

数据保存在内存当中的,一旦机器重启,数据会全部丢失;只能操作字符型数据,数据类型贫乏;以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安全性不足;能存储的数据长度有限,最大键长250个字符,储存数据不能超过1M。

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等主题的相继提出,为数据库带来了巨大的机会。未来,分布式数据库将走入标准化,对事物的支持也将转为普遍化,这个充满活力的领域的发展需要更多同行的参与。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值