加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

发布时间:2019-07-03 08:36:17 所属栏目:优化 来源:MarcioCastilho
导读:这篇文章在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) 

(编辑:辽源站长网)

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

推荐文章
    热点阅读