我们需要什么样的数据计算框架
Hi everyone~我们很高兴能跟大家介绍这款新型的数据计算框架,Lightflus。但我在这里想先跟大家探讨的就是我们到底需要什么样的数据计算框架。
目前最流行的两款数据计算框架是 Spark 和 Flink ,他们二者分别代表了 batch 和 streaming 两种计算范式。在 2016 年 Dataflow Model 被提出来了后,Spark 和 Flink 都希望填平 Batch 和 Streaming 之间的鸿沟。不管从理论还是工程实践上讲,Dataflow ,或者时髦点,叫流批一体,起码不是空中楼阁了。而在 Flink 被阿里收购以后,各种宣传漫天飞,在国内大有一统企业数据计算框架的趋势。
Spark 和 Flink 有什么不足的地方呢?
从用户的角度来看,这两款框架虽然都非常优秀,但着实有大炮打蚊子的感觉,而且运维和开发都非常繁琐。尽管有 Spark SQL 和 Flink SQL 来简化(间接导致 Data Engineer 沦落为 SQL boy ),但是在很多场景下(比如 IoT ),SQL 还不够。主流的云厂商也不怎么支持 Spark 和 Flink ,除了阿里做了个阉割版的 Flink Cloud ,Databricks 奶亲儿子 Spark 外,其他主流云厂商很少会亲自下场做。
因此不论大小企业,想要应用 Flink 和 Spark 来做数据驱动系统(如 AI ),其实成本颇高,需要配置一个 infra 团队才能很好运转。对科技大厂可能无所谓,但对初创公司或者数据部门在组织架构里只是支撑部门并非业务部门的团队,可能根本拿不到那么多资源。
目前的数据计算框架( Spark ,Flink )存在的问题
- 上手门槛和落地成本都很高,对于数据团队来说,核心还是捋清公司的业务模型,更聚焦于业务而非技术细节,不然按这两年的光景,还在天天纠结底层原理就等着被裁吧:);
- Cloud 化不够,每家企业都在搞重复建设,浪费大量资源。以前热钱多随便燥,现在都讲降本增效;
- 灵活度不够,管理成本和风险高,传统企业或者初创公司希望搭建数据驱动系统,在团队组建和管理上都很难保持灵活性,降低成本和风险;
- 存算不统一,数据存储成本高,存算不统一,流计算和批计算各一套,两套存储,两份成本,扩展性也很差;
我们需要什么?
- 轻松上手,无忧落地:人都是懒的,尤其对工作,能少做点事,干嘛多做呢?
- Cloud-Native ,避免重复建设:能省钱就省钱,KPI 完成了,老板赚到了,双赢:);
- 灵活度高,降低管理成本和风险:你团队里谁都能干,也不需要招新人来磨合了;
- 存算统一,一份数据:这个好处我就不说了吧,一份数据好维护,成本低,谁用都说好;
我为什么做这个框架?
其实从上面给出的结论,也就不难得出我做 Lightflus 的初心:
- 我希望将门槛高,成本高的数据计算框架变成普通的开发人员也能轻易上手的”快消“产品。
- 我是有技术追求的,我希望能做一套存储来替代业内两套存储的方案,并且成为产品的一个部分,向业界给出一个 state-of-the-art 的方案;
这个项目的设计是什么样的呢?
- 我们用 Rust 实现了一个 Runtime ;
- 我们提供了 Typescript API 来保证类型安全;
- 没错,你可以在浏览器里写 Typescript 的代码跑流数据计算(我正是这么想的);
- 我们未来还会支持 WebAssembly ,这样 Runtime 的性能就会更好(更少的执行时间,更少的 GC );
- 架构是 Coordinator-Worker 架构,典型的分布式计算架构,保证有很好的扩展性;
如果想知道更多细节,可以看文档,链接在 github 里;
Lightflus 和 Flink/Spark 之间的与众不同的地方在哪呢?
- API 不同,一个 Java 一个 Typescript ;找你们的前端同学就能写 streaming 任务;
- 更小的 Runtime ,解决问题不再是上”重装坦克“而是”轻型人体工学装甲“;
- 更简单的操作,我们提供的 CLI 工具会使得操作云端集群更加简单;
- 更便宜,更灵活,对数据开发人员的心智负担更少,更聚焦于业务;
计算状态的容错是否支持?
- demo 版本和 preview 版本尚不支持容错。但在 release 版本中将会支持
- 容错我们将会参考 Flink 实现 checkpoint 机制;
支持哪些算子?
- demo 版本将支持
map
,flatMap
, reduce
, filter
,window
,trigger
;
- release 版本将支持
join
;
- 支持算子的列表和用法可能会随着版本迭代会更新,API 目前还不是稳定的;
支持哪些 sink / source ?
demo 版本将支持以下的 sink / source:
- Kafka Sink 和 Source ;
- Mysql Sink ;
- Redis Sink ;
怎么参与进这个项目里来呢?
- Github,欢迎大家多多 star~;
- 加入 Slack;大家可以在 Slack 频道里针对产品畅所欲言;
什么时候公布 demo ,release 版本何时发布?怎么收费?
- demo 预计在明年年初发布,目前 repository 给各位看的是 preview 版本,尚未经过严格测试,而且有些功能也还在开发中;
- release 版本的发布和收费细节将在 Slack 群里公布,届时请大家多多关注 Slack 群;
demo 版本可以预览的功能
- Typescript demo API ;
- CLI 工具支持;
- Runtime demo features ;
短期和长期规划
- 短期规划:明年把 release 版本做出来,如果可以,尝试融点钱,把项目更好运营下去;
- 长期规划:我希望我可以将这个项目做成 SaaS 化的标准云服务,并且在商业上能够自我造血,让这个项目不至于在长期缺钱后死掉:);
国内做 SaaS 那么难,为啥还想做 SaaS ?
- SaaS 是个好生意,但国内软件市场需求和供给目前都不成熟,这跟国情有关;
- 我的目标是 Global SaaS ,在国内运营的方式可能不一样,而且介入国内市场的时间可能要在项目比较成熟后,毕竟我也在 SaaS 公司做过,清楚国内软件商业化存在的问题;
- 国内对软件的认识正在逐步提高,需要时间。我们定位是卖”铲子“,所以只要还有”淘金者“,那铲子就卖得动;
是否会长期开源下去
这个我不确定,我会视这个项目商业化的进度和竞对情况决定,所以我不鼓励大家来提 PR ( star 我不拒绝哈哈哈),因为将来一旦不开源了,有白嫖社区的感觉在里面;
其他的
- 如果有合作意愿、想法碰撞或者疑问,欢迎咨询;
- 欢迎大家来 Slack 群逛逛,以后大部分信息都会在 Slack 群里同步了;
- 非常欢迎大家去 star 项目,如果想要提 PR ,可以找我,我这里会做 code review ;