首页 / 负载均衡 / TPL 之七 TDF中的负载均衡
TPL 之七 TDF中的负载均衡
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了TPL 之七 TDF中的负载均衡,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1784字,纯文字阅读大概需要3分钟。
内容图文
![TPL 之七 TDF中的负载均衡](/upload/InfoBanner/zyjiaocheng/1037/5c21d82a70c745bb8be901056cdc174a.jpg)
(一)TDF中的负载均衡 【代码地址-Blance1】
我们可以使用Block很方便的构成一个生产者消费者的模式来处理数据。当生产者产生数据的速度快于消费者的时候,消费者Block的Buffer中的数据会越来越多,消耗大量的内存,数据处理也会延时。这时,我们可以用一个生产者Block连接多个消费者Block来解决这个问题。由于多个消费者Block一定是并行处理,所以对共享资源的处理一定要做同步处理。
使用BoundedCapacity属性来实现
当连接多个ActionBlock的时候,可以通过设置ActionBlock的BoundedCapacity属性。当第一个满了,就会放到第二个,第二个满了就会放到第三个。
public static BufferBlock<string> bb = new BufferBlock<string>();private const string DateFormat = "yyyy-MM-dd HH:mm:ss.fff";public Form1(){InitializeComponent();bb.LinkTo(ab1);bb.LinkTo(ab2);bb.LinkTo(ab3);for (int i = 1; i <= 20; i++){Thread.Sleep(10);string str = $"【BufferBlock Post:{DateTime.Now.ToString(DateFormat)} 值:{i} bb长度:{bb.Count}】";bb.Post(str);}}public static ActionBlock<string> ab1 = new ActionBlock<string>((i) =>{Thread.Sleep(1000);Console.WriteLine($"【ab1】{DateTime.Now.ToString(DateFormat)} {i} ab1长度:{ab1.InputCount} bb长度:{bb.Count}");}, new ExecutionDataflowBlockOptions() { BoundedCapacity = 2 });public static ActionBlock<string> ab2 = new ActionBlock<string>((i) =>{Thread.Sleep(2000);Console.WriteLine($"【ab2】{DateTime.Now.ToString(DateFormat)} {i} ab2长度:{ab2.InputCount} bb长度:{bb.Count}");}, new ExecutionDataflowBlockOptions() { BoundedCapacity = 2 });public static ActionBlock<string> ab3 = new ActionBlock<string>((i) =>{Thread.Sleep(3000);Console.WriteLine($"【ab3】{DateTime.Now.ToString(DateFormat)} {i} ab3长度:{ab3.InputCount} bb长度:{bb.Count}");}, new ExecutionDataflowBlockOptions() { BoundedCapacity = 2 });
分析以上数据可知:
![]()
内容总结
以上是互联网集市为您收集整理的TPL 之七 TDF中的负载均衡全部内容,希望文章能够帮你解决TPL 之七 TDF中的负载均衡所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。