摘要: Flink 运行架构简要分析 一、程序结构 Flink 程序的基本构建块是流和转换(Flink 的 DataSet API 中使用的 DataSet 也是内部流 )。从概念上讲,流是(可能永无止境的)数据记录流,而转换是将一个或多个流作为一个或多个流的操作。输入,并产生一个或多个输出流。 Flink 应用程序结构就是如上图所示: 阅读全文
posted @ 2021-11-30 18:56 晨煦风清 阅读(250) 评论(0) 推荐(0) 编辑
摘要: Kafka 架构分析 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用与大数据实时处理领域。 1. 发布/订阅模式 一对多,生产者将消息发布到 topic 中,有多个消费者订阅该主题,发布到 topic 的消息会被所有订阅者消费,被消费的数据不会立即从 topic 清除。 2 阅读全文
posted @ 2021-11-29 09:38 晨煦风清 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 工作流引擎概要分析 一、什么是工作流 工作流,是把业务之间的各个步骤以及规则进行抽象和概括性的描述。使用特定的语言为业务流程建模,让其运行在计算机上,并让计算机进行计算和推动。工作流是复杂版本的状态机。 上图为工作流退化为基础状态机的例子,小明的状态非常简单,站立->走路->跑步->走路->站立,无限循环,如果让我们实 阅读全文
posted @ 2021-11-25 15:34 晨煦风清 阅读(858) 评论(0) 推荐(1) 编辑
摘要: 分布式事务之Seata开源方案 前面的文章中介绍了分布式事务的概念以及一些解决方案。Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。 Seata介绍 下面以一个用户下单购买商品的系统为例,介绍开源框 阅读全文
posted @ 2021-11-24 09:46 晨煦风清 阅读(384) 评论(0) 推荐(0) 编辑
摘要: RocketMQ消息幂等解决方案探讨 消息中间件是分布式系统常用的组件,无论是异步化、解耦、削峰等都有广泛的应用价值。我们通常会认为,消息中间件是一个可靠的组件——这里所谓的可靠是指,只要我把消息成功投递到了消息中间件,消息就不会丢失,即消息肯定会至少保证消息能被消费者成功消费一次,这是消息中间件最基本的特性之一,也就是我们常说的“AT 阅读全文
posted @ 2021-11-23 17:05 晨煦风清 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 基于RocketMQ分布式事务实现 如果我们的系统不追求强一致性,那么最常用的还是最终一致性方案。今天,我们就基于 RocketMQ来实现消息最终一致性方案的分布式事务。 一、事务消息 在这里,我们需要搞明白两个概念。 Half Message,半消息 暂时不能被Consumer消费的消息。Producer已经把消息发送到 Broke 阅读全文
posted @ 2021-11-23 14:20 晨煦风清 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 深入剖析Redis数据结构 一、简介 Redis中所有的的数据结构都是通过一个唯一的字符串key来获取相应的value数据。Redis有5种基础数据结构,分别是: string(字符串) list(列表) hash(字典) set(集合) zset(有序集合) 其中list、set、hash、zset这四种数据结构是容器型数据 阅读全文
posted @ 2021-11-23 09:27 晨煦风清 阅读(1714) 评论(0) 推荐(1) 编辑
摘要: 分布式事务之可靠消息最终一致性 消息发送一致性:是指产生消息的业务动作与消息发送的一致。也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去(一般是发送到kafka、rocketmq等消息中间件中),否则就丢消息。 可靠消息最终一致性 发送消息不可靠性 既然提到了可靠消息的最终一致性,那么说明现有的消息发送 阅读全文
posted @ 2021-11-22 20:35 晨煦风清 阅读(84) 评论(0) 推荐(0) 编辑
摘要: Feign原理深入剖析 一、什么是Feign? Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上 阅读全文
posted @ 2021-11-20 13:03 晨煦风清 阅读(4831) 评论(0) 推荐(0) 编辑
摘要: 分布式事务之最大努力通知 最大努力通知型( Best-effort delivery)是最简单的一种柔性事务,适用于一些最终一致性时间敏感度低的业务,且被动方处理结果不影响主动方的处理结果。典型的使用场景:如银行通知、商户通知等。 最大努力通知 最大努力通知型( Best-effort delivery)是最简单的一种柔性事 阅读全文
posted @ 2021-11-19 10:03 晨煦风清 阅读(146) 评论(0) 推荐(0) 编辑