![Page 1: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/1.jpg)
USE QUEUE IN GOLANG TO SCALE SERVER ABILITY
AND PERFORMANCE Author: Michael
Email: [email protected]
![Page 2: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/2.jpg)
TRY THIS SOURCE CODE
![Page 3: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/3.jpg)
➤ No way to control how many go routines we are spawning!!!
➤ Since we were getting 1 million POST request per 1 minute ==> of course this code CRASHED very quickly.
➤ => NEVER DO IT!!!!
➤ what is better solution?
![Page 4: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/4.jpg)
TRYING AGAIN
➤ performance is better
➤ Our server was only run “doFunction” method at a time.
➤ the buffered Chanel may be full soon and blocking the request handler ability to queue more items
➤ STILL NOT GOOD
![Page 5: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/5.jpg)
AN OTHER SOLUTION?
➤ Solution with one queue and a lot of worker working together
➤ Number worker depends on your server resource.
➤ one worker pool will be create to manage workers.
![Page 6: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/6.jpg)
WORKER POOL AND DISPATCHER
![Page 7: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/7.jpg)
CREATE WORKER
➤ alway register to worker pool one it is free.
➤ alway handler new job and quit signals.
![Page 8: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/8.jpg)
HOW TO USE
![Page 9: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/9.jpg)
HOW TO USE
![Page 10: [INNOVATUBE] Tech Talk #3: Golang - Nguyễn Văn Hưng](https://reader031.vdocuments.net/reader031/viewer/2022032208/58f260811a28ab133d8b45af/html5/thumbnails/10.jpg)
RESULT
➤ we can control how many go routines created
➤ optimise free worker by worker pool
➤ optimised your server speed and ability.
➤ much better if working together with CACHE also.