加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

使用Go处理每分钟百万请求

发布时间:2019-07-03 07:35:29 所属栏目:优化 来源:MarcioCastilho
导读:副标题#e# 这篇文章在medium上很火,作者以实际案例来分析,讲得很好。 我们经常听说使用Go的goroutine和channel很容易实现高并发,那是不是全部代码都放在goroutine中运行就可以实现高并发程序了呢?很显然并不是。这篇文章将教大家如何一步一步写出一个简

我们修改了我们的Web请求处理程序以创建具有有效负载的Job struct,并将其发送到 JobQueueChannel以供worker处理。

  1. func payloadHandler(w http.ResponseWriter, r *http.Request) { 
  2.  
  3.     if r.Method != "POST" { 
  4.         w.WriteHeader(http.StatusMethodNotAllowed) 
  5.         return 
  6.     } 
  7.  
  8.     // Read the body into a string for json decoding 
  9.     var content = &PayloadCollection{} 
  10.     err := json.NewDecoder(io.LimitReader(r.Body, MaxLength)).Decode(&content) 
  11.     if err != nil { 
  12.         w.Header().Set("Content-Type", "application/json; charset=UTF-8") 
  13.         w.WriteHeader(http.StatusBadRequest) 
  14.         return 
  15.     } 
  16.  
  17.     // Go through each payload and queue items individually to be posted to S3 
  18.     for _, payload := range content.Payloads { 
  19.  
  20.         // let's create a job with the payload 
  21.         work := Job{Payload: payload} 
  22.  
  23.         // Push the work onto the queue. 
  24.         JobQueue <- work 
  25.     } 
  26.  
  27.     w.WriteHeader(http.StatusOK) 

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读