강의

멘토링

커뮤니티

Programming

/

Back-end

Xây dựng dịch vụ stateful cho TPS chat dung lượng lớn

Chúng tôi sẽ hướng dẫn bạn mọi thứ về cách xây dựng server cho dịch vụ stateful và cách thực hiện triển khai không downtime.

(4.4) 16 đánh giá

431 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

  • July
Node.js
Node.js
MySQL
MySQL
Go
Go
Kafka
Kafka
websockets
websockets
Node.js
Node.js
MySQL
MySQL
Go
Go
Kafka
Kafka
websockets
websockets

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

4.4

5.0

ssez

29% đã tham gia

Tôi rất cảm động khi bạn đề cập đến những nhược điểm của việc sử dụng ORM. Tôi đã từng thử đăng nhập trong khi điều chỉnh một truy vấn và bị sốc... haha. Lần này tôi cũng thấy vui khi xem nó. Tôi không quen với cờ vây nên tiến độ hơi chậm hơn phần đầu tiên, nhưng thật vui khi nghĩ rằng tôi có thể sử dụng nó như thế này! Công ty của tôi chỉ có hai người, trong đó có tôi (tôi là nhân viên full-stack, và một người là CEO, cũng là người đảm nhiệm tất cả các công việc devops. 😅) Vì tôi điều hành một dịch vụ nhỏ... nên tôi có một rất nhiều nghi ngờ về kỹ năng của mình và tôi bối rối vì lý do này hay lý do khác. Tôi bắt đầu tham gia khóa học và tôi vẫn hào hứng như khi mới bắt đầu học. Những ngày này tôi lo lắng rất nhiều về tương lai, nhưng tôi nghĩ tốt nhất là nên đầu óc tỉnh táo và học tập hơn là lo lắng. Nếu tôi hoàn thành nó, tôi sẽ đi xem bài giảng khác :)

5.0

DAN

100% đã tham gia

Thật vui khi có thể nhìn thấy máy chủ nơi go lang được viết.

5.0

rnxogud123

100% đã tham gia

Cảm ơn bạn vì bài giảng tuyệt vời.

Bạn sẽ nhận được điều này sau khi học.

  • Mô hình phát hành/đăng ký thông qua Kafka

  • Quản lý dữ liệu thông qua MySQL

  • Xử lý TPS chat dung lượng lớn thông qua giao tiếp WSS

  • Quản lý máy chủ thông qua luồng sự kiện

Tạo dịch vụ Stateful sử dụng Kafka, MySQL 😘


Trong khóa học này, bạn có thể học về cách quản lý và phát triển dịch vụ Stateful cho TPS chat được sử dụng trên nền tảng streaming.


Khóa học này sử dụng hai ngôn ngữ.

Phương pháp triển khai toàn bộ bằng cách ưu tiên sử dụng Golang

Sau đó, để phục vụ cho những người học, khóa học được cấu trúc bằng nhiều ngôn ngữ khác nhau như cách sử dụng Kafka trong Node.JS mà bạn có thể quen thuộc hơn.


Ngoài ra, khóa học được cấu trúc với nhiều chủ đề đa dạng và chưa từng trải nghiệm trước đây như mô hình phát hành/đăng ký thông qua Kafka, quản lý dữ liệu thông qua MySQL.


Sau khi hoàn thành khóa học, các bạn sẽ có thể học được sự hiểu biết sâu sắc về Kafka, MySQLZero-downtime Deployment cho dịch vụ Stateful.

Sự khác biệt giữa Stateful và Stateless là gì?? 🫣

Các bạn!! Có bao giờ các bạn suy nghĩ về hình thức cơ bản của server chưa, không chỉ đơn thuần là cấu trúc server như MVC, Service-Repository?


Trong thực tế, tùy theo hình thái của server mà sẽ quyết định có thực hiện Zero-downtime Deployment hay cho phép retry ở mức độ nào.

Máy chủ mà các bạn phát triển sẽ bắt đầu được phát triển với việc áp dụng bắt buộc một trong hai khái niệm này.

Bạn có thể nghĩ đến một HTTP server thông thường.

Vì không duy trì trạng thái nên rất thuận lợi cho việc mở rộng, và nếu các bạn phát triển server một cách thông thường thì

Về cơ bản, server được cấu trúc dưới dạng Stateless.


Bạn có thể coi đây là dạng máy chủ điển hình nhất.

Đây là dạng server không dễ gì tiếp cận được.


Trong cấu trúc máy chủ như vậy, quá trình phát triển được tiến hành bằng cách sử dụng giao thức ws

Vì duy trì trạng thái nên rất bất lợi cho việc mở rộng, nhưng do duy trì kết nối nên giúp tiết kiệm tài nguyên.


Đây là các dạng server sẽ được đề cập chủ yếu trong khóa học này.

Trong khóa học này, chúng ta sẽ đề cập đến cả hai trường hợp Stateful và Stateless. 💁

Tôi có thể đảm bảo rằng đây là một khóa học mà bạn không dễ gì tiếp cận được.


Thông qua việc phát triển hai dạng server, các bạn có thể học được cách xử lý TPS chat với lượng truy cập lớn sử dụng MySQL và SocketZero-downtime Deployment sử dụng Kafka có thể hoạt động như thế nào.

Zero-downtime Deployment là gì??🙋‍♂

Trong phần giới thiệu trước đó, tôi đã sử dụng thuật ngữ này khá thường xuyên.

Dịch theo nghĩa đen thì có nghĩa là triển khai không gián đoạn.


Các bạn đã từng trải qua trường hợp trang web đột nhiên bị treo hoặc bị gián đoạn trên các nền tảng streaming chưa??

Việc triển khai diễn ra mà không ảnh hưởng đến trang web, khiến người dùng không biết liệu có đang triển khai hay không được gọi là Zero-downtime Deployment.

Phương thức này có thể được triển khai rất dễ dàng trong các dịch vụ Stateless.

Tuy nhiên, đối với các dịch vụ Stateful duy trì trạng thái của máy chủ, đây là một công việc rất khó khăn và tốn nhiều tài nguyên.


Trong khóa học này, chúng ta sẽ tìm hiểu về dịch vụ Stateful và cách sử dụng Kafka để triển khai Zero-downtime Deployment.

Tại sao lại là Kafka 😯

Kafka là một công cụ Stream dựa trên sự kiện, được sử dụng rất thường xuyên trong việc áp dụng mô hình publish/subscribe.


Trên thực tế, đây là dịch vụ được phát triển và áp dụng bởi LinkedIn, và nhiều công ty khác nhau đã triển khai Kafka để xử lý dữ liệu mà không bị mất mát thông điệp sự kiện.

  • Phần quan trọng nhất mà các học viên cần chú ý là các công ty lớn như Naver, Kakao, Rakuten, Coupang, Baemin, nhiều tập đoàn lớn đều sử dụng Kafka như một công cụ bắt buộc, vì vậy khóa học này sẽ rất hữu ích cho bạn.


Trong khóa học này, chúng tôi sẽ hướng dẫn bạn cách thiết lập và xây dựng môi trường Kafka trên local của bạn, cũng như cách sử dụng thực tế.

  • Nội dung về Kafka được xây dựng dựa trên cuốn Kafka: The Definitive Guide của Gwen Shapira, nhà phát triển thực tế tại LinkedIn.

Bạn sẽ học những nội dung này. 🤔

1⃣Mô hình Pub/Sub sử dụng Kafka

Cấu hình config của kafka và vận hành Broker, zookeeper đều được đề cập. Thông qua đó, các bạn có thể học được phương pháp phát triển dịch vụ sử dụng Kafka thực tế và các điểm cần lưu ý.

2⃣Quản lý dữ liệu dịch vụ thông qua thiết kế MySQL Schema

Bạn sẽ học cách quản lý dữ liệu về giao tiếp socket và dữ liệu về phòng chat bằng cách sử dụng MySQL thuận tiện cho việc xây dựng dịch vụ, đồng thời có thể tìm hiểu cách xây dựng server thông qua việc tự viết các truy vấn như ORDER BY, Paging, v.v.

3⃣Giao tiếp giữa các máy chủ được thực hiện bằng cách xây dựng 4 máy chủ

Không chỉ đơn thuần xây dựng một server, mà thông qua việc cấu hình nhiều server khác nhau và xây dựng Controller server để quản lý các server đó cùng nhiều tác vụ server khác, bạn có thể trải nghiệm gián tiếp Load Balancer và trải nghiệm phương pháp giao tiếp giữa các server bằng cách sử dụng Pub/Sub Modeling của Kafka.

Chúng ta sẽ thử triển khai những thứ này. 🤔

Cách chạy Kafka trong môi trường Local

Quản lý phòng chat và dữ liệu chat thông qua MySQL

Xử lý dữ liệu DB thông qua giao tiếp websockets

Sử dụng Kafka và quản lý server với Node.js, Go

Lưu ý trước khi học

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS): Có thể sử dụng tất cả các hệ điều hành như Windows, macOS, Linux, v.v.


  • Cấu hình PC: PC có cấu hình cơ bản có thể kết nối internet

Nhất định phải xem video được công khai miễn phí!! Video này chứa thông tin về những gì bạn có thể học được trong khóa học này và dịch vụ mà bạn sẽ thực sự triển khai.

Phần này rất quan trọng! 😯

Khóa học này là phần tiếp theo của khóa học phần 1 trước đó, đề cập đến việc xây dựng dịch vụ bổ sung, quản lý dữ liệu và triển khai.

Vì vậy, khóa học này sẽ tiếp tục dựa trên khóa học trước đó.

Mặc dù sẽ có giải thích đơn giản về mã nguồn đã được đề cập trong bài giảng trước, nhưng những người nghe lần đầu có thể sẽ rất bối rối.


Vì vậy, nếu bạn chưa có kiến thức về giao thức wss hoặc chat server, thì nên học khóa học này trước để không gặp nhiều khó khăn khi theo dõi bài giảng.

Mục tiêu của khóa học này là tập trung vàokiến trúc Zero-downtime Deployment và phát triển server, chứ không phải phát triển FE hay giao thức ws.


Bởi vì tôi không phải là nhà phát triển chuyên về FE mà là nhà phát triển chuyên về BE. Vì vậy, do lo ngại có thể truyền đạt kiến thức sai lệch về phát triển FE nên phát triển FE chỉ thực hiện xử lý API cho một server duy nhất.


Do đó, việc quản lý React State để triển khai Zero-downtime Deploymentsẽ không được thực hiện trong khóa học. Phần này cũng được đề cập liên tục trong khóa học, rất mong bạn lưu ý.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những người quan tâm đến mô hình Publish/Subscribe

  • Những ai tò mò về việc xây dựng nền tảng streaming

  • Những người tò mò về quản lý dữ liệu trò chuyện

  • Những người muốn thử sức với phương pháp phát triển mới mẻ và thú vị, không phải theo lối mòn thông thường

  • Những người muốn học MySQL, Kafka từ người có kinh nghiệm thực tế

Cần biết trước khi bắt đầu?

  • Golang [ Đây là ngôn ngữ cơ bản của khóa học. Không biết cũng không sao. ]

  • Node.Js [ Đây là ngôn ngữ dành cho học viên. Không biết cũng không sao.]

Xin chào
Đây là

3,773

Học viên

184

Đánh giá

88

Trả lời

4.4

Xếp hạng

15

Các khóa học

Giới thiệu bản thân

Xuất thân là người học trái ngành, hiện tôi đang đảm nhiệm vị trí phát triển máy chủ nền tảng tại Pangyo.

Tôi yêu thích việc tối ưu hóa máy chủ và tinh chỉnh các truy vấn (query tuning) khác nhau, đồng thời luôn nỗ lực để hướng dẫn các bạn những tính năng đơn giản một cách nhanh chóng và dễ hiểu nhất.

 

Kinh nghiệm làm việc

[Cựu] Nhà phát triển Blockchain tại Sandbox

[Cựu] Nhà phát triển Backend tại công ty con của Nexon

[Cựu] Nhà phát triển máy chủ nền tảng tại tập đoàn lớn ở Pangyo

[Hiện tại] Nhà phát triển máy chủ tại công ty mẹ ở Pangyo

Chương trình giảng dạy

Tất cả

31 bài giảng ∙ (3giờ 46phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

16 đánh giá

4.4

16 đánh giá

  • ssez13님의 프로필 이미지
    ssez13

    Đánh giá 7

    Đánh giá trung bình 5.0

    5

    29% đã tham gia

    Tôi rất cảm động khi bạn đề cập đến những nhược điểm của việc sử dụng ORM. Tôi đã từng thử đăng nhập trong khi điều chỉnh một truy vấn và bị sốc... haha. Lần này tôi cũng thấy vui khi xem nó. Tôi không quen với cờ vây nên tiến độ hơi chậm hơn phần đầu tiên, nhưng thật vui khi nghĩ rằng tôi có thể sử dụng nó như thế này! Công ty của tôi chỉ có hai người, trong đó có tôi (tôi là nhân viên full-stack, và một người là CEO, cũng là người đảm nhiệm tất cả các công việc devops. 😅) Vì tôi điều hành một dịch vụ nhỏ... nên tôi có một rất nhiều nghi ngờ về kỹ năng của mình và tôi bối rối vì lý do này hay lý do khác. Tôi bắt đầu tham gia khóa học và tôi vẫn hào hứng như khi mới bắt đầu học. Những ngày này tôi lo lắng rất nhiều về tương lai, nhưng tôi nghĩ tốt nhất là nên đầu óc tỉnh táo và học tập hơn là lo lắng. Nếu tôi hoàn thành nó, tôi sẽ đi xem bài giảng khác :)

    • july
      Giảng viên

      Chắc hẳn không dễ để hai người phát triển được nó. Tôi đang cổ vũ cho bạn!! Tôi muốn mở rộng tầm nhìn của bạn bằng cách cung cấp cho bạn nhiều khái niệm khác nhau mà không dễ gặp phải. Vì vậy tôi đã chuẩn bị rất nhiều cho bài giảng này và tôi rất tự hào vì nó hữu ích. Tôi nghĩ việc luôn nghi ngờ về khả năng của mình là một điều tốt. Tôi nghĩ việc tiếp cận mọi việc với thái độ thấp kém hơn là kiêu ngạo là đúng. Tôi cũng như vậy haha. Nếu bạn có thắc mắc hoặc thắc mắc nào ngoài nội dung bài giảng, vui lòng đặt câu hỏi. Tôi là một người nhân đạo hơn tôi nghĩ, haha. Tôi nghĩ thật tốt khi cùng nhau bàn bạc mọi chuyện và cùng nhau tìm ra giải pháp.!! Cảm ơn các bạn đã nghe bài giảng!!

  • kimdh86274님의 프로필 이미지
    kimdh86274

    Đánh giá 5

    Đánh giá trung bình 4.6

    5

    100% đã tham gia

    Thật vui khi có thể nhìn thấy máy chủ nơi go lang được viết.

    • koosco님의 프로필 이미지
      koosco

      Đánh giá 11

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      Cảm ơn bạn vì bài giảng tuyệt vời.

      • dkskhy327884님의 프로필 이미지
        dkskhy327884

        Đánh giá 3

        Đánh giá trung bình 5.0

        5

        77% đã tham gia

        Mình đã xem cả phần 1 và 2. Tôi có thể hiểu được cấu hình của máy chủ trò chuyện ở một mức độ nào đó và tôi nghĩ đây là một bài giảng hay đề cập đến các chủ đề mà ít người gặp phải.

        • july
          Giảng viên

          Tôi không biết phải làm gì... Tôi sẽ đền đáp bạn bằng những bài giảng hay trong tương lai. Cảm ơn!!

      • hojikas1237295님의 프로필 이미지
        hojikas1237295

        Đánh giá 4

        Đánh giá trung bình 5.0

        5

        61% đã tham gia

        Tôi rất thích bài giảng này như là phần tiếp theo của Phần 1 và thấy nó hữu ích.

        • july
          Giảng viên

          Phần 2 đề cập đến kiến ​​trúc nhiều hơn một chút, nhưng tôi không chắc liệu bạn có thấy nó hữu ích hay không. Cảm ơn bạn đã đánh giá tốt!!

      Ưu đãi có thời hạn, kết thúc sau 3 ngày ngày

      36.300 ₫

      23%

      999.261 ₫

      Khóa học khác của July

      Hãy khám phá các khóa học khác của giảng viên!

      Khóa học tương tự

      Khám phá các khóa học khác trong cùng lĩnh vực!