【FCon上海】与行业领袖共话AI大模型、数字化风控等前沿技术。 了解详情
写点什么

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

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

    阅读完需:约 7 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

天涯社区最近开发了一款数据引擎—— 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 的介绍文档设计文档

公众号推荐:

AIGC 技术正以惊人的速度重塑着创新的边界,InfoQ 首期《大模型领航者AIGC实践案例集锦》电子书,深度对话 30 位国内顶尖大模型专家,洞悉大模型技术前沿与未来趋势,精选 10 余个行业一线实践案例,全面展示大模型在多个垂直行业的应用成果,同时,揭秘全球热门大模型效果,为创业者、开发者提供决策支持和选型参考。关注「AI前线」,回复「领航者」免费获取电子书。

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

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

关注

评论

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

GaussDB(for Redis)助力《余烬风暴》实力上线,给您沉浸式魔幻体验

华为云数据库小助手

GaussDB GaussDB ( for Redis )

阿里Maven仓库不限容量,免费用

阿里云云效

云计算 阿里云 npm Maven仓库 制品仓库

提升 Hybrid 体验:饿了么双十一 PHA 框架技术实践

阿里巴巴终端技术

App 用户体验 Hybrid PHA

恒源云(Gpushare)_如何查看显卡占用的情况?技巧大放送2!

恒源云

算法 GPU服务器 显卡

2022首场MASA技术团队黑客松大赛完美落幕!精彩集锦

MASA技术团队

C# .net 微软

Hoo虎符研究院|从多个方面了解公链Tezos和它的 Ithaca 2 升级

区块链前沿News

Hoo 虎符交易所 研究院 tezos

设备资产管理系统解决方案

低代码小观

资产管理 CRM系统 企业设备管理 设备巡检管理系统 企业管理软件

Kubernetes官方java客户端之四:内部应用

程序员欣宸

Kubernetes client 4月月更

重塑企业数字化能力,端点科技重磅发布Erda2.0

科技热闻

We are learning by contributing!访 StarRocks Committer 周康、冯浩桉

StarRocks

数据库 开发者社区 StarRocks

产品知识在线培训的解决方案

小炮

企业知识管理

Flink 实践教程-入门(10):Python作业的使用

腾讯云大数据

打通产销对接,构建新型数智化农副产品供应链

数商云

产业互联网 数字化

2022华为软件精英挑战赛复赛名单公布,快来看看都有哪些优秀赛队晋级

科技热闻

直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类

百度开发者中心

【Zeekr_Tech】初谈我们共同的目标 NPDS + Agile

Zeekr_Tech

人工智能 敏捷开发 智能驾驶

恒源云(Gpushare)_如何安装包/pip加速等?技巧大放送3!

恒源云

安装 pip Ubuntu apt

衡石BI产品预置明道云数据连接器

明道云

恒源云(Gpushare)_如何防止训练不中断?技巧大放送1!

恒源云

算法 服务器 训练

科创人·知乎CTO李大海:技术服务内容、商业化依赖内容,曾被「呵呵」难到挠头

科创人

百度可观测系列 | 如何构建亿级指标的高可用 TSDB 存储集群?

百度开发者中心

恒源云(Gpushare)_没有你想要的镜像?技巧大放送5!

恒源云

镜像仓库 显卡、gpu

实时数仓建设

五分钟学大数据

实时计算 4月月更

Spring 完美导入 IDEA

阿Q说代码

spring IDEA 4月月更

ICDE 2022|Apache ShardingSphere:一个功能全面和可插拔的数据分片平台

SphereEx

数据库 ShardingSphere 论文 SphereEx

恒源云(Gpushare)_JupyterLab/TensorBoard使用问题?技巧大放送4!

恒源云

人工智能 深度学习 PyTorch

云效制品仓库 Packages,不限容量免费用

阿里云云效

云计算 maven 阿里云 npm 制品仓库

腾讯云CDW-ClickHouse云原生实践

腾讯云大数据

Clickhouse 云数据仓库

“远见者”特斯拉AI主管Karpathy|深度学习崛起十年

OneFlow

人工智能 深度学习 计算机视觉 特斯拉 openai

功能解读|快速上手 OceanBase 数据迁移服务

OceanBase 数据库

oceanbase OceanBase 开源

狗尾巴的故事—数智时代的第一性原理|科创人·数智未来私董会

科创人

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