Go -- 并发编程的两种限速方法
2019-09-27 20:33
来源:未知
点击数:            

  golang提供了goroutine快速实现并发编程,在实际环境中,如果goroutine中的代码要消耗大量资源时(CPU、内存、带宽等),我们就需要对程序限速,以防止goroutine将资源耗尽。以下面伪代码为例,看看goroutine如何拖垮一台DB。假设userList长度为10000,先从数据库中查询userList中的user是否在数据库中存在,存在则忽略,不存在则创建。

  在示例中,DB在1秒内接收10000次读操作,最大还会接受10000次写操作,普通的DB服务器很难支撑。针对DB,可以在连接池上做手脚,控制访问DB的速度,这里我们讨论两种通用的方法。

  在限速时,一种方案是丢弃请求,即请求速度太快时,对后进入的请求直接抛弃。

  只显示3次Got it!,说明另外7次Limit返回的结果为false。限速成功。

  在限速时,另一种方案是等待,即请求速度太快时,后到达的请求等待前面的请求完成后才能运行。这种方案类似一个队列。

  与方案一不。

Copyright © 2003-2015 All rights reserved.http://www.jnjlysk.cn威尼斯手机版娱乐场,2017威尼斯登陆网站,威尼斯网站版权所有