内容简介:业务中,有很多处理流程,涉及到多个环节,其中很多环节是相同的。通过使用 pipeline,好处:感谢 (myntra)[github.com/myntra/pipeline] 的项目,思路类似,区别:
需求
业务中,有很多处理流程,涉及到多个环节,其中很多环节是相同的。
通过使用 pipeline,好处:
- 分离了业务与流程处理,业务代码只是给一个输入,处理并产生一个输出。
- pipeline 中打印执行过程日志,方便定位问题点,发现瓶颈。
- 当前执行到哪一个步骤了?
- 程序卡在哪个环节了?
- 一次处理耗时多少?
- 哪个步骤的 channel 满了?
- 通过并发执行某些环节来提高效率
- 批量处理数据库操作
- 每个步骤的代码易于测试
思路
感谢 (myntra)[github.com/myntra/pipeline] 的项目,思路类似,区别:
- 每个
Step执行时,会首先创建输出的out channel,从输入的in channel里面读取数据。
func (s *Step) Exec(in chan interface{}) chan interface{} (
out := make(chan interface{}, 100)
go func() {
// call 业务处理函数
}()
return out
)
- 业务的执行函数输入和输出的参数都是
interface{}
func (s *BusinessProcessor) Process(in interface{}) interface{} {
// process
return result
}
流程
pipeline 简单时序图:
pipeline framework
代码
遗留问题
- 某个 Step 处理失败,停止整个 pipeline,这个逻辑在很多业务中都存在,可以添加到 pipeline 中。
- 支持停止。
- 支持 Step 并发执行。
- 支持批处理,有些环节需要向数据库插入大量数据,批量处理效率会高很多。
reference
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
"笨办法"学Python
肖 (Zed A.Shaw) / 王巍巍 / 人民邮电出版社 / 2014-11-1 / CNY 49.00
本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。 本书结构非常简单,共包括52个习题,其中26个覆盖了输入/输出、变量和函数三个主题,另外26个覆盖了一些比较高级的话题,如条件判断、循环、类和对象、代码测......一起来看看 《"笨办法"学Python》 这本书的介绍吧!