文章图片
文章图片
【芯片|复杂任务中,流程的解耦设计】
文章图片
文章图片
\">一、业务场景在系统开发的过程中 , 必然存在耗时极高的动作 , 是基于请求响应模式无法解决的问题 , 通常会采用解耦的思维 , 并基于异步或者事件驱动的方式去调度整个流程的完整执行;
复杂流程 , 得一步异步地来;
文件任务:在系统解析大文件数据时 , 在获取任务之后 , 会异步处理后续文件读写流程;
中间表:执行复杂场景的数据分析时 , 收集完待分析的对象之后 , 会并发执行各个维度的采集动作 , 并依次将数据写入临时的中间表中 , 方便数据查询动作;
在上述场景中 , 基于单次请求响应无法执行整个过程 , 必须对流程分段分步和异步推进 , 在流程中根据场景去判断 , 是异步有序驱动 , 还是异步并发处理 , 并基于各个节点的执行状态判断动作是否成功 。
二、任务管理复杂任务的执行周期相对偏长 , 要确保稳定的执行则需要对任务做精细的设计和管理 , 通常会基于如下几个因素去描述任务:
- 场景:定义任务的主题场景 , 便于将多种任务做统一管理和调度 , 例如:文件、数据、报表等;
- 计划:对任务做好步骤的拆分 , 并制定和推进相应的执行计划 , 例如:有序调度、并发执行等;
- 状态:针对任务和节点的执行计划 , 都要提供细节的状态定义 , 例如:开始/结束 , 进行中/已完成 , 成功/失败等;
三、设计思路1、同步请求响应服务之间的通信模式一般分为:同步和异步两种;同步是指在请求端发出动作之后 , 会一直等待响应端完成 , 或者响应超时导致熔断 , 即在一次请求调用中耦合所有的处理流程;
服务中大部分的请求都是同步响应模式 , 可以提高系统的响应速度;但是在分布式中 , 首先要控制超时熔断的时间 , 避免在流量高峰期请求堆积 , 拖垮整个服务;另外对于被大量调用的公共服务 , 要提高并发的支撑能力 , 降低对请求链路的性能影响 。
2、异步解耦模式异步模式的最大优点就是实现请求和响应的完全解耦 , 任务只需要触发一次开始动作 , 后续的流程就会逐步地推进直到结束;各个服务节点处理逻辑不会受到整个请求链路的耗时限制;
实现异步有多种方式 , 例如:请求回调、发布订阅、Broker代理等;在之前异步章节中有详细描述 , 这里不再赘述;异步消除了服务节点之间的依赖关系 , 但是也同样提高了流程的复杂性;
3、事件驱动设计事件驱动是一个抽象的概念 , 即通过事件的方式实现多个服务间的协同 , 驱动整个流程的处理逻辑;在业务层面是一种设计思想 , 在技术层面通常采用发布订阅的方式 , 同样也可以消除服务间的强依赖关系;
- 芯片|18G大运存,骁龙8Gen1+3主摄+5000mAh大电池,售价4698起
- soc芯片|放弃了RedmiK50,却选择入手一加ACE,重度使用几天谈谈感受
- 芯片|外媒:美企“断供”应该适可而止了
- 苹果|捡便宜了,苹果A13芯片+256GB不足四千,性价比很高
- 芯片|新消息传来,俄正式拉开了序幕!外媒:该来的总会来,跑不了
- 芯片|赫卡忒的眼眸:微光手机“夜视仪”是怎样炼成的?
- 芯片|央视亲自点赞,自研芯片功不可没,这才是真正的“国产黑马”
- 5大巨头垄断全球芯片设计,中国芯片企业要崛起,或越来越难
- 芯片|国产自研芯片取得的进展,连外媒都认可了,ARM真怕了
- 芯片|芯片专业火了:毕业能拿三四十万 跳槽涨薪50%