Kafka
文章平均质量分 76
TIGER_XC
一个Scala童鞋
展开
-
alpakka-kafka(10)-用kafka实现分布式近实时交易
随着网上购物消费模式热度的不断提高,网上销售平台上各种促销手段也层出不穷,其中“秒购”已经是各种网站普遍流行的促销方式了。“秒购”对数据的实效性和精确性要求非常高,所以通过分布式运算实现高并发数据处理应该是正确的选择。不过,高并发也意味着高频率的数据操作冲突,而高频使用“锁”又会严重影响效率及容易造成不可控异常,所以又被迫选择单线程运行模式。单线程、分布式表面相悖的,不过如上篇博文所述:可以利用akka-cluster-sharding分片可指定调用的特性将一种商品的所有操作放到同一个shard上运算(因为原创 2022-02-16 17:26:35 · 1027 阅读 · 0 评论 -
alpakka-kafka(9)-kafka在分布式运算中的应用
kafka具备的分布式、高吞吐、高可用特性,以及所提供的各种消息消费模式可以保证在一个多节点集群环境里消息被消费的安全性:即防止每条消息遗漏处理或重复消费。特别是exactly-once消费策略:可以保证每条消息肯定只被消费一次。换句话说就是在分布式运算环境里kafka的消息消费是能保证唯一性的。 但是,保证了消息读取唯一性,消息的处理过程如果也放到分布式运算环境里仍然会面对数据完整性(data integrity)问题。例如:消息处理过程是更新银行账户中金额、消息内容是更新某个账户的指令,那么,对多条针对原创 2022-01-28 12:40:42 · 1748 阅读 · 0 评论 -
alpakka-kafka(8)-kafka数据消费模式实现
上篇介绍了kafka at-least-once消费模式。kafka消费模式以commit-offset的时间节点代表不同的消费模式,分别是:at-least-once, at-most-once, exactly-once。上篇介绍的at-least-once消费模式是通过kafka自身的auto-commit实现的。事后想了想,这个应该算是at-most-once模式,因为消费过程不会影响auto-commit,kafka在每个设定的间隔都会自动进行offset-commit。如果这个间隔够短,比整..原创 2021-08-15 14:21:58 · 308 阅读 · 0 评论 -
alpakka-kafka(6)-kafka应用案例,用户接口
了解了kafka原理之后,对kafka的的应用场景有了一些想法。在下面的一系列讨论中把我最近的一个项目中对kafka的应用介绍一下。 先介绍一下使用kafka的起因:任何销售系统,销售开单部分都应该算是核心部分了。这是一个销售数据录入 ...原创 2021-08-10 17:37:47 · 261 阅读 · 0 评论 -
alpakka-kafka(5)-kafka集群配置与分布式应用部署
在进入具体的kafka应用应用之前我们先把kafka集群环境配置介绍一下。多节点kafka-cluster的安装、配置非常简单,所以应该不用太多篇幅就可以完成一个完整可用的kafka-clusterhuan原创 2021-06-15 11:53:56 · 232 阅读 · 2 评论 -
alpakka-kafka(4)-kafka应用案例-系统分析
上一篇我们基本了解了示范案例中一个独立交易类型的库存管理模块应该是怎样的一块业务。这篇我们讨论一些如何从技术上来实现这样的业务模块。讲确切点应该说如何借助kafka的特性来实现功能开发。 底层方面:多节点服务器集群、kafka分布部署。 对上一层主要关注partition相关的问题:partition的分布与consumer如何对应。根据kafka官方文档:一个topic分出多个partition,一般按照集群节点broker倍数设置。那么一个topic的partition差不多以同等数量分布于每个..原创 2021-03-26 09:34:28 · 153 阅读 · 0 评论 -
alpakka-kafka(3)-kafka应用案例-需求分析
在大型复杂的应用中,业务模块之间总是相互关联,相互纠缠。无论业务管理或软件开发方面都会造成困惑:从业务管理方面难以厘清确切的管理范围和职责:就是说不知一项业务具体谁来管。在软件开发方面则无法确定开发人员的具体分工和维护责任,即确定一项业务功能具体靠谁来修改、优化。拿一个普通的网上购物过程来说,除商品拣选过程外的优惠价选定、库存扣减、支付都会涉及商品定价管理、库存管理、财务管理等独立的业务模块。如果纯从软件开发角度来描述:负责开发购物流程的开发人员还需要兼顾优惠价计算、库存扣减、支付等业务操作。因为商...原创 2021-03-21 22:22:12 · 190 阅读 · 1 评论 -
alpakka-kafka(2)-consumer
alpakka-kafka-consumer简单的功能描述:向kafka订阅某些topic然后把读到的消息传给akka-streams做业务处理。在kafka-consumer的实现细节上,为了达到高可用、高吞吐的目的,topic又可用划分出多个分区partition。分区是分布在kafka集群节点broker上的。由于一个topic有多个partition,对应topic就会有多个consumer,就是一个consumer组,共同统一的groupid。一个partition只能对应一个consume...原创 2021-02-22 20:30:28 · 202 阅读 · 0 评论 -
alpakka-kafka(1)-producer
alpakka项目是一个基于akka-streams流处理编程工具的scala/java开源项目,通过提供connector连接各种数据源并在akka-streams里进行数据处理。alpakka-kafka就是alpakka项目里的kafka-connector。对于我们来说:可以用alpakka-kafka来对接kafka,使用kafka提供的功能。或者从另外一个角度讲:alpakka-kafka就是一个用akka-streams实现kafka功能的scala开发工具。 ...原创 2021-02-20 09:11:30 · 251 阅读 · 0 评论