查看原文
其他

LinkedIn推出了自己的私有云平台 未来可能开源

2016-04-09 云头条

由于希望降低开发成本和硬件成本,并建立一条流水线,以加快新功能的开发,LinkedIn推出了自己的私有云,名为LPS(LinkedIn平台即服务)。



LinkedIn的技术主管斯蒂文 ·伊德(Steven Ihde)在宣布这项技术的一篇博文中写道:“LPS将整个数据中心作为单一资源池呈现在应用程序开发人员的面前。它让开发人员可以在短短几分钟内部署好自己的应用程序,根本不需要工单。这让开发人员得以专注于构建应用程序,而不是将时间浪费在寻找机器资源,或者等待部署。”


伊德在后续采访中说:“我们将自动化提升到下一个阶段,为此感到激动和兴奋。我们现正在使管理应用程序的整个过程实现自动化。”


伊德特别指出,LinkedIn已经为更新软件版本之类的低级流程实施了良好的自动化。仅仅两个月前,这家公司宣布快速版本流水线实现自动化。但是像安装和设置新的应用程序这些比较复杂的操作需要基于工单的系统,需要员工进行人工干预。


伊德在宣布这次发布的博文中写道:“LPS将整个数据中心作为单一资源池呈现在应用程序开发人员的面前。等到组成LPS的所有系统全部完成,我们的整个托管环境将作为单一的整体式系统而存在,我们的内部用户只要使用API调用,而不是多个JIRA工单,就可以将新服务上线。”


这无疑是下一个阶段。


LinkedIn拥有让这个庞大网站运行的将近1000项服务和数十万个服务实例。LPS更换了许多人工或半自动化的流程,这些流程负责分配资源,确定什么资源在何处运行,并且最高效地利用硬件。


伊德写道:“我们一直在探究各种方法,希望从更小的硬件占用空间获取更多的资源,同时让我们的软件架构更加面向应用程序,以此提高工作效率。LPS还为一些工作负载将硬件占用空间缩减了50%或更多。简而言之,这个新的内部平台将在为公司节省资金的同时,让我们的工程师们可以更高效、更灵活、更创新。”


只是个开端


工程师们列出了一套标准,确定这个新的理想托管环境实际上需要做什么:


  • 让服务所有者和工程师能够管理其服务的生命周期。

  • 不断优化LinkedIn的基础设施,最大限度地提升性能,同时保持稳定性和适应性。

  • 将更多的应用程序和资源上线,保持高可用性,从而自动补偿人为错误和意外事件。

  • 不需要“改装/破解”(hack)或额外的技术负担就能做到上面这几点。



LPS是一种自定义的云解决方案。工程师们一开始汇集了LinkedIn的诸多现有服务,包括Nuage、inGraphs和AutoAlerts,“提供所需的功能,以便自动配置数据存储区,提供操作和性能度量指标,并且监控应用程序,确保新的应用程序实例在需要时可以实时启动。”


尽管LPS是自定义系统,但可能的话,充分利用了开源解决方案。该公司认真评估了几种可能的方案(包括Docker和LXC)后,决定选择runC,它最适合LinkedIn已经在使用的自定义应用程序。


LPS涉及多个方面,不过LinkedIn在发布会上详细介绍了四大部分:Rain、RACE、Orca和Maestro。


Rain


伊德说,Rain“结合了资源限制隔离和主机分配功能,以便在主机上安全地运行任务。Rain会弄清楚在何处运行任务、如何运行任务。”


他在博客上作了更详细深入的解释,称Rain是“LinkedIn应对资源分配和容器隔离的解决之道,直接使用Linux控制组和命名空间,还通过runC充分利用了libcontainer。”


伊德写道:“其目的不仅仅在于为应用程序提供资源保障和安全隔离,还与我们现有的基础设施无缝集成。部署Rain之前,我们部署一项服务有时要花两天以上。有了Rain之后,这个时间缩短至只要10分钟,时间整整节省了95%。”


RACE


RACE(资源分配和控制引擎)是“套件管理系统”,伊德表示。RACE让RAIN进入到了下一个阶段:某个进程可能需要大量的实例,RACE能够自动管理实例――必要时增加或减少实例,确保随时有合适数量的实例在运行。它还可以重定向流量,应对故障和需求激增之类的情况。


Orca


Orca这个名称来自编排(orchestration)这个术语,该应用软件专注于编排一次性任务。伊德写道:“工程师们常常要求的一项功能就是,能够为短时间运行的试验及其他任务启动大量的主机。”


工程师们在使用Rain和RACE时认识到,LPS已经在创建任务、资源分配、运行任务和记录结果等方面实现了自动化,但是这些系统并没有有机地结合起来。


Orca让他们得以充分利用临时可用的资源,以便运行试验及其他短期项目,预计会进行测试,并且更换配置短时间运行的任务的现有机制。


目前,Orca每天运行2000个任务;伊德估计,到年底,这个数字会增加到50000个任务。


Maestro




Maestro可谓是奏响LPS这首交响乐的“指挥”,它提供了“LPS系统的全局视图,让Maestro能够管理在我们平台上的应用程序配置的方方面面。”


Maestro“结合了长时间进程所需的一大堆资源,比如说分配数据库,或者注册新服务;它将所有部分连接起来。Maestro旨在成为‘一站式解决方案’,为能够支持平台的应用程序维护保存设置和配置的持久性存储区。”


持久性存储区“提供了将应用程序部署到LPS的数据、方案和执行模式。蓝图为应用程序定义了预期状态(aspirational state),Maestro‘指挥’的方式就是,采取必要的动作,让数据中心的现有资源匹配预期要求……通过为这每一个系统构建控制平面API,我们就能使响应需求突然猛增或网络中断之类的事件这个过程实现自动化。”


不是一切都会迁移到LPS。比如说,目前还没有计划迁移这家公司的甲骨文数据库。但是伊德写道,最终,大多数自主开发的应用程序和“目前使用的相关基础设施服务(比如Kafka和Pinot)最终都会在这个新的平台上安家落户。”


会开源吗?


伊德计划评估LPS的哪些部分可以发布到开源社区。目前这项工作还没有明确的时间表,但是他预计这些会是比较低层的部分,从Rain或Rain的部分组件开始入手。


他解释:“越靠近架构的低层,依赖关系越少,所以该进程对其他人来说越有用。”RACE、Orca和Maestro都使用Rain来运行任务,所以从Rain开始入手最合情合理。此外,他认为,该公司可能会“使用Python来构建Rain,在Docker和runc方面使用Python构建一些组件,这些都是对开源社区来说可能有用的例子。”


对LinkedIn的技术团队来说,激动人心的是,他们刚开始领略LPS的发展前景。


一种值得关注的可能性就是使用Nuage;LPS可以将协作引入到线上和线下环境。通过LPS提供的自动化可能意味着,共享数据处理任务和在线服务任务之间的硬件资源。LPS可以在流量增长较缓慢期间重新分配资源,将资源从在线服务分配到开发或数据处理任务。这有望在节省成本方面带来巨大的影响。


相关阅读:

Linkedin:10年架构演化史

一家互联网公司需要哪些人才?


私有云交流群,欢迎加入,群主微信:aclood


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存