写点什么

天涯新款 key-list 类型内存数据引擎——Memlink

  • 2010-11-19
  • 本文字数:2032 字

    阅读完需:约 7 分钟

天涯社区最近开发了一款数据引擎—— Memlink ,并将其开源。对于为什么会出现这样一款开源项目、它的能力和市面上的其他款同类型项目相比有怎样的优势,InfoQ 中文站特地采访了天涯社区在北京研发中心的技术负责人冯勇先生。

1. 您好,能请您先自我介绍一下吗?您最近在做哪些有趣的事情呢?

大家好!我是天涯技术中心系统平台部负责人冯勇,系统平台部是今年刚组建的部门,旨在优化天涯线上产品的系统架构。天涯是一个有十二年历史的网站,对于一个累积了十二年补丁的系统进行重构、优化,本身就是一件很有趣、很有挑战的事情。

2. 是出于什么初衷,天涯会开发出这样一款数据引擎出来呢?并且最后要开源出来。

近些年,Nosql 系统非常流行,也确实对 sql 系统进行了合理补充,为 Web 应用提供多种数据解决方案。但是在开源 Nosql 系统中,key-value 系统可选择较多,而 key-list/queue 系统可选择较少,因此我们开发了 memlink 来满足我们自己的需要。

在这里,需要强调一些 key-list 的概念,在实际场景中有大量需要 key-list 的地方。比如:论坛中的主题列表、回复列表,微博中的用户关注列表、用户 feed 列表、用户关注 feed 列表等等。如果使用 key-value 中的 value 来存储 list(比如:list 打包成 json 放入 value 中),其操作性能是非常低效的。

理想的 Key-list 通常需要如下特点:

  1. list 是海量的、且操作性能高效
  2. list 是有序的、且可动态调整顺序

至于为什么开源?一方面,我们很多工作都得益于已有的开源系统,所以回馈开源社区是我们应做的义务;另一方面,技术分享也有利于公司本身技术的成长,并吸引更多的技术人才。

3. 能介绍一下 Memlink 的特性吗?

Memlink 是一个高性能、持久化、分布式的 Key=>List/Queue 数据引擎。正如名称中的 Mem 所示,所有数据都建构在内存中,保证了系统的高性能,同时使用块链进行内存压缩,使用 redo-log 技术保证数据的持久化。此外,Memlink 还支持主从复制、读写分离、数据项过滤操作等功能。

特点:

  • 内存数据引擎,性能极为高效
  • List 中的 Node 采用块链组织,精简内存,优化查找效率
  • Node 数据项可自定义 Mask 表,支持多种过滤操作
  • 支持 redo-log,数据持久化,非 Cache 模式
  • 分布式,主从同步
  • 读写分离,写优先处理。

4. 我们知道市面上还有一些其他基于内存的数据引擎,比如 Redis 和 Scalaris,跟它们相比 Memlink 解决了什么特别的问题吗?

在设计和开发 memlink 之前,我们也认真分析对比了 Redis。最终没有采用 Redis 原因有以下四点:

  1. Redis 持久化策略 (redo-log) 不能完全满足线上生产的需求。对于一个成熟的互联网应用应该有足够的容错能力。比如系统统重启、宕机等而不丢失数据。Redis 持久化策略一:定时同步磁盘(此期间重启会丢失部分数据);持久化策略二:不断追加 log,这样容易使 log 膨胀,性能降低。Memlink 持久化策略是同时借鉴 Redis 两种策略,在非创建快照期间追加 redo-log,在完成快照后清除 redo-log。
  2. Redis 主从同步策略不够完善。比如:slaver 因为某原因丢失了部分同步数据,则需要重新完全获取一份主节点的所有数据。在大数据量的情况下,不太合适线上生产的需求。
  3. Redis 单线程模式,读写没有分离,只能使用单核。Memlink 为多线程,充分利用多核,并进行了读写分离,优先保证写。
  4. 在内存消耗和性能上 Memlink 要优于 Redis。

Memlink 是 key=>list/queue 引擎,Scalaris 是 key-value,两者功能出发点上不一样。

5. Memlink 在天涯内部的哪些系统中得到了采用?可以提供一下 Memlink 带来的性能变化的数据吗?

Memlink 主要应用于天涯论坛类型产品 (论坛、来吧) 中。比如论坛的主题列表,当数据达到百万、千万量级,采用 Mysql 系统进行分页浏览时,基本上不能响应,而 Memlink 则性能提升了上百倍。具体可见 Benchmark

6. 能向广大的开发者朋友们介绍一下,如何来选择一款适用自己的 NoSQL 产品呢?

首先需要确定业务需求,是否需要 NoSQL 产品。对于大多数百万量级、千万量级的应用,MySQL 也能支持。

其次在明确需要 NoSQL 产品后,应根据业务需求抽象出数据模型,比如:有些数据是需要采用 key-value 系统存储,有些数据是需要采用 key-list 系统存储,有些数据是采用文档数据库存储等等。

对于 NoSQL 产品候选列表的选项,可以从如下维度进行考虑:

  1. 系统的容量、性能、软硬件环境是否符合需求?
  2. 数据的安全机制如何?各种异常是否会丢失数据?
  3. 具备主从复制功能?何种一致性策略?
  4. 可扩展性?自动扩展 or 程序进行扩展?
  5. 系统的可控性?系统的成熟度、对开发者的支持度、bug 谁来修复等等

7. Memlink 现在的版本号是多少?未来的发展计划是怎样的?

Memlink 现在的版本号为 0.2,具备基本 key-list/ 主从复制等功能,目前正在测试中。

在 0.3/0.4 版本中,Memlink 会增加双向队列、用户认证等功能。具体可以见 Memlink 的 RoadMap

长远而言,Memlink 专注为一个高性能、持久化、分布式的 Key=>List/Queue 数据引擎,不会增加其他数据存储模型。

更多关于 Memlink 的信息,请参考 Memlink 的介绍文档设计文档

2010-11-19 08:2013914
用户头像

发布了 127 篇内容, 共 44.3 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

Autodesk AutoCAD2020(附安装教程图解) 中文特别版

Rose

事业-最佳实践-个人-给别人提意见

南山

高效沟通

win版Master PDF Editor(PDF编辑器) v5.9.84便携版

iMac小白

win版ACDSee Photo Studio Professional 2024 v17.1.1.2859 激活版

iMac小白

开发体育直播APP软件系统源码:“新闻话题”获取体育资讯的首要平台

软件开发-梦幻运营部

【YashanDB知识库】自动选举配置错误引发的一系列问题

YashanDB

数据库 yashandb 崖山数据库

web3社交网络开发

区块链开发团队DappNetWork

win版Perfectly Clear Workbench(图片编辑软件)v4.6.1.2663 特别版

iMac小白

win版DBeaver Ultimate (数据库连接管理) v24.1.0 特别版

iMac小白

微信多开 WechatTweak for Mac(微信多开、消息防撤回工具)集成中文版

Rose

win版StartAllBack(win11开始菜单增强工具)3.7.10特别版

iMac小白

掌握SonarQube代码分析技术体系与学习路线

测吧(北京)科技有限公司

测试

win版Adobe Media Encoder 2024(Me2024)直装版

iMac小白

【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004

YashanDB

数据库 yashandb 崖山数据库

Minitab Express 数据分析mac版 含破解补丁及安装教程 兼容M1/M2

Rose

win版HEU KMS Activator(Win/Office全自动激活工具) v42.0.4 激活版

iMac小白

win版Karaosoft Karma 2024(卡拉OK软件) v2024.5.8 特别版

iMac小白

事业-最佳实践-个人-专栏高效学习

南山

高效学习 技术专栏

事业-最佳实践-个人-效率提升

南山

研发效能 工作效率 研发效率

win版AIDA64 Extreme(硬件检测工具)v7.30中文注册版

iMac小白

Topaz Video AI 破解版下载 AI视频无损放大软件 Mac&win

Rose

华为ICT大赛拿了奖,可以进华为吗?

华为云PaaS服务小智

开发者 华为云 比赛

Jenkins SSH 插件:安装与使用指南

测吧(北京)科技有限公司

测试

软件测试 | Jenkins API 数据提取能力

测吧(北京)科技有限公司

测试

win版Abelssoft EasyBackup 2024(数据备份工具) v14.04 特别版

iMac小白

Web自动化测试的持续集成实战

测吧(北京)科技有限公司

测试

邮件告警插件安装和使用:提取Job构建结果与多种通知方式

测吧(北京)科技有限公司

测试

秒懂测试框架需求与设计,快速提升测试效率!

测吧(北京)科技有限公司

测试

ETLCloud中如何执行SQL脚本

RestCloud

sql ETL 数据集成 ETLCloud

天涯新款key-list类型内存数据引擎——Memlink_架构_张凯峰_InfoQ精选文章