Các mẫu giao dịch phân tán dưới góc nhìn MSA được chia sẻ bởi người phỏng vấn Kakao
Khóa học tập trung vào thực hành về kỹ thuật quản lý giao dịch SAGA để duy trì tính nhất quán của dữ liệu trong môi trường phân tán. Bạn sẽ xây dựng 3 microservices bằng Spring Boot và Docker, đồng thời triển khai hai mô hình Orchestration và Choreography với Kafka và MySQL. Thông qua khóa học này, bạn có thể nắm vững các khái niệm cốt lõi có thể áp dụng ngay vào thực tế như nguyên lý hoạt động của giao dịch phân tán, thiết kế giao dịch bù (compensating transaction) và xử lý phục hồi sau sự cố.
Đây là một thời gian tuyệt vời để học về distributed transaction!
5.0
keny
92% đã tham gia
Cá nhân tôi nghĩ đây có thể là một trong những khóa học hữu ích nhất trên Inflearn. Nhờ đó mà tôi có thể học được những nội dung thực sự bổ ích. Cảm ơn bạn.
5.0
개발에 미친자
92% đã tham gia
Tôi đã xem khóa học rất hay.
Ban đầu việc anh chỉ ra thực sự rất nhiều sơ đồ trong khi giải thích kiến trúc tổng thể và những giải thích theo đó thật sự rất ưng ý, và những kiến thức có thể thiếu sót cũng như các khái niệm cần được tổng hợp đều có thể xác nhận thông qua file tóm tắt bài giảng riêng biệt. Tùy theo nhu cầu, script của Inflearn cũng rất hữu ích.
Ngoài ra, quá trình ôn tập cũng được giải thích lại từng cái một, những câu chuyện thực tế và quan điểm từ góc độ thực tiễn cũng rất bổ ích.
Tôi đã xem rất hay. Cảm ơn anh.
Bạn sẽ nhận được điều này sau khi học.
Tiết lộ bí quyết thiết kế giao dịch phân tán bền bỉ trước mọi sự cố
Mô hình Orchestration và Choreography, khi nào và dùng như thế nào trong thực tế?
Triển khai giao dịch SAGA dựa trên sự kiện thời gian thực với Kafka
Kiến trúc giao dịch bù trừ ổn định hoàn thiện bằng Spring Boot
Thực hành giao dịch microservices tự xây dựng với Docker
Phát triển · Lập trình · Backend
Dịch vụ đã được chia nhỏ nhưng transaction thì chưa chia được
Ngay khi mỗi dịch vụ có một cơ sở dữ liệu riêng biệt, phạm vi có thể ràng buộc trong một lần commit sẽ kết thúc. Khi việc thanh toán đã hoàn tất nhưng hàng tồn kho không giảm, bạn sẽ dùng gì để hoàn tác? Khóa học này trả lời câu hỏi đó bằng mô hình SAGA.
Mức độ: Nhập môn
Bao gồm thực hành
Spring Boot · Kafka
Câu đố theo từng phần
Thời hạn khóa học vô hạn
Từ khái niệm đến triển khaiHạn chế của giao dịch phân tán · SAGA · TCC · 3PC
Ví dụ về thanh toán điện tửKhởi chạy bằng Docker Compose và trực tiếp tạo ra ba ứng dụng
2 nhà phát triển đương nhiệmNgười phỏng vấn 12 năm kinh nghiệm tại trụ sở Kakao · Phát triển máy chủ nền tảng tại Pangyo
SAGA là một mô hình chia nhỏ một giao dịch lớn thành nhiều giao dịch cục bộ, và nếu thất bại sẽ hoàn tác bằng các giao dịch bù đắp
Nơi bài giảng này bắt đầu
Người thực hiện rollback sẽ không còn nữa
Khi còn là một khối duy nhất
Kết thúc chỉ với một lần commit
Nếu thất bại, cơ sở dữ liệu sẽ tự động khôi phục. Nhà phát triển không cần phải can thiệp vào.
Database cho mỗi Dịch vụ
Sau khi chia nhỏ dịch vụ
Không có chủ thể đứng ra hoàn tác
Ngay cả khi dịch vụ thứ ba thất bại, hai dịch vụ trước đó đã được commit riêng biệt rồi.
Trong môi trường phân tán, việc rollback không diễn ra tự động. Chúng ta phải tự tạo ra việc hoàn tác bằng mã code, và phương pháp đó chính là Saga transaction (giao dịch bù đắp).
Nơi bài giảng này bắt đầu
Đây là cuộc đối thoại thực tế đã diễn ra
Một nhà phát triển Kakao đang hoạt động với tư cách là người phỏng vấn đã đưa ra chủ đề này trước.
Người phỏng vấn Kakao đã khơi gợi chủ đề này trước.
KNgười phỏng vấn Kakao (Nhà phát triển)Sẽ rất tốt nếu bạn tìm hiểu về giao dịch phân tán. Bạn có biết về nó không?
HHongÝ bạn là các khái niệm như transaction cục bộ hay transaction bù đắp (compensating transaction) đúng không?
KNgười phỏng vấn Kakao (Nhà phát triển)Ừ, ý tôi là mô hình SAGA. Khi làm người phỏng vấn, tôi luôn hỏi về những điều này nhưng có nhiều người không biết, nên tôi nhớ đến cậu và hỏi thử đấy.
HHongMình có nghe qua rồi nhưng chưa triển khai đến mức độ cốt lõi (core level). Mình chưa đi sâu vào khía cạnh Database per Service nên chỉ mới biết về mặt khái niệm thôi.
KNgười phỏng vấn Kakao (Nhà phát triển)Vậy thì tôi sẽ tổng hợp nội dung về chủ đề này rồi báo cho bạn biết nhé. Chúng ta hãy cùng nhau thực hiện và xem qua cả bài giảng nữa.
HHongĐược rồi. Hãy cùng tiến hành thôi.
Những việc SAGA làm
Chia nhỏ ra, và nếu thất bại thì đảo ngược lại quy trình.
Để xử lý một đơn hàng, cần phải đi qua nhiều dịch vụ khác nhau. Mỗi dịch vụ sẽ commit transaction cục bộ vào cơ sở dữ liệu của chính nó. Nếu thất bại ở giữa chừng, các công việc đã thành công trước đó sẽ được thực hiện hủy bỏ lần lượt theo chiều ngược lại.
Tạo đơn hàngCommit transaction cục bộ. Nếu thất bại, sẽ quay lại bước hủy đơn hàng
→
Phê duyệt thanh toánNếu thất bại ở đây, các giao dịch bù đắp của các bước trước đó sẽ được thực hiện
→
Trừ tồn khoDù thất bại ở bước cuối cùng, việc hủy thanh toán và hủy đơn hàng vẫn sẽ được thực hiện ngược lại
Không chỉ có một cách để hoàn tác. Việc Rollback do cơ sở dữ liệu thực hiện và Compensation (Bù đắp) do chúng ta tạo ra là hai việc khác nhau, và chúng ta sẽ làm rõ sự khác biệt đó ngay từ Phần 4.
Bạn sẽ học được gì
Theo thứ tự Hạn chế · Pattern · So sánh · Triển khai
Tại sao đây lại là vấn đềBắt đầu từ lý do tại sao ACID không thể vượt qua ranh giới dịch vụ dưới góc nhìn của MSA
Khái niệm cốt lõi của SAGAGiao dịch cục bộ (Local Transaction) và giao dịch bù đắp (Compensation Transaction). So sánh giữa SAGA hiện đại và ACID truyền thống.
ChoreographyCách thức các dịch vụ tự vận hành dựa trên sự kiện mà không cần bộ điều phối trung tâm
OrchestrationPhương thức chỉ thị trình tự từ trung tâm. So sánh chi tiết ưu nhược điểm của cả hai phương thức.
Rollback vs CompensationHai khía cạnh mà thuật ngữ "hoàn tác" ám chỉ
TCC và 3PCNhững lựa chọn khác ngoài SAGA. Với TCC, chúng ta sẽ cùng xem xét cả thiết kế MySQL.
Thực hành thanh toán điện tửTạo môi trường bằng Docker Compose và trực tiếp triển khai ba ứng dụng
Hai loại triển khai
Cộng hòa hay Quân chủ
Có hai cách chính để triển khai SAGA. Đây cũng là điểm thường gây ra nhiều ý kiến trái chiều nhất trong các buổi phỏng vấn.
CHOREOGRAPHY
Không có bộ điều phối trung tâm. Mỗi dịch vụ tự theo dõi sự kiện và thực hiện công việc tiếp theo.
Các dịch vụ được kết nối lỏng lẻo với nhau
Luồng xử lý không tập trung tại một nơi trong mã nguồn nên rất khó để nắm bắt toàn bộ.
Càng nhiều dịch vụ, các sự kiện càng trở nên chồng chéo.
ORCHESTRATION
Bộ điều phối (orchestrator) ở giữa sẽ chỉ thị thứ tự thực hiện.
Luồng xử lý tập trung tại một nơi nên rất dễ đọc.
Trình tự bù đắp khi thất bại cũng được quản lý tại một nơi duy nhất
Thay vào đó, điểm ở giữa đó có thể trở thành điểm lỗi duy nhất (single point of failure).
Bạn sẽ không chỉ học một trong hai. Trong phần 3, chúng ta sẽ so sánh luồng thành công/thất bại cũng như ưu nhược điểm của từng loại, và ở phần cuối cùng, chúng ta sẽ thực hành tạo cùng một ví dụ bằng cả hai cách.
Môi trường thực hành
Làm bằng gì
Ví dụ về thanh toán điện tử được chia thành ba ứng dụng để xây dựng. Môi trường được khởi chạy cùng một lúc bằng Docker Compose.
Spring Boot 3.2
Java 17
Docker Compose
Kafka
MySQL
IntelliJ IDEA
Cả mã nguồn khung (skeleton code) và bản hoàn thiện đều được bao gồm trong tài liệu. Nếu bạn cảm thấy áp lực khi phải viết từ đầu, bạn có thể bắt đầu từ mã nguồn khung.
Không chỉ dừng lại ở lý thuyết
Trong phần cuối cùng, chúng ta sẽ trực tiếp tạo ra ba ứng dụng và chạy chúng theo hai cách khác nhau.
Ở phần trước, chúng ta sẽ tìm hiểu lý do tại sao nó trở thành vấn đề và nắm bắt các mô hình, sau đó ở phần sau, chúng ta sẽ tạo lập môi trường và trực tiếp triển khai.
01
Giới thiệu bài giảng
Giới thiệu bài giảng
Mã thực hành khung (Skeleton code)
Mã thực hành cho bản hoàn thiện
Tài liệu tổng hợp bài giảng
Tài liệu tham khảo hữu ích
02
Vấn đề và hạn chế của giao dịch phân tán & Hạn chế của ACID dưới góc nhìn MSA và các mô hình giao dịch phân tán tương ứng
Mẫu SAGA có thể giải quyết được những vấn đề gì?
Tại sao giao dịch phân tán (distributed transaction) lại có vấn đề?
Các khái niệm cốt lõi cần biết trong việc triển khai SAGA trong giao dịch phân tán hiện đại
Mô hình SAGA hiện đại vs ACID truyền thống
Ưu nhược điểm của mô hình SAGA và các kịch bản tình huống phù hợp
Trắc nghiệm Phần 2
03
Các triển khai tiêu biểu của SAGA (Choreography vs Orchestration)
SAGA 패턴의 첫번째 독립적인 Choreography 성공과 실패 그에따른 고려점
Ưu điểm và nhược điểm của Choreography độc lập, chế độ cộng hòa trong mô hình SAGA
Mô hình SAGA chế độ quân chủ Orchestration tập trung trung tâm
Ưu nhược điểm của mô hình Orchestration tập trung (Quân chủ) trong SAGA pattern
So sánh chi tiết mô hình Choreography vs Orchestration
Câu đố phần 3
04
Kỹ thuật giao dịch phân tán có những ưu nhược điểm khác với SAGA
Rollback vs Compensation của SAGA
Mô hình TCC (Try-Confirm-Cancel) và thiết kế MySQL thực tế tương ứng
So sánh 3PC (Three-Phase Commit)
Trắc nghiệm phần 4
05
Chuẩn bị thực hành và cấu hình môi trường cho SAGA
Giải thích tổng quan về kiến trúc và các thành phần triển khai sẽ thực hành thông qua ví dụ về thanh toán điện tử
Xây dựng môi trường tinh gọn và kiến trúc sử dụng docker-compose
Nhu cầu và mục đích của module Common dưới góc nhìn MSA
Trắc nghiệm Phần 5
06
Thực hành SAGA (Choreography vs Orchestration)
Ứng dụng đầu tiên đóng vai trò là cửa ngõ ra vào cho mọi yêu cầu
Ứng dụng thứ hai thực hiện xử lý giai đoạn trung gian
Ứng dụng cuối cùng cho phép mất mát dữ liệu và kiểm thử
Câu đố Phần 6
Dành cho những người như thế này
Khóa học này dành cho ai?
Những nhà phát triển không chuyên ngành nhưng muốn thử thách với việc thiết kế lưu lượng truy cập lớn
Những người đã từng nghe về MSA và SAGA nhưng chưa biết phương pháp thiết kế cụ thể
Lập trình viên Backend đang trăn trở về khả năng mở rộng lưu lượng truy cập và khả năng phục hồi sau sự cố
Những nhà phát triển muốn thiết kế các giao dịch phân tán phức tạp, vượt xa các microservices đơn thuần.
Thị trường hiện nay
Câu chuyện về việc AI sẽ thay thế lập trình viên
Tuyển dụng mới đang giảm dần, và các doanh nghiệp chỉ muốn chọn những người đã được kiểm chứng. Đây là những bài báo xuất hiện trong vài tháng gần đây.
Krafton, công ty đạt được kết quả kinh doanh cao kỷ lục lịch sử, đã bắt đầu cắt giảm nhân sự. Lý do được đưa ra là để chuyển đổi thành một doanh nghiệp 'AI First'.
Các doanh nghiệp chuyên về phần mềm đang ngừng tuyển dụng lập trình viên mới. Cũng có dự báo cho rằng việc tuyển dụng lập trình viên cấp độ sơ cấp sẽ giảm mạnh tới 77%.
53% nhà thiết kế trò chơi đã trả lời rằng "AI sẽ thay thế công việc của tôi". Các trường hợp thôi việc theo khuyến nghị cũng đã được báo cáo.
Khi doanh nghiệp càng bất an, phía người được tuyển dụng càng phải thể hiện sự khác biệt rõ rệt hơn. Việc học cuối cùng vẫn là do bản thân tự thực hiện, nhưng tùy vào việc bạn nhìn nhận điều gì và dưới góc độ nào mà độ sâu trong cách diễn đạt sẽ khác nhau dù cùng bỏ ra một lượng thời gian như nhau. Bài giảng này được tạo ra để truyền tải góc nhìn đó.
Đánh giá khóa học
Chia sẻ từ những người đã học trước đó
Tôi đã trích dẫn nguyên văn từ đánh giá khóa học trên Inflearn.
"Tôi đã xem bài giảng rất kỹ. Tôi thực sự rất thích cách bạn trình bày vô số sơ đồ ở phần đầu để giải thích về kiến trúc tổng thể, và tôi cũng có thể kiểm tra những kiến thức còn thiếu hoặc các khái niệm cần hệ thống lại thông qua tệp tóm tắt bài giảng riêng biệt. Ngoài ra, việc bạn giải thích lại từng bước trong quá trình ôn tập, cùng với những câu chuyện thực tế và góc nhìn chuyên môn trong công việc cũng vô cùng hữu ích."
Kẻ cuồng phát triển · Viết sau khi hoàn thành 92% khóa học
"Cá nhân tôi nghĩ đây có lẽ là một trong những bài giảng hữu ích nhất trên Inflearn. Nội dung học tập thực sự rất đầy đủ và chất lượng. Xin cảm ơn."
keny · Viết sau khi hoàn thành 92% khóa học
"Đây là khoảng thời gian tuyệt vời để tôi có thể học về giao dịch phân tán (distributed transaction)!"
파이리이2 · Viết sau khi hoàn thành 100% khóa học
Giảng viên
Hai nhà phát triển đương nhiệm đã cùng nhau tạo ra nó.
Được tạo ra bởi Choi, một nhà phát triển 12 năm kinh nghiệm đang phát triển máy chủ tại trụ sở Kakao và cũng hoạt động với tư cách là người phỏng vấn, cùng với Hong, một nhà phát triển máy chủ nền tảng tại Pangyo.
KAKAO · BACKEND ENGINEER · 12 năm kinh nghiệm · Người phỏng vấn
Choi
Tôi là nhà phát triển Backend với 12 năm kinh nghiệm đang phát triển server tại trụ sở Kakao, đồng thời cũng đang hoạt động với tư cách là người phỏng vấn. Trong các buổi phỏng vấn, tôi chủ yếu xem xét khả năng thiết kế hơn là các cú pháp lập trình. Tôi đã đưa nguyên quan điểm đó vào trong bài giảng này.
"Trong các buổi phỏng vấn, tôi hầu như không hỏi về cú pháp lập trình. Tôi xem xét liệu ứng viên có khả năng thiết kế hay không."
Hiện là nhà phát triển máy chủ tại trụ sở chính Kakao · Người phỏng vấn · Chuyên ngành Khoa học máy tính
Lưu lượng truy cập lớnKiến trúc phân tánNgười phỏng vấnBackend
Người chia sẻ kiến thức · Phát triển máy chủ nền tảng Pangyo
Hong
Tôi đang đảm nhận việc phát triển máy chủ nền tảng tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức để chia sẻ các phương pháp tự học cũng như những vấn đề và giải pháp gặp phải trong thực tế. Các bài giảng không được thực hiện một mình mà được xây dựng cùng với nhiều nhà phát triển đang làm việc trong ngành.
"Chia nhỏ dịch vụ thì dễ, nhưng xử lý thất bại sau khi chia nhỏ mới là việc khó."
Phát triển máy chủ nền tảngHệ thống phân tánNhiều bài giảng Backend
Câu hỏi thường gặp
Câu hỏi thường gặp về bài giảng Giao dịch phân tán (Distributed Transaction)
Hỏi: Tôi có thể tham gia khóa học ngay cả khi không có kinh nghiệm về MSA không?
⌄
Mức độ được thiết lập dành cho người mới bắt đầu. Bắt đầu từ Phần 2 với nội dung "Tại sao giao dịch phân tán lại là vấn đề". Vì tôi sẽ cho bạn thấy điều gì sẽ bị phá vỡ nếu mỗi dịch vụ có một cơ sở dữ liệu riêng biệt, nên ngay cả khi bạn chưa từng thực tế vận hành microservices, bạn vẫn có thể theo kịp.
Q.Tôi sẽ được học về Choreography hay Orchestration?
⌄
Học cả hai. Trong phần 3, chúng ta sẽ tìm hiểu về luồng thành công/thất bại, ưu nhược điểm của từng loại và so sánh chi tiết. Ở phần cuối, chúng ta sẽ thực hành triển khai cùng một ví dụ thanh toán điện tử theo cả hai cách. Để trả lời được câu hỏi "Tại sao bạn lại chọn phương pháp đó?" trong buổi phỏng vấn, bạn cần phải đặt cả hai lên bàn cân so sánh trực tiếp.
Hỏi: Bài thực hành sẽ tạo ra cái gì?
⌄
Đây là ví dụ về thanh toán điện tử. Chúng ta sẽ tạo ra ba ứng dụng: một ứng dụng đóng vai trò là cổng vào cho mọi yêu cầu, một ứng dụng chịu trách nhiệm xử lý trung gian, và một ứng dụng cuối cùng nơi cho phép xảy ra thất thoát dữ liệu. Môi trường sẽ được thiết lập bằng Docker Compose, đồng thời chúng ta cũng sẽ tìm hiểu lý do tại sao các module chung lại cần thiết trong MSA.
Q.Ngoài SAGA ra thì có đề cập đến các pattern khác không?
⌄
Phần 4 chính là nội dung đó. Chúng ta sẽ cùng xem xét mẫu TCC (Try-Confirm-Cancel) cùng với thiết kế MySQL thực tế, đồng thời so sánh nó với 3PC (Three-Phase Commit). Vì SAGA không phải lúc nào cũng là đáp án duy nhất, mục tiêu của phần này là giúp bạn có thể phán đoán xem giải pháp nào phù hợp với tình huống nào.
Q.Nội dung này có giúp ích cho việc chuẩn bị phỏng vấn không?
⌄
Khóa học này được xây dựng bởi các nhà phát triển đang là người phỏng vấn tại Kakao, với nội dung dựa trên các câu hỏi thực tế trong các buổi phỏng vấn. Thay vì bắt bạn học thuộc lòng các câu trả lời có sẵn, khóa học được thiết kế để bạn có thể giải thích được các ưu nhược điểm và sự đánh đổi (trade-off). Tài liệu cũng bao gồm cả tệp tóm tắt bài giảng.
Tạo mã code cho việc hoàn tác
Sau khi chia nhỏ dịch vụ, thứ cần thiết không phải là một transaction lớn hơn mà là một thiết kế khác.
Nếu bị tắc nghẽn một mình sẽ mất rất nhiều thời gian. Có một không gian riêng để bạn có thể thoải mái chia sẻ từ những phần vướng mắc khi nghe bài giảng, những câu hỏi phát sinh khi áp dụng vào dịch vụ của chính mình, cho đến những câu chuyện về sự nghiệp và thực tế công việc.
OPEN CHAT · Cộng đồng nhà phát triển
Chúng ta chia sẻ những gì?
Chúng tôi chia sẻ về những vấn đề thực tế gặp phải trong công việc, các cấu trúc mà người khác đã lựa chọn, cũng như những câu chuyện về sự nghiệp lập trình viên. Các câu hỏi liên quan đến bài giảng cũng luôn được chào đón.
"Những chỗ bạn bị vướng mắc thường thì người khác cũng sẽ vướng mắc. Hỏi người đã đi trước là cách nhanh nhất."
Câu hỏi về bài giảngTrường hợp áp dụng thực tếCâu chuyện nghề nghiệp
Tôi bắt đầu học lập trình sau một thời gian dài lười biếng ở nhà và cảm thấy hứng thú với nó, hiện tại tôi đang đảm nhận việc phát triển máy chủ nền tảng (platform server) tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp tôi đã học cũng như những vấn đề và giải pháp khác nhau mà các bạn có thể gặp phải trong thực tế.
Bài giảng không chỉ được tạo ra từ kiến thức của riêng tôi. Mọi bài giảng đều có sự đồng hành của những người cộng sự.
Chủ yếu là lý thuyết. Tôi nghĩ lý thuyết chiếm khoảng 80% và thực hành chiếm 20%. Có vẻ như không phù hợp với những người muốn biết lý thuyết và muốn biết các ví dụ mã nguồn sử dụng thực tế. Tuy nhiên, nó phù hợp với những người hoàn toàn không biết gì về pattern.
Xin chào anh Sim Gyu-hwan, cảm ơn anh đã để lại đánh giá. Tôi nghĩ thời gian chỉ code đơn thuần sẽ không hữu ích cho mọi người nên đã xử lý source code thực tế một cách đơn giản, lần sau tôi sẽ chuẩn bị gần với thực chiến hơn.
Cảm ơn vì đánh giá tốt!!
Cá nhân tôi nghĩ đây có thể là một trong những khóa học hữu ích nhất trên Inflearn. Nhờ đó mà tôi có thể học được những nội dung thực sự bổ ích. Cảm ơn bạn.
Tôi đang phát triển server tại Kakao và đã giúp đỡ tạo ra khóa học này. Thực ra tôi muốn giấu chức vụ phỏng vấn viên... 😭😭 Nhưng tôi nghĩ đây thực sự là một chủ đề rất tuyệt vời nên đã quyết định tham gia khóa học này.
Như tôi đã nói, khi tôi thực sự tiến hành phỏng vấn tại Kakao, tôi không đặc biệt quan tâm đến khía cạnh lập trình. Hầu hết các câu hỏi đều xoay quanh việc liệu ứng viên có thể thiết kế kiến trúc hay không và tôi coi trọng rất nhiều việc `người này có thể hình dung ra những gì`.
Từ góc độ này, có thể phát sinh nhiều vấn đề khác nhau, và một trong những yếu tố đó chính là distributed transaction này. Vì vậy tôi nghĩ khóa học này càng có ích hơn.
Nếu các bạn nghe khóa học này và có thể trả lời những câu hỏi như thế này thì tôi nghĩ các bạn đã học một cách thực sự ý nghĩa.
1. Hãy cho biết về hai pattern của SAGA (Choreography VS Orchestration)
2. Hãy cho biết về sự khác biệt và ưu nhược điểm của hai pattern này. Đặc biệt tôi tò mò về phần throughput và các vấn đề phát sinh từ đó.
3. Bạn có biết khái niệm local transaction không?? (Nếu không biết thì tôi sẽ giải thích) Vậy trong mối quan hệ với những transaction như thế này, distributed transaction có thể được quản lý như thế nào??
4. Hãy cho biết tổng thể những gì bạn biết về góc độ distributed transaction. Tôi rất tò mò.
5. Bạn có biết Database per Service là góc độ như thế nào không??
Đây là ví dụ về những câu hỏi tôi thực sự đặt ra khi vào phỏng vấn. Nếu các bạn biết và có thể trả lời những phần này thì sẽ rất có ích.
Xin hãy quan tâm nhiều đến khóa học. Cảm ơn!