写点什么

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

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

关注

评论

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

2024年南京等保测评机构名单看这里!

行云管家

网络安全 南京 等级保护 等保测评

把Mybatis Generator生成的代码加上想要的注释

京东科技开发者

2023 年值得一读的技术文章 | NebulaGraph 技术社区

NebulaGraph

图数据库

首个!百度飞桨会客厅落地广州,打通AI应用落地的“最后一公里”

飞桨PaddlePaddle

人工智能 AI AI技术 百度飞桨 智能化

数据库防水坝是什么?有什么作用?有哪些优势?

行云管家

数据库 堡垒机 数据库安全

《高效能笔记法》读后感

凌晞

结构化思维 冰山模型

论学习方式和知识结构

凌晞

学习方法

以DataOps一体化之道,助力研发治理提质增效

鲸品堂

Data 运营商 一体化

FastAPI 并发请求:打造更快的Web应用

Liam

程序员 性能优化 并发编程 后端 FastApi

全国高校计算机类课程能力提升高级研修班(2024年第一期)来了!

云计算 软件开发 华为云

每日一题:LeetCode-153. 寻找旋转排序数组中的最小值

Geek_4z9ami

面试 算法 LeetCode 二分查找 Go 语言

基于 Flink 的实时数仓在曹操出行运营中的应用

Apache Flink

关于MySQL日期函数你不知道的用法

不在线第一只蜗牛

MySQL 数据库 前端 日期工具

制造业各种管理系统介绍及集成

万界星空科技

MES系统 ERP mes 万界星空科技 万界星空科技mes

万界星空科技MES系统中的生产防错功能

万界星空科技

MES系统 mes 万界星空科技 生产管理 数字化车间

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