“云无界、端无边” OGeek 技术峰会 9月17日 南京不见不散! 了解详情
写点什么

专访基于 Erlang 的开源 NoSQL 数据库 Tiger 创始人姚新明

  • 2012 年 7 月 12 日
  • 本文字数:2083 字

    阅读完需:约 7 分钟

编者按:感谢 ZoomQuiet 淘宝褚霸为本次采访提供问题。

姚新明,Erlang 程序员,目前就职于安防技术中国有限公司杭州研究院云计算部,从事分布式文件系统的研发,早期从事企业信息系统开发、SaaS 系统架构,写过javascript,干过java,会点perl、c、emacs lisp,喜欢linux、emacs,爱好开源技术,目前主要关注NoSQL、分布式技术、分布式文件系统。

InfoQ: 请对 Tiger 项目做个介绍。

姚新明: Tiger 是一个 Erlang 开发的 NoSQL 数据库,基于 Erlang、zab 协议以及 leveldb、Redis 引擎实现,目的是提供高性能,高可靠性,高可用性的数据服务。单点问题一直是困扰架构师的主要问题之一,自己以前做架构的时候也碰到比较多,一直没有找到好的解决方案,接触 Erlang、zab 协议,leveldb 后,我意识到我以前所面临的一些问题是可以解决的,所以就有了 Tiger。

InfoQ: Tiger 在数据的安全性方面是如何做到的?

姚新明:Tiger 采用 2f+1 的集群模式,数据相当于多副本存储,所以数据丢失的概率比较小。

InfoQ: Tiger 在灾难恢复方面有哪些特性?

姚新明: Tiger 采用 2f+1 的集群模式,是基于 consensus 设计理念的集群,因此在 f 台机器出故障的时候不会影响系统的可用性,新增加的机器可以在线加入集群,历史数据会先从本地恢复,再从 leader 同步剩余的数据,所以只要不是所有机器都 crash,那么系统是可以恢复的。

InfoQ:能否介绍下 Tiger 的性能和可以承载的数据集大小?

姚新明:Tiger 的单机读写可以达到 10k tps 的能力,集群读写能力为 n:1, 这主要得益于 Erlang 强大的网络能力,以及 leveldb 存储引擎。数据集如果是 leveldb 引擎,主要瓶颈在磁盘容量,如果是 Redis 引擎,瓶颈主要是在内存,另外数据量太大系统重启恢复的时间会相对长点,zab 引擎的 log 是使用 leveldb,从 leveldb 的测试报告,大概是 100M 左右的顺序读能力,所以如果是 6G 的数据,估计回放数据要 2 分钟左右。

InfoQ: 为什么选择 Erlang 作为开发平台?

姚新明: Erlang 在网络编程方面有很大的优势,另外分布式协议 paxos 和 zab 都是基于消息的协议,Erlang 的 actor 模型很适合处理这种协议,用 Erlang 实现的 zab 引擎只有 2k 代码左右,比 zookeeper 的代码量小很多。

InfoQ: 为什么不在 menisa 上进行改进?

姚新明:menisa 是一个不错的数据库,功能比较多,但是也有比较明显的缺点,首先是对网络分区没有很好的处理,另外单个表的限制也是比较大的问题,Erlang 做数据库引擎其实不是一个很好的选择,个人认为 mmeisa 更适合 2 台机器做 HA 的模式,不是特别适合分布式大数据。

InfoQ: 作为少数派的基于 Erl 的 NoSQL 作品, 和 CouchDB/CouchBase ,Tiger 相比有什么优势?

姚新明: CouchDb 是文档数据库,我以前也简单用过,从性能和可靠性以及可用性方面 Tiger 应该是有更大的优势。CouchBase 其实和 Tiger 的做法类似,Erlang 做通讯层,c 做持久层,目前 Tiger 功能相对少些,因为 zab 协议的支持,可靠性和可用性应该更好,性能方面没有对比过。

InfoQ:目前,您推荐在什么场景中使用 Tiger?

姚新明: 比较适合 N:1 读写的场景,系统对可靠性和可用性要求比较高都可以考虑 Tiger,比如 session 服务器,认证中心都是可以的,当然作为缓存也可以, 应该说使用 memcached 和 Redis 的场景都能使用,当然 Redis 接口目前还不是很全。部署是建议 3 台或者 5 台集群方式。如果是采用 Erlang 开发 server,也可以嵌入 Tiger 中使用的 zab_engine 来解决多 server 的数据一致性问题。

InfoQ: Tiger 对中文信息是否有方便的支持?

姚新明: 下一步将完善文档,因为前端采用的是大家都比较熟悉的 memcached 协议和 Redis 协议,所以从使用的角度应该问题不大。如果只是验证,在项目主页上有说明,基本上是傻瓜型的,生产环境安装部署需要修改几个配置,这个会增加到文档中去。

InfoQ: 对于 Tiger 的未来有什么计划?

姚新明:

  1. 根据用户反馈,完善已有的 api 包括 memcached 和 Redis ,推出稳定的版本
  2. 完善性能测试,性能调优
  3. zab 引擎的完善
  4. 增加数据备份功能

从长远的角度是考虑做一个类似 riak 的系统,但不是 p2p 模式,而是采用 master slave 模式,数据一致性通过 zab 引擎来实现,那么系统将会是一个大型的高可靠性分布式 K/V 系统。

InfoQ:目前有种说法是最低调的 Riak 可能是最终胜出者。Tiger 的目标是 Riak, 那为什么 Riak 目前无法解决手上的问题? 或者説 Riak 相比 Tiger 的应用场景有什么不同?

姚新明: Riak 是 p2p 模型的,对于数据是基于 CAP 的最终一致性,相当与弱一致性,我还是比较喜欢 master slave 模式,简单可控性强。另外 Riak 中所有 node 都是连接的,保活消息广播量比较大,估计能支持的节点数会有限。

Riak 我是比较喜欢的,Basho 公司应该是在 c 和 Erlang 方面都很有实力的公司,Tiger 的项目结构是参考 Riak 做的,打包脚本是直接从 Riak 拿来的,省了不少工作。eleveldb 也是从 Basho 公司拿来的。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012 年 7 月 12 日 02:004141
用户头像

发布了 479 篇内容, 共 139.1 次阅读, 收获喜欢 40 次。

关注

评论

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

A tour of gRPC:01 - 基础理论

BUG侦探

gRPC RPC buffer protocol

创新实力再获认可!腾讯安全MSS获2022年度云原生安全守护先锋

腾讯安全云鼎实验室

云原生 云安全

零信任安全模型-下一代网络安全架构

领创集团Advance Intelligence Group

架构 网络安全 零信任

Gartner:如何在中国成功应用多云模式

WorkPlus Lite

深入理解和把握数字经济的基本特征

CECBC

ElasticSearch第二弹之分片原理

阿Q说代码

ES shard replica

再也不怕面试官追问我设计模式了

不想秃头

Java 程序员 面试 设计模式

FastApi+Vue+LayUI实现前后端分离

Python研究所

6月月更

Java—NIO

武师叔

6月月更

JDK动态代理为什么必须要基于接口?

码农参上

JAVA开发 动态代理 底层知识

20省市公布元宇宙路线图

CECBC

解读2022年度敏捷教练行业现状报告

华为云开发者联盟

后端 开发 华为云

阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一文搞定

C++后台开发

网络编程 linux开发 epoll IO多路复用 C++开发

Java基础:集合框架之Map

百思不得小赵

map Java’ 6月月更

观测云更新|观测云帮助文档全新上线;新增 Profile 可观测新增 Profile 可观测;新增 Deployment 网络详情及网络分布等

观测云

墨天轮访谈 | IvorySQL王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库

墨天轮

数据库 oracle postgresql 开源

提高效率 Or 增加成本,开发人员应如何理解结对编程?

云智慧AIOps社区

团队协作 开发技巧 结对编程 开发技能 编程技巧

2023年广州美博会时间地点详情

展览通

美博会 2023年广州美博会 春季广州美博会 广州春季美博会

数字经济时代文化消费新特征

CECBC

你了解shiro吗?手把手教你集成shiro

阿Q说代码

springboot 鉴权 shiro 身份验证

融云:让银行轻松上“云”

融云 RongCloud

SaaS 云工具,产业互联网下的变革利器

小炮

港股多支个股表现活跃,引发投资者对港股市场回暖猜想与关注

新闻科技资讯

Go语言Redis API基本功能实践

FunTester

NLP 论文领读|改善意图识别的语义表示:有监督预训练中的各向同性正则化方法

澜舟孟子开源社区

人工智能 自然语言处理 深度学习 预训练模型

中国移动应用出海发展天地宽

WorkPlus Lite

理论+案例,带你掌握Angular依赖注入模式的应用

华为云开发者联盟

程序员 前端 华为云

基于 ShardingSphere 的得物数据库中间件平台“彩虹桥”演进之路

SphereEx

数据库 中间件 ShardingSphere 实践

如何实现一套容器(C语言版)1

祖维

c 容器 泛型 迭代器

区块链为化解信任危机带来新契机

CECBC

泛型的类型擦除后,fastjson反序列化时如何还原?

码农参上

泛型 底层知识 Java 开发

首届腾讯云大数据峰会暨Techo TVP开发者峰会

首届腾讯云大数据峰会暨Techo TVP开发者峰会

专访基于Erlang的开源NoSQL数据库Tiger创始人姚新明_Erlang_郑柯_InfoQ精选文章