4

基于Raft协议的NoSQL数据库的设计和实现(2)-History

 2 years ago
source link: https://kairbon.github.io/2021/05/11/%E5%9F%BA%E4%BA%8ERaft%E5%8D%8F%E8%AE%AE%E7%9A%84NoSQL%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%AE%9E%E7%8E%B0-History/#/%E5%9F%BA%E4%BA%8ERaft%E5%8D%8F%E8%AE%AE%E7%9A%84NoSQL%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%AE%9E%E7%8E%B0-History
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
文章时效性提示

这是一篇发布于 354 天前的文章,部分信息可能已发生改变,请注意甄别。

基于Raft协议的NoSQL数据库的设计和实现-History

1. 分布式存储系统

传统的集中式存储,主要采用存储区域网络(Storage Area Network,简称SAN)和网络附属存储(Network Attached Storage,简称NAS)。但是随着企业业务的高速发展和存储规模的扩大,这些传统集中式存储逐渐暴露出了维护成本高昂,可用性不高,热点等许多问题,除此之外,因为存储是集中式的方式,所以如果宕机,那么依赖它的一切服务都将会出现问题。当然解决这些可用性问题,业界也有许多方式。从硬件层面的有通过使用RAID,ZFS等技术来防止单磁盘故障导致的不可用,还有比如建设专用的存储数据中心,冗余电源等各种方式来提升其可用性。但这些都无疑使得存储单元的成本上升。

目前,无数工业界和研究界的目光都投射到分布式存储系统上面去解决大规模数据存储的问题。这个原因一方面是随着pc机变得越来越便宜,使得存储使用大规模计算集群成为可能,另一方面随着云计算的火热,各大云计算厂商都在拼命降低用户使用计算资源的成本,使得分布式存储变为企业数据存储的首要选择。

Oracle和SQL Server作为传统企业级大型关系型数据库,是之前大部分企业用户存储格式化数据首要的选择,然而其高昂的服务费和许多其他因素却使得许多企业不得不考虑更多问题。这时候,分布式NoSQL数据库像是一颗璀璨的新星从众多分布式存储架构中脱颖而出。这种数据库不仅解决了传统数据库遇到的性能和存储分配的问题,还有着极为优秀的可用性。例如Google的BigTable和Spanner,这些数据库结合分布式系统天生的抗单节点故障能力以及水平伸缩等特点,为大数据场景做了完美的支撑。

2. NoSQL数据库

目前在国内外大规模使用并且效果比较好的NoSQL数据库主要有Google的Spanner,Redis。这些系统每一种都经历了无数工业界的检验,尤其是Redis,支撑新浪微博的热点资讯,扛过了每秒几千万的流量,足以证明NoSQL数据库在工业界的实力。而对于NoSQL数据库本身来说,不仅在架构上做到高可用,高容错,一致性。通常也使用自己的API,来实现对数据本身的增删查改。下面就以Redis为例,讲述NoSQL数据库的特性。而本论文主要也是和Redis做对比。

2.1 Redis

一开始,Redis是由出生于西西里岛的意大利人(Antirez)编写的,但到目前,Redis已经成为了阿里巴巴,腾讯等众多互联网一线大厂广泛使用的分布式内存数据库组件,主要用于缓存,队列,排行榜等众多Web功能的使用场景。Redis在中国互联网中有着广泛的使用经验。但在实际使用场景中我们又通常会遇到数据丢失,服务不可用,一致性不足以支撑业务等问题。

而本文提出并实现一种,有着和Redis好用易于上手的DSL以及Client,并且解决了Redis在大数据场景下的一些问题的基于键值对的分布式内存NoSQL数据库-DistKV。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK