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

石家庄网站建设人员打开一个网站

石家庄网站建设人员,打开一个网站,奢侈品网站 方案,青浦网站建设公司hello, 我是马甲哥,这是我的第183篇原创文章,阅读时间3min,有用指数4颗星。 昨天"朝花夕拾"栏目倒腾了一款具有请求排队功能的并发受限服务器。 演示了互联网高并发请求,服务端遇到的现实情况(服务器高负载、…

图片

hello, 我是马甲哥,这是我的第183篇原创文章,阅读时间3min,有用指数4颗星。

昨天"朝花夕拾"栏目倒腾了一款具有请求排队功能的并发受限服务器。

演示了互联网高并发请求,服务端遇到的现实情况(服务器高负载、cpu打满、sql并发受限)。

文章重点在于给服务提供方削峰填谷,今天咱们把视角移到服务调用方。


如果是一个调用端程序同时发出这么多并发请求:

(在服务器处理单次请求耗时50ms的前提下)

并发客户端请求数concurrencyClients

服务器请求队列queueLength

服务器限流阈值 Maxoutstanding

总耗时ms

1000

100

10

5014

动图显示:

虽然1000个并发请求在5257ms全部处理完, 但是至少有一半的请求耗时超过3s, 那这又会有什么问题呢?

端到端的请求:为防止服务器处理过慢,长时间占用客户端到服务器的请求链路资源,调用端一般都会设置超时时间。

eg:

  • 前端ajax工具库设置超时时间:axios.defaults.timeout = 12000;

  • golang httpclient 设置超时时间:client := &http.Client{   Timeout: 10 * time.Second,   }

  • etcd grpc请求超时时间:eClient.Get(ctx, "/foo")

很明显,这个例子中如果clientTimeout=3s, 就会导致大量请求超时失败。


既要让所有客户端请求都能被处理,又要保证不超过客户端自设的超时配置。

协程池[1]这个缓释胶囊就可以上场了。

Package ants implements an efficient and reliable goroutine pool for Go.  

With ants, Go applications are able to limit the number of active goroutines, recycle goroutines efficiently, and reduce the memory footprint significantly. Package ants is extremely useful in the scenarios where a massive number of goroutines are created and destroyed frequently, such as highly-concurrent batch processing systems, HTTP servers, services of asynchronous tasks, etc.

总体而言, ants是golang中用于将高并发的Goroutine削峰填谷, 起到调用端缓释胶囊的作用。

另一个角度,正因为golang启动协程毫无顾虑,协程池的存在也是为了避免协程滥用。

将原clients()函数中无脑迅速启动1000个并发协程, 替换为ants库(协程池内协程数量设置为50)。

func antsClients() {wg1.Add(concurrencyClients)pool, _ := ants.NewPool(50)defer pool.Release()
for i := 1; i <= concurrencyClients; i++ {r := &Request{args:       []int{i},resultChan: make(chan int),}_ = pool.Submit(func() {ClientReq(r)})}wg1.Wait() // WaitGroup依旧可用
} …

动图显示,整体耗时相比于不用协程池无差, 但是每个请求的耗时都得到了很好的控制, 整个客户端程序批量发起1000个请求显得轻快又高效。

源代码还是在https://github.com/zwbdzb/go_sample1, 欢迎关注。

That's All, 本文是自己在中厂的一个生产实践复盘:
调用方某些场景下突发批量请求,一开始也是自然启动多协程发起请求,大量请求因为服务端限制而超时失败, 启动ants这个缓释胶囊后问题得到解决。

生活就是这样,只要你愿意倒腾,总有新发现。

参考资料

[1] 

协程池: https://github.com/panjf2000/ants

本篇文字和图片均为原创,读者可结合图片探索源码, 欢迎反馈 ~。。~。欢迎添加微信号 niumabujuan 交流撕逼。 

图片

Golang倒腾一款简配的具有请求排队功能的并发受限服务器

一次sql请求,返回分页数据和总条数

http请求超时,底层发生了什么?

两将军问题和TCP三次握手

字节二面:你怎么理解信道是Golang中的顶级公民

三张大图剖析HttpClient和IHttpClientFactory在DNS解析问题上的殊途同归

图片

点“图片戳“在看图片

http://www.dtcms.com/wzjs/449981.html

相关文章:

  • 济南网站设计公司排名微信广告平台
  • 政府网站建设 调研报告网站推广的一般流程是
  • 静态网页制作网站推广发帖网站
  • 互联网网站制作公司什么叫做关键词
  • 上海高档网站建设长沙正规竞价优化服务
  • 查看网站浏览量全国疫情的最新数据
  • 广州高铁新建站在哪里阿里指数查询官网入口
  • 政府信息网站安全建设网店代运营合同
  • 网站控制板面最佳磁力吧ciliba搜索引擎
  • 网站建设颜色注意事项培训网登录入口
  • 电子商务网站建设与管理杭州新站整站seo
  • 临沂网站建设那家好界首网站优化公司
  • 图书馆网站建设站长统计入口
  • 网站建设的相关政策百度网盘提取码入口
  • 电子商务专业毕业后干什么旅游seo整站优化
  • wordpress支付平台青岛seo杭州厂商
  • 有那些网站可以做推广深圳互联网推广公司
  • 做问卷调查的是哪个网站建立网站有哪些步骤
  • 滨州建设局网站网络推广公司排行榜
  • 跨境电商培训哪家最好短视频关键词优化
  • 网站界面设计中的布局设计要注意什么的结合杭州关键词优化外包
  • 安装字体怎么在wordpress鞍山seo公司
  • 创建全国文明城市时间福州seo代理商
  • 什么网站做任务赚钱吗在线葡京在线葡京
  • 网站怎么做推广知乎网络推广文案
  • 做网络推广的网站百度信息流效果怎么样
  • 蛋糕店网站建设模版网站查询关键词排名软件
  • 无锡建站方案营销推广的公司
  • 用ssh做的网站网站片区
  • 网站百度贴吧优化排名工具