分布式对象存储Ambry - 官方博客翻译与摘录(2)Ambry设计目标

原文地址

Ambry工作原理

1. 设计目标

1.1 高可用以及水平可扩展

系统需要支持实时传输,如果出现不可用的话会显著的影响系统。这意味着系统需要高可用。我们的目标是每个月正常运行的时间在99.95%以上,相当于每个月中最多只有20分钟系统不可用。
另一个痛点是,我们希望新系统集群扩容时越无缝越好。在很多的分布式系统中,扩容真的很难,主要因为有太多部分需要移动,而且网络拓扑很复杂。我们希望扩容简单,而且每次扩容步骤都是一样的。

1.2 低操作与运维开销

分布式系统很难管理。集群操作自动化非常重要,这样系统就不会成为运维的瓶颈。然而,复杂系统使得自动化变得很困难,这就是为什么我们需要设计个简单的,优雅的并且自动化的系统。

1.3 低MTTR

故障在分布式系统中难以避免,软件还有硬件时常会因为未知原因挂掉。好的测试会减少一些此类现象,但并不能完全避免。所以,更重要的是,我们能快速解决问题,并且有备用的在运行。这需要系统满足设计简单,没有单点问题而且重启基本没有需要改变和移动的部分。我们需要设计这样一个系统来减少MTTR

1.4 跨机房多活

LinkedIn在全球有多个机房,而且不断的在全球扩展。这意味着我们所有的系统都需要支持多活配置。多活配置就是指,多个机房都可以对同一个对象进行更新操作。

1.5 对于大小对象操作高效

通常来说,对于同时包含小对象还有大对象操作的系统很难设计。这种系统需要支持数万亿的小对象和数十亿的大对象。大量的小对象有相对很大的元数据,会造成很多磁盘碎片还有随机读写。大对象需要很好的内存管理,端到端流和有限的资源使用管理。我们需要一个在这两种情况下都表现良好的系统。

1.6 节约成本

最后,多媒体还是受限于存储,这些对象由于他们本身的特性(数量多,占用空间相对较大)很快会占用很大的空间。另一特性就是,旧数据很容易变冷(不怎么访问)。有很多节约成本的技术,比如:

  1. 密集硬件(硬件共用,节约成本)
  2. 分层存储(好的存储与廉价存储公用,定时交换每一层的存储的数据,例如,将热数据放到好的存储上)
  3. erasure code(它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。定义中包含了encode和decode两个过程,将原始的n份数据变为n+m份是encode,之后这n+m份数据可存放在不同的device上,如果有任意小于m份的数据失效,仍然能通过剩下的数据还原出来)
  4. data deduplication(是另一种意义上的压缩:通过文件之间或文件块之间的冗余,来进行去重。考虑qq邮箱的超大邮件,会有用户经历过,当上传一个超大文件的时候,经过本地计算以后,页面提示用户说这个文件在服务器上面已经有了,这样就可以不用重新上传了。这就是data deduplication的一个典型例子。)
    我们需要设计一个能很容易采用这些技术的系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值