[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-load-balancing-websocket-go-all--*":3,"academy-blog-translations-i5q59s3f57b4b0h":149},{"data":4,"page":137,"perPage":137,"totalItems":137,"totalPages":137},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":143,"keywords":144,"locale":119,"published_at":145,"scheduled_at":13,"school_blog":141,"short_description":146,"slug":147,"status":139,"title":6,"updated":148,"updated_by":13,"views":142},"Ep.25 Go กับ Load Balancing - กระจายการเชื่อมต่ออย่างมือโปร!","sclblg987654321","school_blog_translations","\u003Cp class=\"p1\">\u003Cstrong>Go กับ Load Balancing - กระจายการเชื่อมต่ออย่างมือโปร!\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>Load Balancing บน WebSocket รองรับผู้ใช้งานจำนวนมากใน Go\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">ใน&nbsp;EP นี้ เราจะมาศึกษาวิธีเพิ่มประสิทธิภาพให้ WebSocket Server เพื่อรองรับผู้ใช้งานจำนวนมากด้วย Load Balancing และ Scaling ซึ่งเป็นเทคนิคสำคัญในการทำให้ระบบของคุณสามารถขยายตัวและรองรับการใช้งานได้อย่างมีประสิทธิภาพครับ\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>Load Balancing คืออะไร?\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">Load Balancing คือกระบวนการกระจายคำขอ (Request) จากผู้ใช้งานไปยังหลายๆ เซิร์ฟเวอร์ เพื่อให้แต่ละเซิร์ฟเวอร์ทำงานไม่หนักเกินไป และลดความล่าช้าในการตอบสนอง\u003C\u002Fp>\u003Cp class=\"p3\">ข้อดีของ Load Balancing :\u003C\u002Fp>\u003Cp class=\"p3\">1.เพิ่มความเสถียร: หากเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งล่ม ระบบยังคงทำงานได้\u003C\u002Fp>\u003Cp class=\"p3\">2.รองรับผู้ใช้งานจำนวนมาก: กระจายการเชื่อมต่อไปยังเซิร์ฟเวอร์หลายเครื่อง\u003C\u002Fp>\u003Cp class=\"p3\">3.ปรับขนาดง่าย: เพิ่มหรือลดจำนวนเซิร์ฟเวอร์ตามความต้องการ\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>การใช้งาน Load Balancer สำหรับ WebSocket\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">สำหรับ WebSocket ซึ่งเป็นการเชื่อมต่อแบบ Persistent (เชื่อมต่อระยะยาว) เราสามารถใช้ Load Balancer เพื่อกระจายการเชื่อมต่อไปยังหลายเซิร์ฟเวอร์ได้ โดยเครื่องมือยอดนิยมที่รองรับ WebSocket ได้แก่:\u003C\u002Fp>\u003Cul class=\"ul1\">\u003Cli class=\"li3\">NGINX\u003C\u002Fli>\u003Cli class=\"li3\">HAProxy\u003C\u002Fli>\u003Cli class=\"li3\">AWS Elastic Load Balancer\u003C\u002Fli>\u003C\u002Ful>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>ตัวอย่างการตั้งค่า Load Balancing ด้วย NGINX\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">1.&nbsp;ติดตั้ง NGINX\u003C\u002Fp>\u003Cp class=\"p3\">ติดตั้ง NGINX บนเครื่องที่คุณต้องการใช้เป็น Load Balancer :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo apt update\nsudo apt install nginx\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">2. ตั้งค่า NGINX ให้รองรับ WebSocket สร้างไฟล์ตั้งค่าใน \u002Fetc\u002Fnginx\u002Fsites-available\u002Fwebsocket :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">upstream websocket_backend {\r\n    server 127.0.0.1:8080; # เซิร์ฟเวอร์ WebSocket เครื่องที่ 1\r\n    server 127.0.0.1:8081; # เซิร์ฟเวอร์ WebSocket เครื่องที่ 2\r\n}\r\n\r\nserver {\r\n    listen 80;\r\n\r\n    location \u002F {\r\n        proxy_pass http:\u002F\u002Fwebsocket_backend;\r\n        proxy_http_version 1.1;\r\n        proxy_set_header Upgrade $http_upgrade;\r\n        proxy_set_header Connection \"upgrade\";\r\n        proxy_set_header Host $host;\r\n    }\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">3. เปิดใช้งานไฟล์ตั้งค่า สร้าง symbolic link และรีสตาร์ท NGINX :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">sudo ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fwebsocket \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\r\nsudo systemctl restart nginx\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">4. ทดสอบการเชื่อมต่อ ผู้ใช้งานสามารถเชื่อมต่อไปยัง ws:\u002F\u002F&lt;your-nginx-server&gt; และ NGINX จะกระจายการเชื่อมต่อไปยังเซิร์ฟเวอร์ WebSocket หลายเครื่อง\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>การ Scale WebSocket Server ด้วย Docker และ Kubernetes\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">1.&nbsp;ใช้ Docker Compose สำหรับการ Scale\u003C\u002Fp>\u003Cp class=\"p3\">หากคุณใช้ Docker สามารถเพิ่มจำนวน WebSocket Server ได้ง่ายๆ :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">version: '3'\r\nservices:\r\n  websocket:\r\n    build: .\r\n    ports:\r\n      - \"8080-8082:8080\"\r\n    deploy:\r\n      replicas: 3 # สร้าง 3 Instance ของ WebSocket Server\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">รันคำสั่ง :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">docker-compose up --scale websocket=3\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">2. ใช้ Kubernetes สำหรับ Load Balancing\u003C\u002Fp>\u003Cp class=\"p3\">Kubernetes มี Load Balancer ในตัวที่ช่วยกระจายการเชื่อมต่อ: ตัวอย่างไฟล์ Deployment :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">apiVersion: apps\u002Fv1\r\nkind: Deployment\r\nmetadata:\r\n  name: websocket\r\nspec:\r\n  replicas: 3\r\n  selector:\r\n    matchLabels:\r\n      app: websocket\r\n  template:\r\n    metadata:\r\n      labels:\r\n        app: websocket\r\n    spec:\r\n      containers:\r\n      - name: websocket\r\n        image: your-websocket-image\r\n        ports:\r\n        - containerPort: 8080\r\n---\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  name: websocket-service\r\nspec:\r\n  selector:\r\n    app: websocket\r\n  ports:\r\n  - protocol: TCP\r\n    port: 80\r\n    targetPort: 8080\r\n  type: LoadBalancer\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">รันคำสั่ง :\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">kubectl apply -f websocket-deployment.yaml\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>เทคนิคเพิ่มเติมในการเพิ่มประสิทธิภาพ\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p3\">ใช้ Sticky Sessions : ผูกการเชื่อมต่อแต่ละครั้งให้กับเซิร์ฟเวอร์เดิม เพื่อรักษาสถานะของผู้ใช้งาน\u003C\u002Fp>\u003Cp class=\"p3\">Cache ข้อมูลใน Memory: ใช้ Redis หรือ Memcached สำหรับเก็บข้อมูลชั่วคราว\u003C\u002Fp>\u003Cp class=\"p3\">Monitor ระบบ: ใช้ Prometheus และ Grafana เพื่อติดตามประสิทธิภาพของเซิร์ฟเวอร์\u003C\u002Fp>\u003Cp class=\"p2\">&nbsp;\u003C\u002Fp>\u003Cp class=\"p3\">\u003Cstrong>สรุปง่ายๆ\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul class=\"ul1\">\u003Cli class=\"li3\">Load Balancing ช่วยกระจายการเชื่อมต่อ WebSocket ไปยังเซิร์ฟเวอร์หลายเครื่อง\u003C\u002Fli>\u003Cli class=\"li3\">ใช้ NGINX หรือ Kubernetes เพื่อรองรับผู้ใช้งานจำนวนมาก\u003C\u002Fli>\u003Cli class=\"li4\">เพิ่มความเสถียรด้วย\u003Cspan class=\"s2\"> Sticky Sessions \u003C\u002Fspan>และการตรวจสอบระบบแบบเรียลไทม์\u003C\u002Fli>\u003C\u002Ful>","19_11zon_9zwc8jzjf8.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F05mdpkex783sgbm\u002F19_11zon_9zwc8jzjf8.webp","2026-03-04 08:34:13.631Z","",{"keywords":15,"locale":113,"school_blog":123},[16,23,28,33,38,43,48,53,58,63,68,73,78,83,88,93,98,103,108],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":22,"updated_by":13},"sclkey987654321","school_keywords","2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":17,"collectionName":18,"created":24,"created_by":13,"id":25,"name":26,"updated":27,"updated_by":13},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":17,"collectionName":18,"created":29,"created_by":13,"id":30,"name":31,"updated":32,"updated_by":13},"2026-03-04 08:33:59.518Z","7pqn3y8ffwzzde5","ภาษา Go","2026-04-10 16:08:04.777Z",{"collectionId":17,"collectionName":18,"created":34,"created_by":13,"id":35,"name":36,"updated":37,"updated_by":13},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-04-10 16:08:05.227Z",{"collectionId":17,"collectionName":18,"created":39,"created_by":13,"id":40,"name":41,"updated":42,"updated_by":13},"2026-03-04 08:34:03.856Z","9dujh23qyko22y0","Load Balancing","2026-04-10 16:08:06.326Z",{"collectionId":17,"collectionName":18,"created":44,"created_by":13,"id":45,"name":46,"updated":47,"updated_by":13},"2026-03-04 08:34:07.368Z","e72wrydddws0lz8","เพิ่มประสิทธิภาพ","2026-04-10 16:08:07.574Z",{"collectionId":17,"collectionName":18,"created":49,"created_by":13,"id":50,"name":51,"updated":52,"updated_by":13},"2026-03-04 08:34:10.007Z","bsqlwredirv6u8q","รองรับผู้ใช้งานจำนวนมาก","2026-04-10 16:08:08.592Z",{"collectionId":17,"collectionName":18,"created":54,"created_by":13,"id":55,"name":56,"updated":57,"updated_by":13},"2026-03-04 08:34:09.677Z","zy6p9bub451w3c8","NGINX","2026-04-10 16:08:08.440Z",{"collectionId":17,"collectionName":18,"created":59,"created_by":13,"id":60,"name":61,"updated":62,"updated_by":13},"2026-03-04 08:34:10.799Z","m3qoswhgnc4c38n","Kubernetes","2026-04-10 16:08:08.875Z",{"collectionId":17,"collectionName":18,"created":64,"created_by":13,"id":65,"name":66,"updated":67,"updated_by":13},"2026-03-04 08:32:27.645Z","vfe4f15x4b3afpm","การศึกษาการเขียนโปรแกรม","2026-04-10 16:07:54.538Z",{"collectionId":17,"collectionName":18,"created":69,"created_by":13,"id":70,"name":71,"updated":72,"updated_by":13},"2026-03-04 08:31:30.863Z","oyltq82epf0vqka","การเขียนโปรแกรม","2026-04-10 16:07:41.883Z",{"collectionId":17,"collectionName":18,"created":74,"created_by":13,"id":75,"name":76,"updated":77,"updated_by":13},"2026-03-04 08:34:09.187Z","3zp82zk9hqz13ko","การเขียนโปรแกรม Go","2026-04-10 16:08:08.225Z",{"collectionId":17,"collectionName":18,"created":79,"created_by":13,"id":80,"name":81,"updated":82,"updated_by":13},"2026-03-04 08:32:29.161Z","uewvwdt9cf41o8n","การเขียนโปรแกรมสำหรับมือใหม่","2026-04-10 16:07:54.935Z",{"collectionId":17,"collectionName":18,"created":84,"created_by":13,"id":85,"name":86,"updated":87,"updated_by":13},"2026-03-04 08:32:27.254Z","xl8ixz1jmfnab5f","ฝึกเขียนโปรแกรม","2026-04-10 16:07:54.377Z",{"collectionId":17,"collectionName":18,"created":89,"created_by":13,"id":90,"name":91,"updated":92,"updated_by":13},"2026-03-04 08:31:53.015Z","801w5t09mfaa9hl","ภาษาโปรแกรม","2026-04-10 16:07:46.625Z",{"collectionId":17,"collectionName":18,"created":94,"created_by":13,"id":95,"name":96,"updated":97,"updated_by":13},"2026-03-04 08:20:37.794Z","x2c5z8w1cr41ij3","ภาษาโปรแกรมมิ่ง","2026-04-10 16:07:27.917Z",{"collectionId":17,"collectionName":18,"created":99,"created_by":13,"id":100,"name":101,"updated":102,"updated_by":13},"2026-03-04 08:32:24.473Z","xquecx7u5svb567","โปรแกรม","2026-04-10 16:07:53.714Z",{"collectionId":17,"collectionName":18,"created":104,"created_by":13,"id":105,"name":106,"updated":107,"updated_by":13},"2026-03-04 08:26:56.612Z","yf74wkqyamfc5qx","โปรแกรมเมอร์","2026-04-10 16:07:36.426Z",{"collectionId":17,"collectionName":18,"created":109,"created_by":13,"id":110,"name":111,"updated":112,"updated_by":13},"2026-03-04 08:26:59.195Z","gab60xd583s3qaw","Superdev School","2026-04-10 16:07:37.087Z",{"code":114,"collectionId":115,"collectionName":116,"created":117,"flag":118,"id":119,"is_default":120,"label":121,"updated":122},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":124,"collectionId":125,"collectionName":126,"expand":127,"id":141,"views":142},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs",{"category":128},{"blogIds":129,"collectionId":130,"collectionName":131,"created":132,"created_by":13,"id":124,"image":133,"image_alt":13,"image_path":134,"label":135,"name":136,"priority":137,"publish_at":138,"scheduled_at":13,"status":139,"updated":140,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":136,"th":136},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","i5q59s3f57b4b0h",314,"05mdpkex783sgbm",[20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110],"2025-01-27 04:41:08.890Z","เรียนรู้วิธีเพิ่มประสิทธิภาพ WebSocket Server ด้วย Load Balancing และ Scaling เพื่อรองรับผู้ใช้งานจำนวนมากใน Go","load-balancing-websocket-go","2026-04-25 02:47:30.104Z",{"th":147}]