加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

京东云总监带你吃透分布式精髓(含视频)

发布时间:2019-05-15 11:00:05 所属栏目:教程 来源:京东云
导读:副标题#e# 1953年,埃布格罗希提出Grosch定律,即计算机性能会随着成本的平方而增加。1965年,高登摩尔提出摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍。 当今,计算机的普及,也让越来越多的电脑处于闲置状态,
副标题[/!--empirenews.page--]

京东云总监带你吃透分布式精髓(含视频)

1953年,埃布·格罗希提出Grosch定律,即计算机性能会随着成本的平方而增加。1965年,高登·摩尔提出摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍。

当今,计算机的普及,也让越来越多的电脑处于闲置状态,即使在开机状态下CPU的潜力也远未被完全利用。而互联网的出现,使得连接和调用闲置计算资源的计算机系统成为了现实。

于是,分布式计算开始普及,分布式难不难?难!所以更需名师指路!下面要介绍的课程,由京东云高级总监亲自授课哦,赶快往下看吧!

京东云总监带你吃透分布式精髓(含视频)

本次直播课程由京东云高级总监郭理靖数据库基础入手,从实践应用出发,深度解析从单机数据库到分布式数据库的技术发展与迭代,同时并理论结合实际为大家讲述企业选择数据库服务的金科玉律以及京东云针对此方面的应用实践等干货内容。

课程概要

此次课程的分享内容更多关于数据库服务的演变史,重点讲述单机到分布式的变化从何而来以及从单机数据库如何进行改进才可达成分布式数据库的服务。

以下是郭理靖老师分享的全部内容,希望给各位开发者带来更多帮助:

从单机到分布式,数据库服务的演变史

京东云高级总监 郭理靖

1从Redis到MongoDB

从Redis到MongoDB,最初的产生都很简单

很多时候,一门技术甚至一种产品,最初的产生往往都来源非常简单的想法,例如2019年,我们看到DB-Engines Ranking中有两个比较熟悉的身影,MongoDB和Redis。

很有意思的是,MongoDB属于DocumentDB。如果我们调头去看DocumentDB-Engines Ranking的话,可以发现MongoDB是排在第一位,而且是以绝对性的优势“吊打”第二位到第十位(第二名只有56分),整个DB-Engines中,Oracle和MySQL的分数靠得特别近;但是在DocumentDB中,MongoDB是400多分,但第二名可能就只有100多分。

京东云总监带你吃透分布式精髓(含视频)

同样,Redis在K/V的领域,分数也特别靠前,它146分,第三名是MemcacheD(第二名为Amazon DynamoDB,为56分) 只有28.7分。

所以这两个数据库在自己的专业领域中都是排名特别靠前的两个数据库,而且彼此出现的时间都不算特别长,不到十年:Redis出现的比MongoDB早一些,Redis是2009年,MongoDB差不多也是在2009年左右出现的。

为什么Redis会出现,并且成为K/VDB排名第一的一个数据库呢?

其实,在Redis出现之前已经有一个K/V的数据库叫Memcached,早在2003年发布,最初用Perl写了一个版本,最后用C语言重写了。在Redis没有出现之前,Memcached一直是K/V数据库的领头,为什么在2009年,当Redis出现时就飞快地代替了Memcached,直至今日,大部分的缓存我们都用Redis。甚至刚入行的同学们根本没有听说过还有Memcached这样的数据库,这个过程中Redis到底做了什么事情?

事情比较简单,从设计理念出发,就是把原先Memcached的存储结构进行了改变。之前是一个Key对应一个String,然后Redis把String变化成一个可以结构化的Structured storage,也就是说Redis可以支持一些结构化的数据,包括List、sorted set、hashes等 。

京东云总监带你吃透分布式精髓(含视频)

如此小的变化为什么能够让它取得这么大的优势?关于此还是要回溯下Memcached。

假设我们自己要设计一个缓存系统的话,设计目标与Memcached一样,过程中就需要设计一个Key String的缓存系统,那么在这个缓存系统上到底能够提供哪些服务呢?更进一步来说,当存储对象是String,针对此我们可以做到哪些操作?

京东云总监带你吃透分布式精髓(含视频)

可以想见,在一个编程语言中,以以C++或者Java为例,一个字符串可以set一个字符串,还可以get一个字符串,当然也可以delete一个字符串。此外,对于字符串我们还可以做一些其他操作,例如append、prepend等,也就是字符串的尾巴和头部加些内容,甚至可以将整个字符串替换掉。当然,也可以做insert、erase,还有trim这种操作以及find、substr等。

大家在设计过程中不妨想一想,为什么在Memcached中不支持insert或find、substr这样的操作呢?

这其实是一个很有意思的话题。理论上Memcached可以支持这些操作,包括针对Memcached的源代码进行修改之后,也可以支持这些函数和调用,但之所以选择不支持可能更多还是效率方面的考量。

例如在Memcached中支持substr或者find的操作的过程中,却浪费了Memcached服务器的性能。因为find可以把整个字符串转移到本地再做find,substr也是一样,其实都归功于性能。

当然Memcached也可以提供更高级的一些操作,例如add或者一些gets操作,还可以做incr/decr,对一个数字进行原子性加减,都可以。如果去研究Memcached整个release history的话,它是2003年开始发布的一个版本,前期支持的工作是非常有限的,所以后续的高级功能也是慢慢逐渐加进去的。

再看一下Redis,可以支持的数据结构有很多,包括Strings、Lists、Sets、Sorted sets、Hashes、Bit arrays,还有HyperLogLogs、streams,streams是5.0,最新的版本甚至可以支持一些时序性的数据。

京东云总监带你吃透分布式精髓(含视频)

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读