免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

使用 TPL Dataflow 处理生产者 / 消费者问题

  • 2014-01-28
  • 本文字数:560 字

    阅读完需:约 2 分钟

在最简单的情况下,生产者 / 消费者场景很容易处理。生产者向一个线程安全的队列中推送消息,消费者从该队列中取消息。每一端可以有一个专用线程,这就行了。至少在并发症状出现之前是行得通的。

并发症状是多方面的。你可能需要向多个消费者分发或广播消息,而不是只有一个消费者。因为性能原因,在执行某些操作之前,可能需要批量提交一些请求。也可能有多个步骤,而如果每个步骤用一个专用线程的话,负载会很繁重。或者是随着消息在线程间跳转,上下文切换会影响延迟。

TPL Dataflow 就是为解决这些问题而设计的。不同于使用线程,构成数据流的轻量级块(Block)按需使用和分享线程池中的线程。但是和任何新框架一样,我们有很多东西要学习,而且很多比较高级的选项可能会掩盖基础知识。

为简化入门,Taskmatics 的 Dave Marini 撰写了一篇文章——“使用流:利用 TPL Dataflow 结构简化生产者 / 消费者问题的处理( Going with the Flow: Simplifying Producer/Consumer Processing with TPL Dataflow Structures )”。Dave 使用一个订单交付工作流(如上图所示),介绍了大多数场景需要的基本块:

  • BufferBlock
  • BroadcastBlock
  • BatchBlock
  • TransformManyBlock
  • ActionBlock

这篇文章还介绍了一些容易被忽略的陷阱,比如刷新批处理和完成工作流等。

查看英文原文: Producer/Consumer Processing with TPL Dataflow

2014-01-28 09:031649
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 133.9 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

精华推荐 |【深度挖掘RocketMQ底层源码】「生产故障分析系列」深度挖掘RocketMQ底层那些导致消息丢失的汇总盘点透析(TIMEOUT_CLEAN_QUEUE)broker busy

洛神灬殇

RocketMQ 消息队列 3月日更 原理分析 底层源码

细说react源码中的合成事件

flyzz177

React

前端工程师leetcode算法面试必备-二分搜索算法(下)

js2030code

JavaScript LeetCode

JRC Flink流作业调优指南

京东科技开发者

Apache 京东云 京东技术 企业号 3 月 PK 榜

提示工程在AI绘画领域中的应用

FinFish

AI绘画 提示工程

一天吃透分布式事务八股文

程序员大彬

Java 分布式事务

如何用好免费的chatGPT

劼哥stone

人工智能 openai ChatGPT

深入react源码看setState究竟做了什么?

flyzz177

React

Matlab常用图像处理命令108例(五)

timerring

图像处理

文盘Rust -- 安全连接 TiDB/Mysql

京东科技开发者

rust TiDB 京东云 京东技术 企业号 3 月 PK 榜

微信小程序管理软件助力企业数字化转型,实现智能化升级

FinFish

私有小程序技术 小程序管理平台 小程序技术 小程序管理

运维训练营第17周作业

好吃不贵

A-Ops 数据库场景在线应用性能诊断案例

openEuler

数据库 Linux 操作系统 openEuler 性能测评

React Context源码是怎么实现的呢

flyzz177

React

PyTorch深度学习实战 | 搭建卷积神经网络进行图像分类与图像风格迁移

TiAmo

PyTorch 图像处理

前端工程师leetcode算法面试必备-二分搜索算法(上)

js2030code

JavaScript LeetCode

2023算云融合产业大会-行业先驱!算力云服务领航者计划评选结果即将揭晓

中国IDC圈

算力 云算力 云计算,

马克·安德森:纯粹产品护城河在硅谷少见,SaaS公司护城河是“分销”

B Impact

震惊,一行MD5居然让小伙伴都回不了家!!!

京东科技开发者

md5 京东云 京东技术 企业号 3 月 PK 榜

@Transaction注解的失效场景

京东科技开发者

京东云 京东技术 企业号 3 月 PK 榜

Amazon Detective 支持 Amazon EKS 上的 Kubernetes 工作负载以进行安全调查

亚马逊云科技 (Amazon Web Services)

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

什么大模型?我是时尚产业“大模王”!

脑极体

AI

毕业设计

张贺

mybatis plus怎么使用注解的方式执行原生sql

俊俊哥

mybatis Mybatis-Plus 原生sql

React-Hooks源码深度解读

goClient1992

React

Nautilus Chain 现已推出测试网“Triton ”,有哪些潜在的机会?

股市老人

React源码分析(一)Fiber

goClient1992

React

看透react源码之感受react的进化

goClient1992

React

深入探究 Go log 标准库

江湖十年

Go 后端 日志 log

使用TPL Dataflow处理生产者/消费者问题_.NET_Jonathan Allen_InfoQ精选文章