QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

天涯新款 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:2013937
用户头像

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

关注

评论

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

FORCE 大会开发者论坛演讲实录|吴一帆:边缘智能在 Agent 上的探索与实践

火山引擎边缘云

智能IoT边缘服务 AI 大底座 大模型、 边缘智能

HarmonyOS next之APP 服务卡片获取 APP 内数据

flfljh

智慧人大综合管理平台(源码+文档+部署+讲解)

深圳亥时科技

VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动

sysin

esxi

VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS xFusion (超聚变) 定制版

sysin

HarmonyOS next之Flutter插件支持鸿蒙系

flfljh

面向教育场景的大模型 RAG 检索增强解决方案

阿里云大数据AI技术

人工智能 大模型 LLM rag PAI

构建AI Agent必学的4种设计模式,一文了解

Baihai IDP

程序员 AI LLMs AI Agents AI 助手

EulerOS+Nginx+MySQL部署GLPI资产管理系统

YG科技

天润融通工单系统:一键催单功能提升客户满意度

天润融通

Elasticsearch VS Easysearch 性能测试

极限实验室

elasticsearch ES easysearch

DVWA靶场文件上传漏洞全级别通关及源码深度解析

代码忍者

亚信科技研发智能化实践之路

阿里巴巴云原生

阿里云 云原生

亚信科技研发智能化实践之路

阿里云云效

阿里云 云原生 通义灵码

《计算机组成及汇编语言原理》阅读笔记:p177-p177

codists

计算机组成及汇编语言原理

行业分享丨延锋国际基于数据分析和AI平台的仿真工具探索

Altair RapidMiner

人工智能 数据挖掘 数据分析 AI在仿真应用 ai与cae

利用华为云Flexus X实例解决家里公网80和443端口不开放问题

YG科技

阿里拿38K出来的大佬良心分享,熬夜整理10 万字详细Java面试笔记!

Summer

Java 程序员 面试 架构师 大厂

社区信息化管理系统(源码+文档+部署+讲解)

深圳亥时科技

艾卡货车救援系统(源码+文档+部署+讲解)

深圳亥时科技

GDP一直在增长,为什么钱却这么难挣

博文视点Broadview

AI技术在英语学习领域的应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

云服务器Flexus X实例,镜像切换与服务器压力测试

YG科技

2024年12月文章一览

codists

文章一览

Altair助力著名工业电子控制系统供应商Psicontrol提升PCB开发流程效率

Altair RapidMiner

EMC 电子设计 电磁仿真 PCB开发 FEKO

LED和LCD的15个不同之处

Dylan

LCD1602液晶显示屏 LED LED display LED显示屏 lcd

Java面试突击手册,一周刷完这300道面试题,你也可以当架构师!

Summer

Java 程序员 面试 架构师 大厂

LeetCode题解:2625. 扁平化嵌套数组,递归

Lee Chen

CST软件如何计算天线fidelity保真度?达索代理思茂信息

思茂信息

cst cst操作 CST软件

全面指南:使用华为云Flexus X部署私人图床

YG科技

HarmonyOS next之flutter鸿蒙项目初体验

flfljh

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