在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

使用 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:032224
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

霸榜Git!2021年阿里巴巴Java面试权威指南(全彩版)

Java 程序员 面试 架构师

寻找被遗忘的勇气(十八)

Changing Lin

3月日更

炸裂,IBM系统架构师居然把自己15年Java经验整合成一本小说?

Java架构师迁哥

filecoin矿机系统开发|filecoin矿机软件APP开发

系统开发

2021年新兴的十大区块链技术趋势

CECBC

数字技术

直击面试!阿里技术官手码12W字面试小册在Github上爆火

Java架构之路

Java 程序员 架构 面试 编程语言

发布两小时,霸榜GitHub!Spring Boot实战文档

Java 编程 程序员 架构师

打卡学习VBA和PYTHON week01

小怪兽

IT蜗壳教学

低代码/无代码,作为IT开发界的“新英雄”它究竟有何神技?

优秀

低代码 无代码开发

全凭阿里大牛总结的Java面试笔记,首战成功拿蚂蚁offer

Java架构之路

Java 程序员 架构 面试 编程语言

以数字人民币为契机 推动人民币国际化进程

CECBC

金融

图解垃圾算法,No,捡垃圾算法

叫练

GC算法 引用计数法 标记清除法

filecoin云算力软件开发|filecoin云算力APP系统开发

系统开发

uni-app跨端开发H5、小程序、IOS、Android(二):开发工具HBuilderX使用技巧

程序员潘Sir

微信小程序 uni-app App 3月日更 Hbuilderx

收藏!这些IDE使用技巧,你都知道吗

xcbeyond

IDEA 技巧 3月日更

JDBC—往MySQL中写入Blob数据时,出现错误:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5724349 > 1048576)

打工人!

Java MySQL JDBC Blob

霸榜Git!2021年阿里巴巴Java面试权威指南(泰山版)

Java架构之路

Java 程序员 架构 面试 编程语言

声网Agora发布创业支持计划:聚合50+合作伙伴、11项资源扶持创业者

ToB行业头条

声网 Agora

趋势预测:2021年五大流行的编程语言

薇薇

Java c php JavaScript Python PEP

科技进化的终点,与荣耀全场景的起点

脑极体

filecoin挖矿软件开发|filecoin挖矿APP系统开发

系统开发

聊聊 Python 自动化脚本部署服务器全流程(详细)

星安果

Python 自动化 服务器 部署

StarRocks在中移物联网PGW实时会话业务领域的应用

StarRocks

大数据 数据分析 物联网 IoT OLAP

一周信创舆情观察(3.8~3.14)

统小信uos

如何评估需求优先级?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

全球案例 | Infobip :这家估值十亿美元的公司像初创企业一样规模化发展,像大型企业一样标准化

Atlassian

DevOps Agile Atlassian Jira ITSM

朱嘉明:比特币开创人类新型财富实验

CECBC

数字货币

"无密码时代"已经来临!

龙归科技

身份认证

php 再上热搜!swoole 创始人投出反对票,质疑 php 协程最新提案

薇薇

php 编程 新特性 php扩展

epoll源码分析以及在Redis中的实现

Linux服务器开发

redis 后端 epoll web服务器 Linux服务器开发

DCache 分布式存储系统|Set, ZSet 缓存模块的创建与使用

TARS基金会

nosql 缓存 分布式 MySQL 高可用 TARS

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