使用Elasticsearch,Kafka和Cassandra构建流式数据中心

在过去的一年里,我遇到了一些软件公司讨论如何处理应用程序的数据(通常以日志和metrics的形式)。在这些讨论中,我经常会听到挫折感,他们不得不用一组零碎的工具,随着时间的推移将这些数据汇总起来。这些工具,如:
- 运维人员使用的,用于监控和告警的工具
- 开发人员用于跟踪性能和定位问题的工具
- 一个完整独立的系统,商业智能(BI)和业务依赖其分析用户行为

虽然这些工具使用不同的视角,适用不同的场景,但是他们同样都是关注数据来源和类型。因此,许多软件团队说,“如果时间充裕,我们可以建立一个更好的”,坦率地说,现在有很多出色的开源代码,自己重头建立一套是否更有意义值得商榷。在Jut我们就是这样做的。我们使用开源的大数据组件建立了一个流式数据分析系统,这篇文章描述了我们使用的片段以及我们如何把它们组合在一起。我们将介绍:
- 数据摄取:如何引入不同类型的数据流
- 索引及保存数据:高效存储以及统一查询
- 串联:系统中的数据流过程
- 调优:让整个过程真正的快速,用户才会真的使用它

我希望通过阅读这篇文章将有助于您的系统在一个理智的,可扩展的方式避免一些我们遇到的陷阱。

enter image description here

数据摄取

当涉及到业务分析和监控,大部分相关的数据类型,格式和传输协议并不是固定的。你需要能够支持系统不同的数据来源和数据发送者。例如,您的数据可能包括下列任何一种:
- 自定义的应用程序事件。
- 容器级指标和日志。
- statsd或收集的度量指标。
- 来自第三方的webhook事件,像GitHub或Stripe。
- 应用程序或服务器日志。
- 用户行为。

虽然这些都有不同的格式和象征,他们在系统内部需要一个统一的格式。无论你选择哪一个格式,你都需要对输入的数据流做转换。

我们选择了简单灵活的数据格式:每个记录(“点”)是一系列的键/值对,它可以方便地表示为一个JSON对象。所有的点都有一个“时间”字段,度量点也有一个数值型的“值”字段;其他点可以有任何的“形状”。前端HTTPS服务器(运行Nginx)接收数据,多路分配并发送到本地的每个数据类型“连接器”进程(运行Node.js)。这些进程将传入的数据转换为系统的内部格式,然后将它们发布到一个Kafka topic(可靠性),从中,它们可以被用于索引和/或处理。

除了上面的数据类型,多考虑使用连接器,能使您自己的团队最容易将输入数据整合到您的数据总线。你可能不需要太多我在这里描述的通用性或灵活性,但设计一些灵活性总是好的,这使你系统能

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值