paint-brush
Tiết lộ Kiến trúc: Các bài viết chính để hiểu về Hệ thống Phân tán!by@bhavdeepsethi
867
867

Tiết lộ Kiến trúc: Các bài viết chính để hiểu về Hệ thống Phân tán!

Bhavdeep Sethi6m2024/04/28
Read on Terminal Reader

Với sự ra đời của internet và các thiết bị thông minh hơn, lượng dữ liệu cần xử lý đã bùng nổ. Các hoạt động đơn giản hàng ngày như đặt xe Uber, xem chương trình trên Netflix, tìm kiếm đơn giản trên Google, mua sắm trực tuyến hoặc tương tác với mạng xã hội, tất cả những hành động tầm thường mà chúng ta coi là đương nhiên đều được cung cấp bởi hàng trăm dịch vụ phân phối. Tất cả các dịch vụ này được xây dựng trên nền tảng của một số tài liệu cơ bản về hệ thống phân tán. Mặc dù danh sách này chắc chắn không đầy đủ nhưng đây là một số bài viết yêu thích của tôi đã có tác động lớn đến thế giới hệ thống phân tán.
featured image - Tiết lộ Kiến trúc: Các bài viết chính để hiểu về Hệ thống Phân tán!
Bhavdeep Sethi HackerNoon profile picture
0-item


Hệ thống phân tán là hệ thống trong đó sự cố của một máy tính mà bạn thậm chí không biết là có tồn tại có thể khiến máy tính của bạn không thể sử dụng được.


Câu nói nổi tiếng này của Leslie Lamport, người đoạt giải AM Turing, tóm tắt những thách thức trong việc xây dựng và duy trì hệ thống phân tán. Nhưng tại sao lại cần những hệ thống phức tạp như vậy?


Với sự ra đời của internet và các thiết bị thông minh hơn, lượng dữ liệu cần xử lý đã bùng nổ. Các hoạt động đơn giản hàng ngày như đặt xe Uber, xem chương trình trên Netflix, tìm kiếm đơn giản trên Google, mua sắm trực tuyến hoặc tương tác với mạng xã hội, tất cả những hành động tầm thường mà chúng ta coi là đương nhiên đều được cung cấp bởi hàng trăm dịch vụ phân phối. Tất cả các dịch vụ này được xây dựng trên nền tảng của một số tài liệu cơ bản về hệ thống phân tán.


Mặc dù danh sách này chắc chắn không đầy đủ nhưng đây là một số bài viết yêu thích của tôi đã có tác động lớn đến thế giới hệ thống phân tán.


Định lý CAP

Mặc dù không phải là một bài báo truyền thống, nhưng Eric Brewer lần đầu tiên giới thiệu nó như một phỏng đoán trong bài phát biểu quan trọng tại Hội nghị chuyên đề ACM năm 2000 về Nguyên tắc tính toán phân tán (PODC). Bài báo sau đó đã được chính thức hóa và chứng minh bởi Nancy Lynch và Seth Gilbert trong bài báo Phỏng đoán của Brewer và tính khả thi của các dịch vụ web nhất quán, có sẵn, có khả năng chịu phân vùng


Định lý CAP của Eric Brewer là một khái niệm cơ bản trong lý thuyết hệ thống phân tán, nêu rõ rằng một kho dữ liệu phân tán không thể cung cấp đồng thời nhiều hơn hai trong số ba đảm bảo: tính nhất quán, tính khả dụng và dung sai phân vùng. Tất cả các giấy tờ khác được đề cập ở đây đều áp dụng nguyên tắc trên và thực hiện những cân bằng cần thiết trong hệ thống của họ.


Định lý CAP luôn dẫn đến nhiều cuộc thảo luận dựa trên sự hiểu biết của độc giả về bài báo. " Một phê bình về định lý CAP " của Martin Kleppmann cung cấp một khuôn khổ tốt hơn để thảo luận về sự cân bằng.


Paxos thật đơn giản

Trong bài báo chuyên đề từ năm 2001 này, Leslie Lamport trình bày thuật toán Paxos để đạt được sự đồng thuận trong hệ thống phân tán một cách dễ dàng và dễ tiếp cận. Các giao thức đồng thuận dựa trên Paxos tạo thành xương sống của nhiều cơ sở dữ liệu phân tán, hệ thống lưu trữ, nền tảng nhắn tin và dịch vụ điều phối được nhiều công ty công nghệ sử dụng. Nó ảnh hưởng nặng nề đến các công nghệ khác như Chubby của Google, Spanner của Google, Apache ZooKeeper, Apache BookKeeper, v.v.

Paxos thường được sử dụng để bầu chọn lãnh đạo


Hệ thống tệp của Google

Bài viết về Hệ thống tệp của Google (GFS) giới thiệu một hệ thống tệp phân tán có thể mở rộng cho các ứng dụng phân tán lớn, sử dụng nhiều dữ liệu trên phần cứng thông dụng, đây là nền tảng cho nhiều hệ thống tệp phân tán sau đó. GFS là nguồn cảm hứng chính cho HDFS, hệ thống tệp phân tán được sử dụng bởi khung Apache Hadoop và cuối cùng là Amazon S3 (mặc dù s3 về cơ bản là khác nhau).


MapReduce: Xử lý dữ liệu đơn giản hóa trên các cụm lớn

Bài viết này giới thiệu mô hình lập trình MapReduce, thể hiện cách tiếp cận có thể mở rộng để xử lý các bộ dữ liệu quy mô lớn bằng cơ sở hạ tầng điện toán phân tán. MapReduce đóng vai trò then chốt trong cuộc cách mạng "dữ liệu lớn", cho phép các tổ chức khai thác sức mạnh của điện toán phân tán để phân tích và rút ra những hiểu biết sâu sắc từ các bộ dữ liệu khổng lồ. Bạn có thể thấy việc kết hợp GFS và MapReduce đã cho phép Google xử lý hàng Petabyte dữ liệu như thế nào để sắp xếp dữ liệu của "internet".


Bài viết MapReduce (cùng với GFS) đã truyền cảm hứng cho sự phát triển của toàn bộ hệ sinh thái gồm các công cụ và thư viện được xây dựng xung quanh Apache Hadoop như Apache Hive (cơ sở hạ tầng kho dữ liệu được xây dựng trên Hadoop), Apache Pig (ngôn ngữ luồng dữ liệu cấp cao cho Hadoop), Apache Spark (công cụ xử lý dữ liệu trong bộ nhớ), Apache HBase (cơ sở dữ liệu NoSQL phân tán) và nhiều công cụ khác.


Bigtable: Hệ thống lưu trữ phân tán cho dữ liệu có cấu trúc

Bài báo Bigtable trình bày một hệ thống lưu trữ phân tán để quản lý dữ liệu có cấu trúc tại Google. Sau khi MapReduce và GFS cho phép Google xử lý dữ liệu trên quy mô lớn theo cách tiết kiệm chi phí, bước tiếp theo là cho phép truy cập vào dữ liệu một cách đáng tin cậy và có tính khả dụng cao. BigTable có thể cung cấp giải pháp linh hoạt, hiệu suất cao cho các ứng dụng như lập chỉ mục web, Google Earth và Google Finance.


Giống như MapReduce đã cách mạng hóa kỷ nguyên "dữ liệu lớn", bài báo BigTable là động lực cho kỷ nguyên "NoSQL". Nhiều nguyên tắc thiết kế và khái niệm kiến trúc được giới thiệu trong bài báo Bigtable đã được sử dụng trong các công nghệ như "Apache HBase", "Cassandra", "MongoD", v.v. Mặc dù một số ứng dụng này có thể sử dụng các mô hình dữ liệu khác nhau (ví dụ: MongoDB), chúng chia sẻ các nguyên tắc chung như khả năng mở rộng theo chiều ngang, khả năng chịu lỗi và phân chia tự động.


Dynamo: Cửa hàng giá trị khóa có sẵn cao của Amazon

Dynamo Paper trình bày thiết kế và triển khai cửa hàng khóa-giá trị có tính sẵn sàng cao do Amazon phát triển. Dynamo đã giải quyết nhu cầu truy cập theo thời gian thực vào dữ liệu có tính linh hoạt cao, chẳng hạn như các mặt hàng trong giỏ hàng của bạn. Bài viết đã giới thiệu khái niệm "tính nhất quán cuối cùng" như một nguyên tắc cốt lõi của thiết kế hệ thống phân tán, cho phép đảm bảo tính nhất quán thoải mái để đạt được tính sẵn sàng và hiệu suất cao (định lý CAP!).


Từ chính bài báo, “So với Bigtable, Dynamo nhắm mục tiêu các ứng dụng chỉ yêu cầu quyền truy cập khóa/giá trị với trọng tâm chính là tính sẵn sàng cao, nơi các bản cập nhật không bị từ chối ngay cả khi có phân vùng mạng hoặc lỗi máy chủ”.


Tương tự như BigTable, bài báo Dynamo có ảnh hưởng lớn đến các công nghệ tiếp theo như Riak, Voldemort, Cassandra và thậm chí cả các công nghệ truyền phát sự kiện như Apache Kafka.


Cassandra—Một hệ thống lưu trữ có cấu trúc phi tập trung

Sự tăng trưởng nhanh chóng của Facebook đòi hỏi một giải pháp cơ sở dữ liệu có khả năng xử lý lượng dữ liệu khổng lồ và hỗ trợ số lượng lớn người dùng đồng thời. Trong khi BigTable và Dynamo có sức ảnh hưởng khá lớn thì Cassandra là công nghệ đầu tiên đi trước một bước so với những công nghệ khác. Bằng cách phát hành nó dưới dạng đóng góp nguồn mở theo Giấy phép Apache cùng với việc xuất bản bài báo , Facebook đã góp phần tạo điều kiện cho toàn bộ ngành tiếp cận công nghệ đó.


Cassandra tạo sự khác biệt so với hai phiên bản trước bằng cách cung cấp mô hình tính nhất quán có thể điều chỉnh, cho phép người dùng lựa chọn giữa tính nhất quán mạnh mẽ (như BigTable) và tính nhất quán cuối cùng (như Dynamo) dựa trên yêu cầu ứng dụng của họ.


ZooKeeper: Phối hợp không cần chờ đợi cho các hệ thống có quy mô Internet

Bài viết này giới thiệu Apache ZooKeeper và trình bày các nguyên tắc thiết kế cũng như thuật toán của nó để cung cấp các dịch vụ điều phối có độ tin cậy cao và có khả năng mở rộng trong các hệ thống phân tán. Trước khi giới thiệu ZooKeeper, các nhà phát triển phần mềm thường phải triển khai các giải pháp đặc biệt của riêng họ để phối hợp và đồng thuận phân tán trong các hệ thống phân tán.


ZooKeeper đề xuất một dịch vụ tập trung để phối hợp phân tán, cung cấp các tính năng cơ bản như khóa phân tán, bầu chọn người lãnh đạo và quản lý cấu hình. Điều này cho phép đơn giản hóa việc phát triển các ứng dụng phân tán bằng cách giảm tải logic phối hợp phức tạp cho ZooKeeper. Một trong những trường hợp sử dụng phổ biến nhất khi sử dụng Zookeeper là để khám phá dịch vụ.


Apache Kafka: Hệ thống nhắn tin phân tán để xử lý nhật ký

Bài viết này giới thiệu Apache Kafka, một hệ thống nhắn tin phân tán được thiết kế để xử lý các luồng sự kiện có thông lượng cao, có khả năng chịu lỗi. Ấn phẩm của Kafka dưới dạng một bài nghiên cứu và bản phát hành nguồn mở của nó dưới dạng một dự án Apache đã thiết lập nó như một hệ thống nhắn tin tiêu chuẩn cho các kiến trúc xử lý dữ liệu thời gian thực và có khả năng mở rộng cao và có khả năng chịu lỗi cũng như kiến trúc hướng sự kiện.


Kafka đã giới thiệu một hệ thống nhắn tin có khả năng mở rộng cao và có khả năng chịu lỗi được thiết kế để xử lý khối lượng lớn luồng dữ liệu trong thời gian thực. Kafka có ảnh hưởng khá lớn trong việc hỗ trợ phát triển kiến trúc Lambda, kết hợp xử lý hàng loạt và xử lý luồng để xử lý khối lượng dữ liệu lớn với độ trễ thấp và thông lượng cao.


Bộ dữ liệu phân tán có khả năng phục hồi: Sự trừu tượng có khả năng chịu lỗi cho tính toán cụm trong bộ nhớ

Bài viết này giới thiệu Bộ dữ liệu phân tán linh hoạt (RDD), tính chất trừu tượng cốt lõi trong Apache Spark, cho phép xử lý dữ liệu trong bộ nhớ, có khả năng chịu lỗi trên các cụm phân tán. Công cụ thực thi trong bộ nhớ của Spark cung cấp hiệu suất nhanh hơn đáng kể so với MapReduce (có mô hình thực thi dựa trên đĩa), đặc biệt đối với các thuật toán lặp, học máy và phân tích tương tác.


Các bài viết này đề cập đến nhiều chủ đề trong hệ thống phân tán, bao gồm hệ thống lưu trữ, thuật toán đồng thuận, khả năng chịu lỗi và khả năng mở rộng. Đọc chúng sẽ cung cấp nền tảng vững chắc về các nguyên tắc và thực tiễn xây dựng và quản lý hệ thống phân tán.


Nếu bạn đang bắt đầu hành trình của mình trong các hệ thống phân tán và muốn tìm hiểu thêm hoặc bạn đã là chuyên gia và chỉ muốn làm mới các nguyên tắc cơ bản của mình, thì không có cách nào tốt hơn để học hơn là đọc một số bài viết cơ bản về hệ thống phân tán.