并发编程模型总结

一:并行工作者模型

并行工作模型主要是有多个工作者,每个工作者单独完成一个事件。
如下图
在这里插入图片描述

委派器将任务分配给Worker,Worker单独完成任务,java 7 中 java.util.concurrent 包中好多工具都是基于此模型实现的。明显存在的存在的问题是工作器之间需要共享资源。
如下图:
在这里插入图片描述

二:流水线模型

流水线模型类似于工厂里的流水线作业,每个worker只负责一个部件。在实际的计算机系统中往往有多条流水线同时进行。
在这里插入图片描述

优点:
1:Worker之间不需要状态共享
2:有一定的顺序,有利于模型的回复
3:符合计算机硬件的特点

目前流行的代表产品有:
Vert.x
AKKA
Node.js
Actor 和Channel

Actor:每个事物都是一个actor,Actor之间可以异步的发送和接受信息。
在这里插入图片描述

Channel 模型:每个Worker 只需要知道消息需要发到哪个Channel,每个Worker通过Channel 订阅或者取消订阅消息。

在这里插入图片描述

三:函数式并发模型

函数式并发模型利用了函数调用之间的独立性实现并发。

总结:那种编程模型好?

具体取决于业务场景,如果作业之间本身是独立的,不需要太多的资源共享,那么可以方便的使用并行编程模型,否则使用流水线编程模型应该会收到更好的效果。函数式并发编程在大数据平台Spark 中使用非常多,个人感觉函数式并发编程很有前景。

猜你喜欢

转载自blog.csdn.net/huojiao2006/article/details/82846345