分布式对象存储Ambry - 官方博客翻译与摘录(5)运维与迁移

6. 运维困难

所有有够见过分布式系统的人都知道在系统整个生命周期中,写代码是最简单的。运维是最困难的,通常需要很多工具,指标和大量的测试来确保运行正常。我们做了这些,并且实现能够主动发现问题并解决。这帮助我们能实现在短期内上线高质量的软件。

6.1 Simoorg

我们孵化并开源了Simoorg项目,一个分布式异常检测系统,用来检测集群中的任意错误。我们想测试机群不断推送流量,并且在注入类似于java GC暂停,磁盘错误,节点挂掉和网络断开错误的同时检测系统的准确性。我们能发现主要Bug并主动修复。如果我们没有投入这么一个框架,那我们就得在生产环境中发现这些问题了。我们很高兴的告诉大家,LinkedIn开源的另一个流行的项目-KafKa,也在LinkedIn中利用了这个框架。

6.2 生产中准确性测试

这是另一个许多系统没有保证的地方。这在新版本部署在一部分机器(非全部)上试运行非常有帮助。准确性测试保证所有的API在所有的输入情况下,结果都是准确的。这帮助我们在新版本试运行阶段就能主动发现问题,防止被动通过客户端反馈出问题,造成严重结果。

6.3 管理工具

大部分分布式系统很难管理,有一套好的管理工具来管理集群很重要。在项目开始时,我们就投入了很多时间来确认我们需要的管理工具以确保集群管理非常非常简单。其中一些管理工具包括:给系统增加更多的分片和备份,将数据反序列化出来的取数据工具和将某一资源设置为不用的工具。

6.4 审查工具

之前说过,每个存储节点在新对象写入磁盘时会产生一个备份事件。这个事件包括这个对象和事件源。现在这些事件都被保存在Hadoop中。这样就可以检查这些对象是否写入了所有的备份中。然而,由于使用了Hadoop,这些目前不是实时的操作。我们计划建立实时审查系统,原理是消费这些事件,并报告没有成功复制的对象。这将使我们对于一个对象备份的状态有更清晰的认知。

6.5 指标和报警

每个系统都需要有相关的指标和报警用来鉴别系统行为异常。这非常明显但是很少能做对。正确的指标很重要,指标的数目不要太多,并且需要选择正确的报警阈值。没有严谨的记录和测量方式,这些指标还有阈值都是没有意义的。我们在这方面投入很多,这使我们坚信我们得出的这些指标还有阈值将会帮助我们更快地稳定系统。

7 系统迁移

我们在不停机的情况下将所有的多媒体内容从原有系统中迁移到了Ambry中。另外,我们需要面对一些比较棘手的截止时间限制。

  1. 公司将所有服务从Spring RPC中迁出。我们从开始建立Ambry到支持新的API并移除Spring RPC只有四个月。
  2. 新的机房建立,我们不想在新的机房里花很高的成本部署原有系统。这意味着我们有八个月的时间来完成Ambry来避免部署老系统。
  3. 最后,我们想想从我们的机房中撤掉Solaris 系统,这有一年的截止期限。
    我们决定用一种可以实现以上所有目标的方式来搭建Ambry。我们从搭建前端并把请求代理到老系统中开始。之后我们将所有客户端迁移至利用新前端。这需要很大的努力,但我们最后成功的到了第一个目标。
    下一步是实现Ambry端到端工作,并把它部署到新的机房中。我们在代码中添加如果新机房中的请求失败就将请求转发到远程老机房中的逻辑。这带来了很多不确定因素但我们决定承受这个风险。这样一来,其实Ambry就相当于新机房的缓存。利用这个架构,我们达成了第二个截止日期目标。
    在接下来的几个月中,我们优化并稳定Ambry。在我们的测试和检查过后,我们对于Ambry非常有信心,于是我们决定关掉老系统。在一年的截止时间内我们实现了这个目标。
    我们利用一年的时间完成了迁移,现在LinkedIn的多媒体存储的唯一介质就是Ambry。这个成功源于我们周密的计划和迭代开发。
    这里写图片描述

8.未来规划

8.1 非阻塞

阻塞请求阻塞线程直到请求完成并且不支持流式操作。为了实现高吞吐量,避免对于大对象的资源饥饿,我们需要将前端和路由模块做成完全非阻塞。前端实现已经完成并正在测试,路由模块库也将很快完成。

8.2 机架感知

现代数据中心都有单顶机架式交换机(是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,如以太网、快速以太网、千兆以太网、ATM、令牌环及FDDI等,但价格较贵,高端交换机有不少采用机架式结构)。 这意味着软件需要足够智能,能承受交换失败。我们正在建设让Ambry对于跨机房分片实现机架感知。这个仍在进行中。

8.3 命名域

目前,Ambry不支持命名域(即只有ID获取对象,没有明明与前缀)。我们想实现命名域来定义用户组,权限控制还有配额分配,这比在对象级别实现要简单得多。

8.4 安全

Ambry目前支持数据节点间的加密。也实现了前端和数据节点通信加密。然而,我们想更进一步。我们想在REST接口级别支持授权鉴权以及加密。在实现命名域之后我们会着手实现这些。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值