第二部分 进阶用法-并发度控制
在基础用法中,我们很简单的实现了并发处理数据,但是随着数据量增多,隐藏的问题就会浮出水面。
并发操作数据库,随数据增加,goroutine增多,会出现部分routine invalid connection DB, 可能是超过了DB的连接数
并发调用下游API,随数据增加,goroutine增多,会触发下游API限流,导致部分请求失败
这个时候就需要进行并发度控制
继续阅读
第二部分 进阶用法-并发度控制
在基础用法中,我们很简单的实现了并发处理数据,但是随着数据量增多,隐藏的问题就会浮出水面。
并发操作数据库,随数据增加,goroutine增多,会出现部分routine invalid connection DB, 可能是超过了DB的连接数
并发调用下游API,随数据增加,goroutine增多,会触发下游API限流,导致部分请求失败
这个时候就需要进行并发度控制
继续阅读
不得不说Go很方便实现并发处理,这里针对实际工作中用的到并发做个笔记
本文分两篇,这一篇是基本用法,另一篇涉及到并发度控制,参考《Go并发实践笔记二(进阶用法)》
第一部分 基本用法
一、并发任务是隔离的
对一组数据,进行处理,不需要对处理结果进行聚合返回
继续阅读
Go sync.Map笔记
在并发的goroutine中遇到这个问题,还以为是goroutine的问题,或者Go闭包的问题, 一层一层分析下来,才知道是Go本身迭代变量的问题,想起了PHP的foreach陷阱【PHP引用理解之神奇的foreach面试题】,不仅感慨深入掌握一门语言何其不易呀
先说结论:Go在循环体中,每次遍历的变量是同一个,指向同样的内存地址,这是语言本身的一个陷阱
问题先行,我们先来看看问题
继续阅读