当前位置: 首页 > news >正文

怎么添加网站后台桂林网站制作人才招聘

怎么添加网站后台,桂林网站制作人才招聘,天津高端网站建设,上海装修网站大全长话短说2C互联网业务增长#xff0c;单机多核的共享内存模式带来的排障问题、编程困难#xff1b;随着多核时代和分布式系统的到来#xff0c;共享模型已经不太适合并发编程#xff0c;因此actor-based模型又重新受到了人们的重视。---------------------------调试过多线… 长话短说2C互联网业务增长单机多核的共享内存模式带来的排障问题、编程困难随着多核时代和分布式系统的到来共享模型已经不太适合并发编程因此actor-based模型又重新受到了人们的重视。---------------------------调试过多线程的都懂-----------------------------传统编程模型通常使用回调和同步对象如锁来协调任务和访问共享数据从宏观看若任务的执行需要某些共享资源不可避免该任务需要关注并抢占资源。actor-based模型是一种流水线模型actor-based模型share nothing。所有的线程(或进程)通过消息传递的方式进行合作这些线程(或进程)称为参与者actor预先定义任务流水线后不关注数据什么时候流到这个任务专注完成当前任务本身。  .Net TPL Dataflow组件帮助我们快速实现actor-based模型当有多个必须异步通信的操作或要等待数据可用再进一步处理时Dataflow组件非常有用。TPL Dataflow是微软前几年给出的数据处理库 内置常见的处理块可将这些块组装成一个处理管道块对应处理管道中的阶段任务可类比AspNetCore 中Middleware和Pipeline。TPL Dataflow库为消息传递、CPU密集型/I-O密集型应用程序提供了编程基础, 可更明确控制数据的暂存方式、移动路线达到高吞吐量和低延迟。需要注意的是:TPL Dataflow非分布式数据流消息在进程内传递 。TPL Dataflow核心概念TPL Dataflow 内置的Block覆盖了常见的应用场景如果内置块不能满足你的要求你也可以自定“块”。Block可以划分为下面3类Buffering Only   [Buffer不是缓存Cache的概念而是一个暂存区的概念]ExecutionGrouping 使用以上块混搭处理管道, 大多数的块都会执行一个操作有些时候需要将消息分发到不同Block这时可使用特殊类型的缓冲块给管道“”分叉”。Execution Block可执行的块有两个核心组件输入、输出消息的暂存区一般称为Input,Output队列在消息上执行动作的委托消息在输入和输出时能够被暂存当输入的消息速度比Func委托的执行速度比快后续消息将在到达时暂存当下一个块的输入暂存区中无可用空间将在当前块输出时暂存。每个块我们可以配置暂存区的总容量默认无上限执行操作委托的并发度默认情况下块按照顺序处理消息一次一个。将块链接在一起形成处理管道生产者将消息推向管道。TPL Dataflow有一个基于pull的机制使用Receive和TryReceive方法但我们将在管道中使用块连接和推送机制。TransformBlockExecution category-- 由输入输出暂存区和一个FuncTInput, TOutput委托组成输入的每个消息都会输为出另一个可以使用这个Block去执行消息的转换或者转发输出的消息到另外一个BlockTransformManyBlock (Execution category) -- 由输入输出暂存区和一个FuncTInput, IEnumerableTOutput委托组成 它为输入的每个消息输出一个IEnumerableTOutputBroadcastBlock Buffering category-- 只容纳最多1个消息的暂存区和FuncT, T委托组成新消息到达会覆盖原消息委托仅仅为了让你控制怎样克隆这个消息不做消息转换该块在需要将消息广播给多个块时很有用管道分叉ActionBlock Execution category-- 由缓冲区和ActionT委托组成它们不再给其他块转发消息只处理输入的消息一般作为管道结尾BatchBlock (Grouping category)-- 告诉它你想要的每个批处理的大小它将累积消息直到它达到那个大小然后将它作为一组消息转发到下一个块其他内建Block类型BufferBlock、WriteOnceBlock、JoinBlock、BatchedJoinBlock暂时不会深入。管道连锁反应  当B块输入缓冲区达到上限容量为其供货的上游A块的输出暂存区将开始被填充当A块输出暂存区已满时该块必须暂停处理直到暂存区有空间这意味着一个Block的处理瓶颈可能导致所有前面的块的暂存区被填满。    但是不是所有的块暂存区满时都会暂停BroadcastBlock有1个消息的暂存区每个消息都会被覆盖 因此如果这个广播块不能及时将消息转发到下游则在下个消息到达的时候消息将丢失某种意义上达到一种限流效果比较残暴.编程实践生产者投递消息 可使用Post或者SendAsync方法向首块投递消息Post方法即时返回true/falseTrue意味着消息被block接收暂存区有空余false意味着拒绝了消息暂存区已满或者Block已经出错。SendAsync方法返回一个Taskbool, 将会以异步的方式阻塞直到块接收、拒绝、块出错。Post、SendAsync的不同点在于SendAsync可以延迟投递后置管道的输入buffer不空得到异步通知后再投递。定义流水线管道按照上图业务定义流水线:public EqidPairHandler(IHttpClientFactory httpClientFactory, RedisDatabase redisCache, IConfiguration con, LogConfig logConfig, ILoggerFactory loggerFactory){_httpClient httpClientFactory.CreateClient(bce-request);_redisDB0 redisCache[0];_redisDB redisCache;_logger loggerFactory.CreateLogger(nameof(EqidPairHandler));var option new DataflowLinkOptions { PropagateCompletion true };publisher _redisDB.RedisConnection.GetSubscriber();_eqid2ModelTransformBlock new TransformBlockEqidPair, EqidModel(// redis piublih 没有做在TransformBlock fun里面 因为publih失败可能影响后续的block传递eqidPair EqidResolverAsync(eqidPair),new ExecutionDataflowBlockOptions{MaxDegreeOfParallelism con.GetValueint(MaxDegreeOfParallelism)});// https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/walkthrough-creating-a-dataflow-pipeline_logBatchBlock new LogBatchBlockEqidModel(logConfig, loggerFactory);_logPublishBlock new ActionBlockEqidModel(x PublishAsync(x) );_broadcastBlock new BroadcastBlockEqidModel(x x); // 由只容纳一个消息的缓存区和拷贝函数组成_broadcastBlock.LinkTo(_logBatchBlock.InputBlock, option);_broadcastBlock.LinkTo(_logPublishBlock, option);_eqid2ModelTransformBlock.LinkTo(_broadcastBlock, option);}仿IIS日志写入组件异常处理上述程序在生产部署时遇到相关的坑位在测试环境_eqid2ModelTransformBlock块委托函数稳定执行程序并未出现异样 部署到生产之后,该Pipeline运行一段时间就停止工作一直很困惑。后来通过监测_eqid2ModelTransformBlock.Completion属性发现该块在执行某次委托时报错提前进入完成态。当TPL Dataflow不再处理消息且保证不再处理消息的时候就被定义为 完成态, IDataflow.Completion属性(Task对象)标记该状态Task对象的TaskStatus枚举值描述此Block进入完成态的真实原因。 TaskStatus.RanToCompletion    成功完成 在Block中定义的任务   TaskStatus.Fault    因未处理的异常导致过早的完成 TaskStatus.Canceled    因取消操作导致 过早的完成官方资料表明某块进入Fault、Cancel状态都会导致该块提前进入“完成态”但因Fault、Canceled进入的“完成态”会导致输入暂存区和输出暂存区被清空。After Fault has been called on a dataflow block, that block will complete, and its Completion task will enter a final state. Faulting a block, as with canceling a block, causes buffered messages (unprocessed input messages as well as unoffered output messages) to be lost.故需要严肃对待异常一般情况下我们使用try、catch包含所有的执行代码以确保所有的异常都被处理。    本文作为TPL Dataflow的入门指南(代码较多建议左下角转向原文)微软技术栈的可持续关注actor-based模型的流水线处理组件应对单体程序中高并发低延迟相当巴适。 https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.broadcastblock-1?viewnetcore-3.1 https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.idataflowblock.fault?redirectedfromMSDNviewnetcore-2.2#System_Threading_Tasks_Dataflow_IDataflowBlock_Fault_System_Exception_文字制图均为原创扫一扫左边二维码让干货飞一会。............历史推荐AspNetCore应用注意这一点CTO会对你刮目相看手撕公司SSO登录原理.Net线程同步技术解读
http://wiki.neutronadmin.com/news/310620/

相关文章:

  • 响应式网站设计与实现论文个人开店做外贸网站
  • 营销型网站的名词解释杭州网站设计推荐柚米
  • 有后台的网站谷歌应用商店app下载
  • 网站开发的条件洛阳网红打卡地
  • 外贸建站哪个好网上制作名片
  • 网站建设什么意思专业网站开发公司地址
  • 南宁世尊商贸网站建设drupal做虚拟发货网站
  • 网站精准ip接口怎么做深圳华强北电子城
  • 200元网站建设2万元建设网站贵吗
  • 图片背景在网站建设中WordPress禁用自适应
  • 山东天成水利建设 网站合购吧登录WordPress
  • 科凡建站响应式网站设计的要求
  • 中小学生做试卷的网站6如何做招聘网站效果评估
  • 湘潭做网站问下磐石网络建网站书籍
  • 在线捕鱼网站建设蓝色风格的网站
  • 广西南宁建设银行最新招聘网站太原零元网站建设
  • 中国建设监理协会网站会员专区网页设计与网站建设课程设计报告
  • 宁波网站建设平台分析展会布置
  • 上海高端网站制作公司如何做企业税收筹划
  • 建设php网站门户网站建设的平台搭建
  • 查询邮箱注册过的网站排名好的徐州网站开发
  • 网站如何推广行业免费高清图片素材网站有哪些
  • 建设机械网站精英甘肃省兰州市新闻
  • 网站后台补丁如何做如何提高网站开发效率
  • 郑州做网站的联系方式门户网站建设解决方案
  • 计算机网络技术电商网站建设与运营方向做电商网站的
  • 贵州省城市建设厅网站网站设计待遇
  • 做相亲网站的安全责任dede我的网站
  • 苏州相城网站建设wordpress图片替换不掉
  • 杭州工程网站建设定制家具十大品牌