本篇是O’Reilly Data Show的一个采访实录,大数据公司 MapR联合创始人、Uber首席架构师 M.C. Srivas讲述IOT时代的流处理和消息系统 。主持人和Srivas讨论了他在数据管理和开发分布式系统的经验。在Srivas的职业生涯中,他负责的友分布式系统、数据库、查询引擎、消息系统等。
Srivas指出,上述系统广泛的部署在企业中,这些企业要求系统具有安全、容灾和支持多数据中心的功能。主持人和Srivas聊了很多主题,这里重点聚焦在实时系统和应用上。下面是谈话的一些亮点:
广告服务需要在70到80毫秒限制内返回给广告商。当你点击一个页面,广告栏、侧边栏和底部的广告不得不在80毫秒返回结果。客户的数据中心遍布世界各地,日本、中国、新加坡、香港、印度、俄国、德国等。他们把各数据中心的数据发送到主数据中心来进行整个点击数据的处理,然后返回给用户。
他们需要一种清晰的方法让这些点击数据返回主数据中心,主数据中心可能运行在美国、日本或者德国,或者其他地方。一般情况下会在每个地方通过完全独立的Kafka集群实现,但有时会出现跨集群生产者和消费者不协调。比如,在日本数据中心有一个Kafka集群在运行,但在香港的Kafka集群不能进行故障切换。因为香港的Kafka集群是完全独立的,它并不能监测到日本数据中心的什么数据被消费了和什么数据产生了。如果消费者在日本的Kafka集群消费数据并迁移到香港的Kafka集群,他们会变成脏数据。许多客户在咨询这方面问题的解决方法。
数据源现在不是发送到几个数据中心,而是百万个数据中心。想象一下自动驾驶汽车,每个自动驾驶汽车好比一个数据中心,它生成很多数据。再看一下飞机,它也是一个大的数据中心,这些都是我们需要为规模化IOT所需要做的。
一个文件系统是庞大的,你写入文件,读取文件,文件系统是怎样获取到你感兴趣的文件?如果我查看一个流处理系统,我正在查询的是一个完全实时的。如果一个发布者发布了一些数据,所有在相同数据中心的相关监听者需要在五毫秒钟获取通知。如果我们的数据中心跨越半个地球,你在日本数据中心发布数据,那南非或者其他地方的数据中心要在一秒之后才能获取到信息。
我们学习Kafka、Tibco、RabbitMQ等技术,也学习了很多监听数据的知识,来解决流处理和消息系统的问题。这是物联网IOT时代所需要的。
我们完成生物识别系统 Aadhaar ,它能关联你的银行账户、医院就诊以及其他所有的数据记录——比如,学校入学、航空安检、护照等。现在大约有十亿人已具有这种生物识别,还有300万即将完成。如果你想从ATM机中取钱,你只要刷指纹即可取钱,而不需要一张银行卡。