inflearn logo

Vấn đề đồng thời đơn giản nhất - Race Condition

Học về vấn đề đồng thời điển hình là Tình trạng Cạnh tranh (Race Condition). Thực hành so sánh môi trường máy chủ đơn lẻ và môi trường phân tán gây ra vấn đề đồng thời. Có thể hiểu được ranh giới giao dịch và mức độ cô lập. Có thể học được sự khác biệt giữa khóa lạc quan, khóa bi quan và khóa phân tán.

(5.0) 6 đánh giá

58 học viên

Độ khó Cơ bản

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

Docker
Docker
Spring Boot
Spring Boot
DBMS/RDBMS
DBMS/RDBMS
Redis
Redis
k6
k6
Docker
Docker
Spring Boot
Spring Boot
DBMS/RDBMS
DBMS/RDBMS
Redis
Redis
k6
k6

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

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

5.0

5.0

뽀미

100% đã tham gia

Tôi đã từng nghe qua khái niệm về vấn đề bất đồng bộ (concurrency), nhưng thật khó để cảm nhận được nó thực sự xảy ra như thế nào. Tuy nhiên, bài giảng này thực sự đúng với tiêu đề "Vấn đề bất đồng bộ dễ hiểu nhất"! 👍 Nhờ việc giải thích về Race Condition thông qua hình vẽ và ví dụ mã nguồn mà tôi đã hiểu rất rõ, đồng thời có thể học hỏi theo luồng tư duy tại sao vấn đề này lại phát sinh. 😊 Tôi rất muốn nghe thêm các bài giảng khác của bạn về những chủ đề khác nữa!

5.0

하나의묵

100% đã tham gia

Tôi luôn cảm thấy vấn đề đồng thời rất khó khăn, nhưng trong khóa học này, giảng viên đã giải thích từng khái niệm một cách chi tiết nên cuối cùng tôi cũng nắm bắt được. Không chỉ đề cập đến lý thuyết mà còn trực tiếp thiết lập môi trường thực hành, giúp tôi hiểu một cách tự nhiên về sự khác biệt trong cách vấn đề đồng thời xuất hiện giữa máy chủ đơn và máy chủ phân tán. Ngoài ra, vì có cấu trúc cho phép trực tiếp xác nhận quá trình phát sinh vấn đề đồng thời trong thực tế, nên tôi không chỉ ghi nhớ khái niệm một cách đơn thuần mà còn có thể cảm nhận được tại sao vấn đề này lại xảy ra, điều này đặc biệt tốt, và có nhiều nội dung có thể áp dụng ngay vào công việc thực tế nên rất hữu ích. Tôi nghĩ đây là khóa học đáng giới thiệu cho những ai cảm thấy khó hiểu về các khái niệm như optimistic lock, pessimistic lock, distributed lock, hoặc đang băn khoăn về cách giải quyết vấn đề đồng thời.

5.0

이달팽

100% đã tham gia

Trước đây tôi chỉ biết về vấn đề đồng thời ở mức lý thuyết, nhưng nhờ theo dõi gi강사님 tái hiện trực tiếp race condition ở cấp độ code và giải quyết nó, tôi đã có thể nắm chắc được cảm giác thực tế. Việc thực hành với giả định nhiều môi trường khác nhau như shared DB, distributed environment cũng rất hữu ích. 😊😊 Tôi nghĩ đây là một khóa học tốt cho những người như tôi đang bắt đầu tìm hiểu về vấn đề đồng thời. Cảm ơn giảng viên~

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

  • Nguyên nhân cơ bản của vấn đề đồng thời và phương pháp giải quyết

  • Cách giải quyết vấn đề đồng thời trong môi trường máy chủ đơn và môi trường máy chủ phân tán

  • Hiểu và sử dụng đúng cách Optimistic Lock, Pessimistic Lock và Distributed Lock

  • Hiểu về ranh giới giao dịch và mức độ cô lập

  • Cách sử dụng IntelliJ IDEA, Docker, k6

Vẫn còn bối rối về vấn đề đồng thời sao?

Với khóa học này, hãy hiểu chính xác các khái niệm và phương pháp giải quyết vấn đề đồng thời như optimistic lock, pessimistic lock, distributed lock.

  • Tạo môi trường gây ra vấn đề đồng thời để thực sự trải nghiệm các vấn đề về tính đồng thời.

  • Hãy xác nhận sự khác biệt của vấn đề đồng thời trong môi trường máy chủ đơn lẻ và môi trường máy chủ phân tán.

  • Có thể hiểu được cách sử dụng annotation @Transactional mà trước đây đã sử dụng mà không biết chính xác.

  • Vấn đề đồng thời chỉ có một nhưng tại sao lại có nhiều cách giải quyết khác nhau? Hãy xác nhận lý do.

Chúng tôi khuyến nghị cho những người như thế này

Những người nên học khóa học này (1)

Thực ra tôi vẫn chưa hiểu rõ về vấn đề đồng thời. 😅

Những người nên tham gia khóa học này (2)

Tôi không hiểu chính xác sự khác biệt giữa optimistic lock, pessimistic lock và distributed lock. 🌧️

Những người nên học khóa học này (3)

Làm thế nào để kiểm tra các vấn đề về tính đồng thời? 📜

Sau khi hoàn thành khóa học

  • Bạn có thể hiểu về tình trạng tranh chấp (Race Condition), vấn đề đồng thời xảy ra nhiều nhất trong thực tế.

  • Có thể sử dụng đúng cách annotation @Transactional mà trước đây đã sử dụng mà không hiểu rõ.

  • Có thể hiểu và giải quyết chính xác các vấn đề về đồng thời trong môi trường máy chủ đơn lẻ và môi trường máy chủ phân tán.

  • Hiểu về mức độ cô lập giao dịch và ranh giới, có thể áp dụng vào thực tế công việc.

Đặc điểm của khóa học này

Sử dụng IntelliJ IDEA để thực hành thuận tiện và cung cấp tài liệu bài giảng thông qua Notion, Github

Điểm mạnh cốt lõi của khóa học này (1)

IntelliJ có tính năng như thế này à. 😲

Gửi yêu cầu kiểm thử đến ứng dụng API đang chạy, kết nối với DB để quản lý dữ liệu và xem dữ liệu được lưu trữ trong Redis - tất cả các công việc này được thực hiện cùng lúc trong IntelliJ.

Điểm mạnh cốt lõi của khóa học này (2)

Cung cấp tài liệu giảng dạy Notion được cập nhật phản ánh theo thời gian thực.

Để bạn có thể theo dõi bài thực hành một cách dễ dàng, tôi sẽ cung cấp mã dự án thông qua liên kết GitHub.

Chúng ta sẽ học những nội dung như thế này

Lý do cơ bản của vấn đề đồng thời và phương pháp giải quyết

Bạn có biết lý do căn bản của vấn đề đồng thời không?

Nếu hiểu từ nguyên nhân căn bản và học cách giải quyết, bạn có thể hiểu và giải quyết vấn đề một cách chính xác hơn.

Trong khóa học, chúng ta sẽ bắt đầu bằng việc nắm vững khái niệm về vấn đề đồng thời.

Các phương pháp giải quyết đa dạng thực hành trong môi trường phân tán

Vấn đề đồng thời xảy ra khác nhau trong môi trường máy chủ đơn lẻ và môi trường máy chủ phân tán. Ngay cả khi áp dụng cùng một phương pháp giải quyết, vấn đề có thể không được giải quyết tùy thuộc vào môi trường.

Bạn phải biết nên sử dụng như thế nào trong môi trường nào thì mới có thể áp dụng ngay vào công việc thực tế.

Chạy đồng thời 2 ứng dụng để cấu hình môi trường phân tán.

Người tạo ra khóa học này

  • (Hiện tại) Nhà phát triển Backend tại AhnLab


Bạn có thắc mắc gì không?

Q. Chủ đề về vấn đề đồng thời cảm thấy quá khó hiểu. 🫥

Lý do vấn đề đồng thời cảm thấy khó khăn không phải vì khái niệm phức tạp, mà là vì không thể nắm bắt được cảm giác cho đến khi trực tiếp trải nghiệm trong thực tế.
Trong khóa học, chúng tôi chỉ trích xuất những khái niệm cốt lõi và giải thích tập trung vào thực hành.
Bạn có thể hiểu nhanh chóng vì có thể xác nhận ngay bằng code.

Q. Tôi vẫn chưa hiểu rõ về Spring Boot hoặc JPA. 🤦‍♀️

Bạn không cần phải hiểu sâu về Spring Boot và JPA.
Khái niệm đồng thời có thể được hiểu độc lập với framework.
Trong khóa học, chúng tôi sẽ chỉ giải thích tối thiểu những phần cần thiết và áp dụng ngay vào thực hành.
Mã nguồn dự án được sử dụng trong thực hành cũng được cung cấp qua GitHub nên bạn có thể theo dõi ngay lập tức.

Q. Vấn đề đồng thời có thường xuyên xảy ra trong thực tế không❓

Vâng, trong các dịch vụ thực tế thì điều này xảy ra thường xuyên.
Trong cấu trúc có lưu lượng truy cập lớn hoặc truy cập tài nguyên chia sẻ thì gần như chắc chắn sẽ xuất hiện.
Đặc biệt là thường xuyên xảy ra trong logic thay đổi trạng thái như giảm tồn kho, thanh toán, đặt chỗ.
Vì vậy, việc xem xét chiến lược kiểm soát đồng thời ngay từ giai đoạn thiết kế ban đầu được khuyến nghị trong thực tế.

Những lưu ý trước khi học

Môi trường thực hành của giảng viên

  • Hệ điều hành và phiên bản: Windows 11

  • Công cụ sử dụng: IntelliJ IDEA Ultimate Edition, Docker, k6, Spring Boot, DBMS/RDBMS, Redis


Kiến thức tiên quyết và lưu ý

  • Spring Boot, JPA, RDBMS

  • Khóa học này thực hành trong môi trường tạo ra nhiều yêu cầu đồng thời để thực hành các vấn đề về tính đồng thời, nhưng đây không phải là khóa học về cách xử lý khối lượng lớn yêu cầu mà không gặp vấn đề gì.

  • Tôi xin thông báo rằng phương pháp xử lý lượng lớn yêu cầu và phương pháp xử lý vấn đề đồng thời là hai chủ đề khác nhau.

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

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

  • Nhà phát triển đang băn khoăn về các vấn đề đồng thời gây nhầm lẫn liên tục và phương pháp giải quyết

  • Nhà phát triển muốn hiểu về giao dịch liên quan đến vấn đề đồng thời

  • Nhà phát triển muốn hiểu và áp dụng sự khác biệt giữa Optimistic Lock, Pessimistic Lock và Distributed Lock

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

  • Kinh nghiệm phát triển server backend API đơn giản (Spring Boot)

  • Kiến thức cơ bản về cơ sở dữ liệu (RDBMS, NoSQL)

Xin chào
Đây là joyopi

58

Học viên

6

Đánh giá

5.0

Xếp hạng

1

Khóa học

(Hiện là) Nhà phát triển Backend tại AhnLab

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

Tất cả

25 bài giảng ∙ (3giờ 54phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

6 đánh giá

5.0

6 đánh giá

  • zepettoworld님의 프로필 이미지
    zepettoworld

    Đánh giá 4

    Đánh giá trung bình 5.0

    5

    60% đã tham gia

    • heejaykong2906님의 프로필 이미지
      heejaykong2906

      Đánh giá 1

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      Trước đây tôi chỉ biết về vấn đề đồng thời ở mức lý thuyết, nhưng nhờ theo dõi gi강사님 tái hiện trực tiếp race condition ở cấp độ code và giải quyết nó, tôi đã có thể nắm chắc được cảm giác thực tế. Việc thực hành với giả định nhiều môi trường khác nhau như shared DB, distributed environment cũng rất hữu ích. 😊😊 Tôi nghĩ đây là một khóa học tốt cho những người như tôi đang bắt đầu tìm hiểu về vấn đề đồng thời. Cảm ơn giảng viên~

      • joyopi
        Giảng viên

        Phản hồi rằng bạn đã nắm chắc được vấn đề đồng thời mà trước đây chỉ biết qua lý thuyết, giờ đây đã tái hiện và giải quyết trực tiếp bằng code, đối với tôi là phần vô cùng quan trọng. Bởi vì đây chính là mục tiêu lớn nhất khi tôi lên kế hoạch cho khóa học này. Hy vọng rằng việc bạn đã thực hành với các môi trường thực tế như shared DB hay distributed environment sẽ giúp ích rất nhiều cho công việc thực tế của bạn. Lời nhận xét rằng đây sẽ là một khóa học tốt cho những người mới bắt đầu với đồng thời cũng tiếp thêm động lực lớn cho tôi. Cảm ơn bạn đã để lại đánh giá tuyệt vời! 🙇

    • abcd123123님의 프로필 이미지
      abcd123123

      Đánh giá 330

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • hyunwoochoi4034님의 프로필 이미지
        hyunwoochoi4034

        Đánh giá 1

        Đánh giá trung bình 5.0

        Đã chỉnh sửa

        5

        100% đã tham gia

        Tôi luôn cảm thấy vấn đề đồng thời rất khó khăn, nhưng trong khóa học này, giảng viên đã giải thích từng khái niệm một cách chi tiết nên cuối cùng tôi cũng nắm bắt được. Không chỉ đề cập đến lý thuyết mà còn trực tiếp thiết lập môi trường thực hành, giúp tôi hiểu một cách tự nhiên về sự khác biệt trong cách vấn đề đồng thời xuất hiện giữa máy chủ đơn và máy chủ phân tán. Ngoài ra, vì có cấu trúc cho phép trực tiếp xác nhận quá trình phát sinh vấn đề đồng thời trong thực tế, nên tôi không chỉ ghi nhớ khái niệm một cách đơn thuần mà còn có thể cảm nhận được tại sao vấn đề này lại xảy ra, điều này đặc biệt tốt, và có nhiều nội dung có thể áp dụng ngay vào công việc thực tế nên rất hữu ích. Tôi nghĩ đây là khóa học đáng giới thiệu cho những ai cảm thấy khó hiểu về các khái niệm như optimistic lock, pessimistic lock, distributed lock, hoặc đang băn khoăn về cách giải quyết vấn đề đồng thời.

        • joyopi
          Giảng viên

          Cảm ơn bạn rất nhiều vì đã để lại đánh giá học tập chân thành. Thực ra đồng thời là một chủ đề khó cảm nhận vì không thể nhìn thấy bằng mắt, nhưng việc bạn đã nắm bắt được qua khóa học khiến tôi tự hào với tư cách là giảng viên, và tôi rất vui vì bạn đã hiểu rõ ý định của tôi là 'trải nghiệm trực tiếp qua thực hành hơn là lý thuyết'. Bạn đã vất vả khi hoàn thành khóa học. Cảm ơn bạn! 🙇‍♀️

      • paulmoon008308님의 프로필 이미지
        paulmoon008308

        Đánh giá 111

        Đánh giá trung bình 4.9

        5

        20% đã tham gia

        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!

        Ưu đãi có thời hạn

        37.130 ₫

        24%

        1.040.547 ₫