Lightflus:云原生流计算框架,Demo 版本正式发布!

本文介绍了云原生流计算框架Lightflus,旨在解决现有框架如Flink的局限性,包括云原生、低门槛、云中立和按需付费。Lightflus Demo提供了API、Runtime等功能,并采用TypeScript作为API开发语言,Rust编写Runtime。文章详述了Lightflus的技术架构、本地部署和与Flink的对比,展示了其简易部署和快速开发的优势。
摘要由CSDN通过智能技术生成

Introduction

Hi all,这是我首次在CSDN上发文章,先简单介绍下我自己吧,我叫 Jason Thon,魔都一枚小开发,喜欢撸猫撸狗打电玩,练习时长两年半,擅长各种 Bug 制作技巧与 Debug 手艺。

在这篇文章里,我将介绍一款与我一同练习时长一年,擅长流处理的新型云原生计算框架 Lightflus。在我的公众号文章: Lightflus: 云原生流处理框架 中,小范围地宣传了一下这款框架,并被 Rust 中文社区转发,一时得到了一点关注度。也因此有了动力继续做下去。

Lightflus 如我的文章中所言,是基于我对现代数据栈的思考,尝试去面向未来数据计算框架开发的一款框架。其目标要解决的问题是主流流计算框架如 Flink 所没有解决的:

  1. Cloud-Native:因为历史原因,目前 Flink 并没有真的做到 Cloud-Native;
  2. 上手门槛高:Flink 需要很专业的团队才能玩得转,不是所有公司都有 BAT 这样的开发资源的;
  3. 云中立:Flink 在商业上不是云中立的,客户只能在某云上使用 Flink 的云版本。这就导致 许多用户怕被云厂商绑定,只能去做各种重复建设的活,浪费大量时间和资源在一件人效比极低的事情上。而 Lightflus 与云无关,理论上什么云环境都能用,用户可以将 Lightflus 非常简单地部署到自己的公有云或私有云环境中;
  4. Pay-as-you-go:因为沉重的历史包袱,Flink 实现 SaaS 化比较艰难,用户需要付很多额外的钱在一个对主营业务没那么重要的东西上。但 Lightflus 模块化和轻量化的设计,SaaS 化的路径就会简单很多;

Lightflus 尝试通过技术创新,来解决如上的问题。简单来讲,Lightflus 给开发者搭了个云端的流计算“开发环境”,让他们能够更加简单(便宜)地去开发流数据的价值。在未来 Cloud IDE 成熟后,会进一步释放 Lightflus 在 DataOps 上的价值;

Lightflus Demo 的功能一览

在 Demo 版本中,Lightflus 将提供如下的 features:

  1. 仅支持 Typescript API
  2. 一个小巧的 Rust 编写的 Runtime;
  3. 支持 mapreduceflatMapfilter 算子,在 1.0.1-alpha 版本中支持 window 算子;
  4. 提供如下 Data Source 的支持:Kafka
  5. 提供如下 Data Sink 的支持:MySQLRedisKafka
  6. 支持 Docker 部署;

由于计划中的 CLI 工具在 demo 里并不提供,因此发布时间比计划的提前了。此外,Demo版本及其之后的release版本都会提供社区支持,大家有问题都可以在Gitter上提出来。

Github 与社区

欢迎大家到 Github 去试用下 Lightflus,我们非常希望能得到各位的任何关于产品的建议!

再谈谈社区,其实我是非常欢迎任何人来做 Lightflus 的 contributor 的,但社区是有规范的(包括 PR、提 issue 等),这一块我会逐步完善起来。对于开源生态,我都是拥抱的态度,我会让 Lightflus 加速融入到开源生态中。

下面让我们来详细领略下 Lightflus 这款新型流计算框架吧~

Lightflus 的技术架构

应用架构

Lightflus 的整体应用架构如下图

Lightflus 的应用架构
Lightflus 本质是个分布式实时 DAG 计算引擎,它从指定的流数据源(如 Kafka、MQTT 等)消费数据,经过 User-Defined 的 DAG 计算出结果后,写入指定的数据存储层(如 MySQL,Redis,ElasticSearch 等)或数据管道(如 Kafka)中。

技术架构

Lightflus 的技术架构

Lightflus 由 Master 和 Worker 节点组成,其中 Master 节点有 ApiServer 和 Coordinator 两个服务;

  • ApiServer 主要负责与 Client 端或 CLI 工具的交互,提供标准的 REST Api 接口;
  • Coordinator 负责集群管理、Checkpoint 管理、动态扩缩容管理等;
  • Worker 是主要的计算负载并负责与数据源 Connection 、计算中间结果的 Dispatch、状态管理等;计算图会被构建成一个 Actor System,通过 Channel 在 Actor 间同步计算结果;

API

Lightflus 采用 Typescirpt 作为 API 的开发语言,这么做有几个目的:

  1. Typescirpt 是类型安全的,可以避免很多类型错误,还能够规定 Dataflow 算子转换的输入输出结构,减轻 Runtime 的负担;
  2. Typescript 可以有两种编译中间产物:JavaScriptWebAssembly,而两者的 Runtime 现在正逐步融合,在未来,用户可以根据自己的需求来决定 Lightflus 使用哪种编译中间产物;
  3. Typescript 在写法上与 Java 差异不太大(当然,Typescript 玩法更加丰富),现有的数据开发工程师也能很容易转过来;
  4. Typescript 是 web 的语言,天生支持云端化;

Runtime

Lightflus 的核心计算引擎是 Rust 编写的,这么做的目的是:

  1. Rust 能很大程度上保证内存安全,并且拥有接近 C/C++ 的性能;
  2. Rust 生态内有成熟的技术可以作为 Typescirpt 运行的底层引擎;
  3. Rust 在工程化上更加成熟,能很好地模块化,还能通过软件工程来有效管理 Lightflus 的代码产出质量;

核心计算引擎采用 Actor 大规模并行计算模型,这种并行计算模型经过时间充分的检验,证明是目前大规模并行流处理最适合的计算模型,在可扩展性、高可用、容错上也都有成熟的解决方案。Lightflus 是站在巨人的肩膀上起步的,产品能够更快地到达较高的成熟度

Let’s Try Lightflus!

本地部署 Standalone 集群

在 Flink 的世界里,即使是最简单的流任务(如 word count),想要在线上运转起来,都需要折腾不少时间。虽然 Flink 社区努力把 Flink 的使用门槛降到最低,但你想让它哪怕在本地环境正常工作,依旧需要花费不少力气。

而 Lightflus 就非常简单了,只需要执行一行命令

docker-compose up

docker-compose.yml 文件配置如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值