超全的并发编程模型总结

作者: Codlife | 来源:发表于2016-08-06 16:19 被阅读0次

    据我了解,截至目前(2016):并发编程模型主要有一下三种

    一:并行工作者模型

    并行工作模型主要是有多个工作者,每个工作者单独完成一个事件。如下图

    并行编程模型

    委派器将任务分配给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 中使用非常多,个人感觉函数式并发编程很有前景。

    相关文章

      网友评论

        本文标题:超全的并发编程模型总结

        本文链接:https://www.haomeiwen.com/subject/drbksttx.html