< 返回版块

Mike Tang 发表于 2024-12-21 23:33

1221

NATS + Pathway: Kafka + Flink的替代方案

无缝集成:Pathway的NATS连接器简化了数据摄取过程。 高性能与低延迟:NATS处理快速消息传递;Pathway即时处理数据。 可扩展性与可靠性:NATS的集群功能和Pathway的分布式工作负载帮助实现扩展性和容错性。 灵活的数据格式:支持JSON、纯文本和原始字节。 轻量级与高效:NATS的发布-订阅模型比完整的Kafka部署更不复杂。 高级分析与Rust驱动的引擎:Pathway支持实时机器学习、图处理、复杂转换,并由可扩展的Rust引擎驱动——支持多线程、多进程和分布式计算以优化性能。

https://pathway.com/blog/build-real-time-systems-nats-pathway-alternative-kafka-flink/

为Rust异步开发构造一个心智模型

这篇博客文章讨论了在编写异步程序时建立一个心理模型的重要性,尤其是在Dart和Rust等语言中。作者指出,异步编程中的错误通常难以发现和重现,因此预防措施非常有价值。文章提出了一个通用的异步编程心理模型,不关注特定语言的实现细节,而是着重于如何思考异步程序以避免错误。

文章首先解释了为什么使用任务(tasks)而不是进程(processes)或线程(threads)。任务比进程更轻量,消耗更少的内存,切换任务也比在操作系统级别切换进程更加高效。在典型的HTTP后端,框架会为每个请求创建一个任务,这通常是对用户隐藏的。

随后,文章介绍了异步程序的调用图(call graph),并通过一个简单的程序示例展示了异步函数如何在执行过程中挂起和恢复。重点强调了工作窃取(work stealing)模型,其中多个工作线程共享同一个任务队列,能够彼此“偷取”任务以平衡负载。这种模型在Golang中被称为M:N调度模型。

最后,文章探讨了在这种工作窃取环境下编程时需要注意的并发问题,特别是在代码可以跨多个线程执行的情况下,如何确保代码的正确性。为了说明这一点,文章使用了Go语言的一个示例,展示了在并发环境下如何使用同步机制(如WaitGroup)来确保计数器的正确递增。

总体而言,文章通过构建一个关于异步编程的心理模型,帮助开发者理解和调试异步程序,并提出了避免常见异步错误的策略。

https://rainingcomputers.blog/dist/building_a_mental_model_for_async_programs.md

Arroyo - Rust写的流处理引擎

Arroyo 0.13.0版本发布,带来了多项新功能和改进,旨在进一步提升其作为云原生流处理引擎的性能和易用性。此次更新包括:

首先,支持从源头读取元数据,这使得用户可以更加灵活地处理数据流,并更好地理解和管理数据来源。其次,引入了一个新的RabbitMQ Streams连接器,增强了与RabbitMQ消息队列的集成,提供了更丰富的消息处理选项。接着,增加了原子更新输出的功能,确保在更新数据时保持一致性。还增加了对Kafka的IAM认证支持,提升了与Kafka集成的安全性。

此外,运算符链(operator chaining)是一个关键的新特性,它通过将多个运算符组合到一个线程中执行来减少延迟,提高了数据处理的效率。2024年是Arroyo项目和社区非常活跃的一年,这次更新吸引了来自多家公司的贡献者,体现了社区的活跃度和对项目的支持。

总的来说,Arroyo 0.13.0版本通过这些新功能和改进,继续致力于简化流处理,提升数据流的处理能力和安全性,同时保持其易于部署和使用的特点。无论是通过Linux、MacOS、Docker还是Kubernetes,用户都可以轻松地开始使用或升级到新版本。

https://www.arroyo.dev/blog/arroyo-0-13-0

--

From 日报小组 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页