首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

alpakka-kafka(1)-producer

alpakka项目是一个基于akka-streams处理编程工具scala/java开源项目,通过提供connector连接各种数据并在akka-streams里进行数据处理。...在alpakka中,实际业务操作基本就是在akka-streams里数据处理(transform),其实是典型CQRS模式:读写两方互不关联,写不管受众是谁,如何使用、读者不关心谁是写方。...alpakka提供producer也就是akka-streams一种组件,可以与其它akka-streams组件组合形成更大akka-streams个体。...alpakka-kafka streams组件使用这个消息类型作为元素,最终把它转换成一或多条ProducerRecord写入kafka。...还有一类commitableSink还包括了把消息读取位置offset写入commit功能。

93320

Play For Scala 开发指南 - 第1章 Scala 语言简介

Akka包含很多模块,Akka Actor是Akka核心模块,使用Actor模型实现并发和分布式,可以将你从Java多线程痛苦中解救出来;Akka Streams可以让你以异步非阻塞方式处理数据...,并且支持背压(backpressure); Akka Http实现了一套基于HTTP服务端和客户端;Akka Cluster可以帮你实现一个分布式集群系统;Cluster Sharding可以帮你做集群分片处理...;Distributed Data可以帮助你在集群之间分享数据;Alpakka可以帮你为Akka Streams集成不同数据Akka Persistence可以帮你处理Actor消息持久化存储,...防止重启后数据丢失。...WEB框架 基于ScalaWeb框架有很多,Play、Lift、Scalatra和Finatra等等,其中Play是Lightbend官方维护框架。

1.3K60
您找到你想要的搜索结果了吗?
是的
没有找到

akka-streams - 从应用角度学习:basic stream parts

因为akka-streams是akka系列工具基础,akka-http, persistence-query等都是基于akka-streams,其实没有真正把akka-streams用起来。...所以处理应该是分布式数据处理理想方式了。这是这次写akka-streams初衷:希望能通过akka-streams来实现分布式数据处理编程。...一个对数据处理包括两部分:1、对流中元素进行转变,:source:Source[Int,NotUsed] = Source(1 to 10).map(i => i.toString),把所有...akka-streams提供了简便一点运算方式runWith:指定runWith参数组件M为最终运算值。...够复杂了吧。很明显,复杂点处理需要根据上游元素内容来维护内部状态从而重新构建向下游发送元素机制。

1K10

akka-typed(10) - event-sourcing, CQRS实战

EventSourcedBehaviro是akka-typed为event-sourcing事件模式提供开发支持。具体原理和使用方法在前面的博客里都介绍过了,在这篇就不再重复。...而一旦出现系统锁死重启后并无有效办法恢复数据库正确状态。event-sourcing恰恰就能有针对性解决这些问题。...从CQRS流程来解释:这组销售数据在开单为空,然后在完成所有单据操作后一次性产生,也就是在CQRS模式读部分产生。在这个过程中一直是写部分操作,不影响交易数据库状态。...当然,我们还必须在内存里维护一个模拟状态来对每项操作进行控制,:用户未登录不容许任何操作动作。...单据状态在结单用EventSourcedBehavior拿了个snapshot作为下一单起始状态。销售中途出现异常退出后可以在上一单状态快照基础上实施动作重演把状态恢复到出现异常之前。

42430

kakafka - 为CQRS而生

这不就是妥妥CQRS模式吗?当然kafka也可以使用在其它一些场景:消息队列,数据存储等,不过这些都是commit-log具体应用。...不过akkaalpakka社区提供了alpakka-kafka:这个东西是个基于akka-streamskafka scala终端编程工具,稍微过了一下,感觉功能比较全面,那就是它了。...每个partition分担所属topic消息类型下一些指定细分类消息或者事件,"图书库房101"。...要注意是创建topic和partition都是严格管理工作admin,不是在某些程序中任意进行增减。一般来讲,在创建一个新topic就要确定它下面的partition数量了。...我觉着kafkaexactly-once能力最值得推介。因为在akka或者其它消息队列工具里不容易得到保证。而在一个消息驱动实时交易系统里,保证事件重演能正确反映当时状态是关键。

57220

alpakka-kafka(6)-kafka应用案例,用户接口

而且kafka消息是持久性,有重复消费控制机制可以实现数据状态重新计算,是事件event-sourcing模式一项理想工具选择。这就是我选择kafka原因。...因为零售店其它业务,:添订货、收发货、配退货等都需要及时、准确库存数据支持。...我们把这个库存更新功能实现作为典型kafka应用案例来介绍,然后再在过程中对akka系列alpakka-kafka使用进行讲解和示范。 首先,后端业务功能与前端数据采集是松散耦合。...这个平台是一个以alpakka-kafka-stream为主要运算框架计算软件。我们可以通过这次示范深入了解alpakka-kafka-stream原理和应用。...为了实现高流量数据消费,在设计应用系统可以考虑构建多个kafka消费端,也就是多个reader。

48320

Flink可靠性基石-checkpoint机制详细解析

Checkpoint介绍 checkpoint机制是Flink可靠性基石,可以保证Flink集群在某个算子因为某些原因( 异常退出)出现故障,能够将整个应用状态恢复到故障之前某一状态,保...证应用状态一致性。...1) 假设算子C有A和B两个输入 2) 在第i个快照周期中,由于某些原因(处理延、网络延等)输入A发出 barrier 先到来,这时算子C暂时将输入A输入通道阻塞,仅收输入B数据。...4) 当由于某些原因出现故障,CheckpointCoordinator通知图上所有算子统一恢复到某个周期checkpoint状态,然后恢复数据处理。...无论配置最大状态大小如何,状态都不能大于akka大小(请参阅配置)。 聚合状态必须适合 JobManager 内存。 建议MemoryStateBackend 用于: 本地开发和调试。

1.4K30

异步编程 - 14 异步、分布式、基于消息驱动框架 Akka

---- Akka概述 Akka 是一个开源并发、分布式、基于消息驱动框架,用于构建高可伸缩性、可靠性和并发性强应用程序。...它提供了监督策略,允许在 Actor 发生故障采取自定义恢复操作。这有助于系统在故障继续运行,提高了系统可用性。...插件和扩展:Akka 提供了丰富插件和扩展机制,可以轻松集成其他库和框架, Akka HTTP、Akka Streams 等,以构建全栈应用程序。...具有群集分片事件和CQRS(Command Query Responsibility Segregation,读写责任分离)。...对调用堆栈误解 传统调用堆栈模型不适用于并发编程,因为异步任务无法通过调用堆栈传递异常或通知主线程。 异步任务执行失败,任务状态可能丢失,需要引入新错误信令机制以及从故障中恢复方法。

72040

Akka 指南 之「集群使用方法」

在不同服务之间,「Akka HTTP」或「Akka gRPC」可用于同步(但不阻塞)通信,而「Akka Streams Kafka」或其他「Alpakka」连接器可用于集成异步通信。...同样重要是要注意,当使用这些工具,通信双方不必使用 Akka 实现,编程语言也不重要。 传统分布式应用 我们承认微服务也带来了许多新挑战,它不是构建应用程序唯一方法。...传统分布式应用程序可能不那么复杂,在许多情况下也工作得很好。例如,对于一个小初创企业,只有一个团队,在那里构建一个应用程序,上市时间就是一切。Akka 集群可以有效地用于构建这种分布式应用程序。...联接到种子节点 注释:当在云系统上启动集群 Kubernetes、AWS、Google Cloud,、Azure、Mesos 或其他维护 DNS 或其他发现节点方式,你可能希望使用开源「Akka...如果在系统加载遇到可疑误报,你应该为集群 Actor 定义一个单独调度程序,「Cluster Dispatcher」中所述。 如何测试?

4.6K60

Akka-CQRS(9)- gRPC,实现前端设备与平台系统高效集成

由于gRPC支持http/2通讯协议,支持持久连接方式及双向数据。...所以对于POS设备这样前端选择gRPC作为网络连接方式来实现实时操作控制应该是正确选择,毕竟采用恒久连接和双向数据效率会高很多。...但NettyChannelBuilder还具备更多设置参数,ssl/tls设置。 3、还有:因为客户端是按照顺序来发送操作指令,每发一个指令,等待返回结果后才能再发下一个指令。..., "com.typesafe.akka" %% "akka-persistence" % akkaVersion, "com.lightbend.akka" %% "akka-stream-alpakka-cassandra..." % "1.0.1", "org.mongodb.scala" %% "mongo-scala-driver" % "2.6.0", "com.lightbend.akka" %% "akka-stream-alpakka-mongodb

1.1K20

Akka 指南 之「消息传递可靠性」

通常不令人担忧死信 消息传递可靠性 Akka 帮助你构建可靠应用程序,这些应用程序可以在一台机器中使用多个处理器核心(scaling up,纵向扩展)或分布在计算机网络中(scaling out,横向扩展...下文将进一步讨论这种权衡(trade-off)细节。 作为补充部分,我们对如何在内置基础上构建更强可靠性给出了一些建议。...事件 事件(和分片)是大型网站扩展到数十亿用户原因,其思想非常简单:当一个组件(思考 Actor)处理一个命令,它将生成一个表示命令效果事件列表。除了应用于组件状态之外,还存储这些事件。...这个方案好处在于,事件只会被附加到存储中,不会发生任何变化;这样可以完美地复制和扩展这个事件(event stream)使用者(即,其他组件可能会使用事件作为在不同区域复制组件状态或对更改作出反应手段...如果组件状态由于机器故障或被推出缓存而丢失,则可以通过重放事件(通常使用快照来加快进程)来重建。Akka Persistence 支持「事件」。

1.7K10

Akka 指南 之「什么是 Actor?」

关于「Actor Systems」前一节解释了 Actor 如何形成层次结构,以及在构建应用程序时是最小单元。本节将孤立地研究一个这样 Actor,解释在实现它遇到概念。...Akka 确保这个实现细节不会影响处理 Actor 状态。 因为内部状态对 Actor 操作至关重要,所以状态不一致是致命。...因此,当 Actor 失败并由其监督者重新启动,将从头开始创建状态,就像第一次创建 Actor 一样。这是为了使系统能够自我修复。...或者,可以通过持久化接收到消息并在重新启动后重播(请参见「Persistence」),将 Actor 状态自动恢复到重新启动前状态。 行为 每次处理消息,它都与 Actor 的当前行为相匹配。...子列表在 Actor 上下文中维护,并且 Actor 可以访问它。

87020

Akka-CQRS(6)- read-side

这些事件对象一般是按照二进制binary方式blob存入数据库。...=> updateState(event) } } 这些事件描述存写即写这个ActionGo不会影响到实际业务数据状态。...因为业务逻辑中一个动作发生时间顺序往往会对周围业务数据产生不同影响,所以现在只能考虑事件event-sourcing这种模式了。...eventsByPersistenceId(...)启动了一个数据,然后akka-persistence-query会按refresh-interval时间间隔重复运算这个stream。...我们可以run这个stream把数据读入一个集合里,然后可以在任何一个线程里用这个集合演算业务逻辑(如我们前面提到写端状态转变维护过程),可以用router/routee模式来实现一种在集群节点中负载均衡式分配

60330

状态处理:Flink状态后端

在有状态处理中,当开发人员启用了 Flink 中检查点功能状态会持久化存储以防止数据丢失并确保发生故障能够完全恢复。为应用程序选择何种状态后端,取决于状态持久化方式和位置。...MemoryStateBackend MemoryStateBackend 是将状态维护在 Java 堆上一个内部状态后端。键值状态和窗口算子使用哈希表来存储数据值和定时器。...可以通过 MemoryStateBackend 构造函数增加最大大小。 状态大小受到 Akka 帧大小限制,所以无论在配置中怎么配置状态大小,都不能大于 Akka 帧大小。...我们需要在此强调,对于使用合并操作状态处理应用程序,例如 ListState,随着时间推移可能会累积超过 2^31 字节大小,这将会导致后续任何检索失败。...RocksDBStateBackend 是目前唯一支持有状态处理应用程序增量检查点状态后端。 在使用 RocksDB 状态大小只受限于磁盘可用空间大小。

1.8K21

解读2018:13家开源框架谁能统一计算?

Gearpump 是以 Akka 为核心分布式轻量级计算,Akka stream 和 Akka http 模块享誉技术圈。...在各种会上,经常会被问到 Spark 和 Flink 区别,如何取舍? 下面从数据模型、运行时架构、调度、延和吞吐、反压、状态存储、SQL 扩展性、生态、适用场景等方面来逐一分析。...当前处在试验阶段流式引擎,提供了 1 毫秒延,但不能保证 exactly-once 语义,支持 at-least-once 语义。同时,微批作业打了快照,作业改为流式模式重启作业是不兼容。...而且 Flink 也支持增量快照,面对内存超大状态数据,增量无疑能降低网络和磁盘开销。 Spark 快照 API 是 RDD 基础能力,定时开启快照后,会对同一刻整个内存数据持久化。...只要实时产生数据、实时分析数据能产生价值,那么就可以用实时计算技术,单纯地写一写脚本和开发应用程序,已经无法满足这些复杂场景需求。 数据计算越实时越有价值,Hadoop 造就批计算价值已被榨干。

1.6K40

Akka 指南 之「持久化」

简介 Akka 持久性使有状态 Actor 能够持久化其状态,以便在 Actor 重新启动(例如,在 JVM 崩溃之后)、由监督者或手动停止启动或迁移到集群中可以恢复状态。...事件(Event sourcing):基于上面描述构建块,Akka 持久化为事件应用程序开发提供了抽象(详见「事件」部分)。...事件 请参阅「EventSourcing」介绍,下面是 Akka 通过持久性 Actor 实现。 持久性 Actor 接收(非持久性)命令,如果该命令可以应用于当前状态,则首先对其进行验证。...换句话说,与命令相反,事件在被重播到持久性 Actor 不会失败。事件 Actor 还可以处理不更改应用程序状态命令,例如查询命令。...在这种情况下,你可以配置如何在恢复过滤来自多个编写器(writers)重播(replayed)消息。

3.3K30

Akka 指南 之「Akka 应用程序示例简介」

Akka 应用程序示例简介 写散文,最难部分往往是写前几句话。在开始构建 Akka 系统,也有类似的“空白画布(blank canvas)”感觉。你可能会想:哪个应该是第一个 Actor?...您可以想象这样传感器也可以收集相对湿度或其他有趣数据,应用程序应该支持读取和更改设备配置,甚至可能在传感器状态超出特定范围向房主发出警报。...在实际系统中,应用程序将通过移动应用程序或浏览器暴露给客户。本指南仅着重于存储通过网络协议( HTTP)调用温度核心逻辑,它还包括编写测试来帮助你熟悉和精通测试 Actors。...教程应用程序由两个主要组件组成: 设备数据收集:Device data collection,维护远程设备本地表示,一个家庭多个传感器设备被组织成一个设备组。...因为我们对每个传感器设备状态感兴趣,所以我们将把设备建模为 Actors。正在运行应用程序将根据需要创建尽可能多设备 Actors 和设备组实例。 ? 在本教程中你将学到什么?

86120

Flink可靠性基石-checkpoint机制详细解析

Checkpoint介绍 checkpoint机制是Flink可靠性基石,可以保证Flink集群在某个算子因为某些原因( 异常退出)出现故障,能够将整个应用状态恢复到故障之前某一状态,保...证应用状态一致性。...具体如下图所示: 1) 假设算子C有A和B两个输入 2) 在第i个快照周期中,由于某些原因(处理延、网络延等)输入A发出 barrier 先到来,这时算子C暂时将输入A输入通道阻塞...4) 当由于某些原因出现故障,CheckpointCoordinator通知图上所有算子统一恢复到某个周期checkpoint状态,然后恢复数据处理。...无论配置最大状态大小如何,状态都不能大于akka大小(请参阅配置)。 聚合状态必须适合 JobManager 内存。 建议MemoryStateBackend 用于: 本地开发和调试。

3.7K00

使用Lagom和Java构建反应式微服务系统

Source是一种允许异步流式传输和处理消息AkkaAPI。 ? 此服务调用具有严格请求类型和响应类型。...使用流式传输消息需要使用Akka。 tick服务调用将返回以指定间隔发送消息Akka对这样有一个有用构造函数: ? 前两个参数是发送消息之前延迟以及它们应该发送间隔。...将消息发送到Broker,Apache Kafka,可以进一步解耦通信。 LagomMessage Broker API提供至少一次语义并使用Kafka。...当实体启动,它会重放存储事件以恢复当前状态。这可以是完整更改历史记录或从快照启动,这将减少恢复时间。...每个命令必须通过实现PersistentEntity.ReplyType接口来定义要用作命令消息类型。 ? 当一个事件成功保存,通过将事件应用到当前状态来更新当前状态

1.9K50

PowerJob 原理剖析之 Akka Toolkit

上面这段文字摘抄自 Akka 官网(akka.io),翻译成中文也就是:“Akka 是一个为 Java 和 Scala 构建高并发、分布式和弹性消息驱动应用程序工具包”。...同时,作为一个“工具包”,Akka 还额外提供了许多功能,由于篇幅有限,这里就简单介绍几个包,有兴趣可以前往官网(见参考文档)详细了解~ akka-streams:处理组件,提供直观、安全方式来进行异步...、非阻塞背压处理。...~ 3.1 开发 Actor 首先,不得不提一点是,Akka 从 2.6 版本开始,维护了 2 套 API(算上 Scala 和 Java 版本就 4 套了...看着IDE智能提示就头大...)...如果使用现有协议 HTTP,发送也许 3 行代码能搞定,但接收一定远不止三行。

1.3K20
领券