kafka学习1 - 线程、进程消息通信方式、JMS模型、Kafka原理图

1、线程和线程之间的数据交互

两个不同的线程之间是可以通过堆内存的方式进行数据交互的;

T1线程的数据发送得到堆内存,T2线程就可以共享堆内存的数据。

存在的问题:

T1线程发送数据的速率是50/s,T2线程消费的速率是30/s,消费的速率小于生产的速率,就会有大量的数据积压在堆内存或者磁盘文件上,时间长了后,积压的数据就会越来越多,导致影响整个流程的性能。

2、进程和进程之间的数据交互

进程与进程之间的通信可以通过消息中间件的方式

3、Java中实现消息传输的方式[JMS]

Java Message Service

原理图:

1、点对点模式【P2P模式】

这种模式是一个消息只能发送给一个消费者消费,其他消费者是接收不到的,消费者接收到消息后会反馈给Provider生产者说明消息已被接受到,消息被消费完后就会丢失。

2、发布-订阅模式【PS模式】

发布-订阅模式是消费者订阅某个主题的消息,主题的消息可以被多个消费者订阅消费。

ActiveMQ、RabbitMQ、RocketMQ是遵循JMS规范的;Kafka是部分遵循JMS的规范

在大数据场景中我们主要采用kafka作为消息中间件,而在javaEE开发中我们主要采用ActiveMQ、RabbitMQ、RocketMQ作为消息中间件。如果JavaEE和大数据在项目中进行融合,那么kafka是不错的选择。

4、kafka的原理图

在kafka中,通过偏移量的方式标记每个消息,来确保消息的顺序性。

相关推荐
Das1几秒前
【机器学习】10_特征选择与稀疏学习
人工智能·学习·机器学习
暴风游侠2 分钟前
IDC 学习笔记
笔记·学习
航Hang*9 分钟前
计算机等级考试(二级WPS)---第1章:综合应用基础---第1节:WPS公共功能使用
笔记·学习·wps·计算机二级·计算机等级考试
123_不打狼16 分钟前
自然语言处理(NLP)学习路线
人工智能·学习·自然语言处理
君鼎26 分钟前
计算机网络第七章:网络安全学习总结
学习·计算机网络
●VON33 分钟前
Flutter for OpenHarmony:基于原子清空与用户意图防护的 TodoList 批量删除子系统实现
学习·flutter·架构·跨平台·von
王莽v235 分钟前
FlashAttention 学习笔记:从公式到分布式
人工智能·分布式
臭东西的学习笔记36 分钟前
论文学习——人类抗体从通用蛋白质语言模型的高效进化
人工智能·学习·语言模型
学工科的皮皮志^_^40 分钟前
以太网PHY芯片学习RTF8211
经验分享·嵌入式硬件·学习·以太网·phy
求真求知的糖葫芦42 分钟前
微波工程2.3节学习笔记(自用)
笔记·学习·射频工程