阅读更多

0顶
0踩

互联网
【编者按】本文由Autodesk Cloud软件架构师Olivier Paugam撰写,解释了如何集合Mesos、Kafka、RabbitMQ、Akka、Splunk、Librato、EC2等基础设施解决实际问题。此外,以如此小规模的团队解决问题确实令人赞叹。



以下为分享原文:

数月前分到了一项新的任务:做一个集中事件系统(central eventing system),允许各个后端彼此通讯——包括动态流式(activity streaming)后端、渲染、数据转换、BIM、日志报告、分析等等。最终确定,这应该是一个可以匹配多种负载、使用场景与可扩展配置文件的通用系统。此外,这个系统还需要具备简单易用的接口。最后,这个系统的每部分都应当能够自动扩展。

然而,笔者根本没有那么多的时间去深入开发,再选用稳定通用、性能良好的Kafka作为存储核心(当然这里Kafka并不是唯一选择)。同时需要注意的是,这里还需要通过一些API将之以前端的方式提供。而在一些思考后,使用后端管理offset同样被否决,因为这样做在处理实例错误时需要建立大量约束。

基于这些需求,这里设置了两个独立的层:一个API层,处理接收的信息;还有一个后端层,托管常驻、有状态的Kafka做通信的流处理服务(比如执行生产者和消费者)。这两个独立的层分别具备良好的扩展性,只需要一致的路径以确保客户端与同一个后端流处理服务通讯不会中断。

这两个独立的层完全用Scala实现,并使用了Play!框架。同时,这两个层都非常依赖Akka的actor系统(每个节点通常运行着几百个actor)。后端层执行了定制的Kafka producer与consumer,并使用了独立的actor设置来管理预读与写入缓存。在整套系统中,“ Everything is implemented as nested finite-state machines ”被一直执行。使用Librato收集度量数据,随后转到Splunk处理。



如上所述,这里实现了两个独立的层,那么它们之间的路由机制该如何完成?非常简单,这里使用的是用RabbitMQ——可靠且兼具弹性!对于实现这个“phone-switch”,AMQP队列是良医妙药。同时,使用逻辑分片对其扩展也十分简单(比如对每个事务中出现的cookie使用哈希),它将会把一组固定的后端节点与一个RabbitMQ broker连接起来。

那么,这里为什么不聚合RabbitMQ broker?其主要原因在于这么做并不会带来显著地提升,同时也非常耗时。实际上,各独立broker之间的分区流量更高效易控。跟收益比起来,附加的工作量微不足道。

简而言之,在一些容器拓扑中执行针对路径路径,其取决于不同后端节点主导的是什么样的streaming session。扩展整体与分层拓展一样简单,取决于具体的需求。实际中唯一的限制来自虚拟网络适配器与其带宽。



现在有趣的部分来了:流量的稳定该如何确保,同时还需要避免byzantine 故障?其实这里并不存在太多的挑战,只需使用一个简单的二阶段提交协议,将客户端与后端作为镜像的状态机(比如始终同步),这可以通过让读写操作需求明确的确认请求来实现。尝试读取的做法在失败后进行重试,直到获得确认,接下来会对后端更新(比如将Kafka offset转发,或者编排一系列事件发布)。这样,客户端与后端之间的传输就类似于“分配session”、“读取”、“确认”、“读取”、“确认”……“处理”。

通过这些处理,系统的巨大优势在于可以有效地呈现操作幂等,同时还可以在状态机上编译所有逻辑,无需使用烦人的说明语句(PS,请原谅我追求酷炫的思想)。此外,任何网络故障都可以通过重试解决,从而可以自由地实现control-flow和back-pressure。

这样一来,所有功能都通过Apache ThriftAPI提供(汇聚了压缩和HTTS,并准备实现某些情况下场景的TCP切换)。当下,平台客户端已经使用了Python、Scala、NET和Ruby等多个语言,并使用了大量炫酷的技术。值得一提的是,Kafka offset是由客户端控制的,使得控制后台更为简单。

到了这里,你肯定想问,后端节点挂掉的话该如何处理?这里需要感谢的是二阶段提交协议让读取数据变得简单——客户端复制失败后会使用现有的offset重新分配一个新的streaming session。因此这里的问题存在于向Kafka写入数据,因为它是异步的,因此可能会面临受到下游back-pressure的情况(在节点失败后,Kafka broker也会出现问题,这一点必须注意)。因此这里需要为后端系统实现一个优雅的关闭功能,从而在等待写入时关闭阻止新的请求进入。再不济,也可以将任何等待数据刷新到磁盘中,等待稍后处理。

这里你肯定想问,基础设施问题该如何解决?这里的原理是相同的,任何与处理streaming session的实际后端节点传输中断必然会导致速度变慢,但是由于二阶段提交,这里不会产生令人不快的影响。

此外,在落入Kafka log之前数据会被自动加密(AES 256),当然你一定要在Kafka producers和consumers之间共享秘钥那么只能祝你好运了。关于安全,streaming session通过OAUTH2认证,每个请求单独用MD5-HMAC,并通过TLS向后端集群传输。

那么,这个炫酷的系统是如何部署的?这里使用是Mesos/Marathon集群来运行(现在还不是DCOS,不过在未来会转换过去,并享受其强大的控制面板)。当下,集群托管在AWS EC2 上,在多个c3.2xlarge实例上被复用(在给定区域中执行一个小型部署,10到20算不少了)。请注意,在Kubernetes(不管是EC2还是GCE)也可以使用同样的方法。



使用Ochopod技术完成部署(自集群容器),它同样是开源的。将操作减到最少。比如推进build时,API层只负责分配一些新的容器,等分配好之后再逐步清理旧的。所有这些操作都通过一个专门的、在集群中运行的Jenkins从节点来处理(其本身也是一个Ochopod容器)。

事实上,笔者也开发了Ochothon mini-PaaS,只是为了快速开发运维(devops)所有的容器。



下面让你体会Ocho-* 平台的强大:1个人(笔者)可以管理跨越2个regions上的5个系统部署,包括所有备份基础设施……而且还有时间写写博客和代码。

所以,总体来讲,对它设计与编码是件很有意思的事情,再加上它现在作为Autodesk Cloud基础设施的关键部分在生产环境运行(相当不错)。也欢迎各位提交问题。

相关阅读:

原文链接:How Autodesk Implemented Scalable Eventing Over Mesos(译者/孙薇 审校/朱正贵 责编/仲浩)
  • 大小: 5 KB
  • 大小: 17.6 KB
  • 大小: 87.1 KB
  • 大小: 138.1 KB
  • 大小: 283.5 KB
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Autodesk基于Mesos和Kafka的通用事件系统架构

    【编者的话】我非常喜欢这篇博客,因为它揭示了许多简单架构模块—例如:Mesos、Kafka、RabbitMQ、Akka、Splunk、Librato和EC2可以整合起来来解决实际问题。而且一个小团队就可以获得非常令人惊讶的成就。 几个月...

  • Autodesk基于Mesos的可扩展事件系统

    几个月前,我接到一个任务,要拿出一个集中式的事件系统,可以让我们的各种后端组件相互通信。我们讨论了后端活动流、渲染、数据转换、建筑信息模型(BIM)、个性身份(identity)、日志报表、分析等等。找寻其中...

  • Mesos入门介绍

    2016年会火的技术之一, Mesos。 花了一些时间, 将Mesos相关的知识整理了一下, 以做备忘。 水平有限, 如有疏漏或谬误之处, 还望指出。  Mesos是什么 Mesos是一个集群管理平台。 可以理解为是一种分布式...

  • Docker 与 Mesos 的前生今世 | 数人云CTO肖德时@KVM分享实录

    今天小数给大家带来一篇技术正能量满满的分享——...十五年计算机行业从业经验,曾为红帽 Engineering Service 部门内部工具组 Team Leader,Docker/Mesos 社区代码贡献者。现负责数人云云计算的研发及架构设计工...

  • 2018年开源容器云,你的技术路线选对了吗?

    同时,Mesos通过两级调度架构管理多种类型的应用程序,第一级调度由Mesos监控集群的空余资源,并将空余资源按照一定规则分配给各个计算框架;第二级调度由框架(Framework)组成,各个计算框架会根据需要选择接受...

  • qconshanghai2016

    http://2016.qconshanghai.com/schedule 大会日程 2016年10月20日 星期四 07:45 开始签到 ...大数据应用与系统优化实践(厂商共建) 微服务架构,我们该如何实践? 地点 百...

  • 2016 上海 Qcon 值得关注的技术

    虚拟机层面加入虚拟化的支持,能有效解决传统热更新方案的痛点,高效精确的回收系统资源。对于大规模 Java 应用,可以做到不重启 Java 进程而达到更新应用的目的,整体更新操作时间也被大大缩短。 ...

  • qconshanghai2015

    Uber首席系统架构师 Matt Ranney Slides下载 高性能数据分析平台架构实践:SequoiaDB + Power Linux IBM资深售前技术工程师 孔皓 Slides下载 10:40 短休 专题 可扩展、高可用...

  • 我关注的一周技术动态 2015.08.30

    服务化和资源管理技术 1. Docker基础技术:AUFS ... ...要点: 支持层次化镜像是 docker 的一大创新之一, 本文详细介绍了实现层次化镜像的技术手段之一 aufs 的使用...2. Autodesk基于Mesos的通用事件系统架构 ...

  • (转)那些年不容错过的硅谷IT公司

    是由 dotCloud 创建的一款开源应用引擎,它相当于是加在 LXC(LinuX Containers,一种轻量、基于容器、操作系统层的虚拟化技术)上的管道,通过高级 API 为进程单独提供了一个轻量级的虚拟环境。Docker 镜像犹如一个...

  • 最受IT公司欢迎的50款开源软件

    Sencha Touch 自称是“一种用于构建通用移动应用程序的领先的跨平台移动 Web 应用程序框架,基于 HTML5 和 JavaScript”。它既有开源许可证版本,也有商业许可证版本。据官方网站声称,《财富》100 强中 60% 使用它...

  • 那些年不容错过的115家硅谷IT公司

    是由 dotCloud 创建的一款开源应用引擎,它相当于是加在 LXC(LinuX Containers,一种轻量、基于容器、操作系统层的虚拟化技术)上的管道,通过高级 API 为进程单独提供了一个轻量级的虚拟环境。Docker 镜像犹如一个...

  • 人力资源经理绩效考核表.xls

    人力资源经理绩效考核表

  • 智慧环卫管理平台建设方案Word(211页).docx

    一、智慧环卫管理平台的建设背景与目标 智慧环卫管理平台的建设源于对环卫管理全面升级的需求。当前,城管局已拥有139辆配备车载GPS系统、摄像头和油耗传感器的环卫车辆,但环卫人员尚未配备智能移动终端,公厕也缺乏信息化系统和智能终端设备。为了提升环卫作业效率、实现精细化管理并节省开支,智慧环卫管理平台应运而生。该平台旨在通过信息化技术和软硬件设备,如车载智能终端和环卫手机App,实时了解环卫人员、车辆的工作状态、信息和历史记录,使环卫作业管理透明化、精细化。同时,平台还期望通过数据模型搭建和数据研读,实现更合理的环卫动态资源配置,为环卫工作的科学、健康、持续发展提供决策支持。 二、智慧环卫管理平台的建设内容与功能 智慧环卫管理平台的建设内容包括运行机制体制建设、业务流程设计、智慧公厕系统建设、网络建设、主机和储存平台需求、平台运维管理体系、硬件标准规范体系以及考核评价体系等多个方面。其中,智慧公厕系统建设尤为关键,它能实时监控公厕运行状态,保障公厕的清洁和正常运行。平台建设还充分利用了现有的电子政务网络资源,并考虑了有线和无线网络的需求。在功能上,平台通过普查、整合等手段全面收集环卫车辆、企业、人员、设施、设备等数据,建立智慧环卫基础数据库。利用智能传感、卫星定位等技术实现环卫作业的在线监管和远程监控,实现对道路、公共场所等的作业状况和卫生状况的全面监管。此外,平台还建立了环卫作业网格化管理责任机制,实现从作业过程到结果的全面监管,科学评价区域、部门、单位和人员的作业效果。 三、智慧环卫管理平台的效益与风险规避 智慧环卫管理平台的建设将带来显著的环境、经济和管理效益。环境方面,它将有力推进环境卫生监管服务工作,改善环境卫生状况,为人民群众创造更加清洁、卫生的工作和生活环境。经济方面,通过智慧化监管,大大降低了传统管理手段的成本,提高了监管的准确性和效率。管理方面,平台能够追踪溯源市民反映的问题,如公厕异味、渣土车辆抛洒等,并找到相应的责任单位进行处置,防止类似事件再次发生。同时,平台还拥有强大的预警机制功能,能够在很多环卫问题尚未出现前进行处置。然而,平台建设也面临一定的风险,如部门协调、配合问题,建设单位选择风险以及不可预测的自然灾害等。为了规避这些风险,需要加强领导、统一思想,选择优秀的系统集成商承接项目建设,并做好计算机和应用系统的培训工作。同时,也要注意标准制定工作和相关法律法规的制定工作,以保证系统建设完成后能够真正为环卫管理工作带来便利。

  • apache-parent-10-14.el7.x64-86.rpm.tar.gz

    1、文件内容:apache-parent-10-14.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-parent-10-14.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

  • 用于卫星通信的CTS天线

    用于卫星通信的圆极化CTS天线研究

  • 人事档案登记及查询系统.xlsx

    人事档案登记及查询系统

  • 12 -防损部经理绩效考核表1.xlsx

    12 -防损部经理绩效考核表1

  • 泰尔指数模型stata全流程代码+数据+文献(数据权威)

    ## 一、泰尔指数模型stata全流程代码+数据+文献 参考C刊《农业经济问题》朱红根(2023)老师的做法,用泰尔指数是衡量个人或地区之间收入差距的重要指标,本文利用泰尔指数分析中国区域内和区域间数字乡村发展水平的差异,测算了全国总体差异、区域内差异、区域间差异以及相关贡献率。此资料包括stata全流程代码、案例数据、参考文献,用excel计算有标注有过程 ,并且参照文献讲的。 ## 二、2005-2021年城乡收入差距与泰尔指数:原始数据+测算结果 泰尔熵标准(Theil’s entropy measure)或者泰尔指数(Theil index)是衡量个人之间或者地区间收入差距(或者称不平等度)的指标。又称泰尔系数或锡尔指数,但我还是习惯叫泰尔指数。Theil指数用来表示区域经济差异状况,数值越大则差异程度越大。 数据名称:城乡收入差距与泰尔指数(原始数据+测算) 数据年份:2005-2021年 指标变量:泰尔指数、城镇收入占农村收入之比、城镇居民人均可支配收入、农村居民人均可支配收入、乡村人口、全体居民人均可支配收入、城镇人口、年末常住人口 测算公式:

  • 34 -配送部经理绩效考核表1.xlsx

    34 -配送部经理绩效考核表1

Global site tag (gtag.js) - Google Analytics