Hệ thống phân tán theo định nghĩa đơn giản nhất của nó là một nhóm các máy tính làm việc cùng nhau xuất hiện với tư cách là một đối với người dùng cuối. Các máy có chung một trạng thái, chạy đồng thời và có thể hoạt động độc lập mà không ảnh hưởng đến thời gian hoạt động của toàn hệ thống. Sự thật là quản lý những hệ thống như vậy là một chủ đề phức tạp chứa đầy cạm bẫy.
Tổng quan về hệ thống
Hệ thống phân tán cho phép chia sẻ tài nguyên (bao gồm cả phần mềm) được kết nối với mạng cùng một lúc.
Ví dụ về phân phối hệ thống:
- Xếp truyền thống. Các cơ sở dữ liệu này được lưu trữ trên hệ thống tệp của một máy. Bất cứ khi nào người dùng muốn nhận thông tin, anh ta sẽ giao tiếp trực tiếp với máy này. Để phân phối hệ thống cơ sở dữ liệu này, bạn cần chạy nó trên nhiều PC cùng lúc.
- Kiến trúc phân tán.
Hệ thống phân táncho phép bạn chia tỷ lệ theo chiều ngang và chiều dọc. Ví dụ, cách duy nhất để xử lý nhiều lưu lượng truy cập hơn là nâng cấp phần cứng chạy cơ sở dữ liệu. Đây được gọi là chia tỷ lệ dọc. Tỷ lệ mở rộng theo chiều dọc tốt đến một giới hạn nhất định, sau đó, ngay cả thiết bị tốt nhất cũng không thể đáp ứng được việc cung cấp lưu lượng truy cập cần thiết.
Chia tỷ lệ theo chiều ngang có nghĩa là thêm nhiều máy tính hơn, không phải nâng cấp phần cứng trên một máy. Việc mở rộng quy mô theo chiều dọc làm tăng hiệu suất cho các khả năng phần cứng mới nhất trong các hệ thống phân tán. Những cơ hội này là không đủ đối với các công ty công nghệ có khối lượng công việc từ trung bình đến nặng. Điều tốt nhất về chia tỷ lệ ngang là không có giới hạn về kích thước. Khi hiệu suất suy giảm, một máy khác chỉ cần được thêm vào, về nguyên tắc, có thể thực hiện vô thời hạn.
Ở cấp độ công ty, một hệ thống kiểm soát phân tán thường bao gồm nhiều bước khác nhau. Trong quy trình kinh doanh ở những nơi hiệu quả nhất của mạng máy tính doanh nghiệp. Ví dụ: trong một bản phân phối điển hình sử dụng mô hình hệ thống phân tán ba cấp, việc xử lý dữ liệu được thực hiện trên PC tại vị trí của người dùng, quá trình xử lý nghiệp vụ được thực hiện trên một máy tính từ xa và việc truy cập cơ sở dữ liệu và xử lý dữ liệu được thực hiện trên một máy tính hoàn toàn khác cung cấp quyền truy cập tập trung cho nhiều quy trình. Thông thường, loại máy tính phân tán nàysử dụng mô hình tương tác giữa máy khách-máy chủ.
Nhiệm vụ chính
Các nhiệm vụ chính của hệ thống điều khiển phân tán bao gồm:
- Tính minh bạch - Đạt được một hình ảnh hệ thống duy nhất mà không ẩn vị trí, quyền truy cập, di chuyển, đồng thời, chuyển đổi dự phòng, di dời, bền bỉ và chi tiết tài nguyên cho người dùng.
- Tính mở - đơn giản hóa việc thiết lập và thay đổi mạng.
- Độ tin cậy - So với một hệ thống điều khiển đơn lẻ, hệ thống này phải đáng tin cậy, nhất quán và có xác suất cao để che giấu lỗi.
- Hiệu suất - So với các mô hình khác, các mô hình được phân phối cung cấp một sự gia tăng hiệu suất.
- Có thể mở rộng - Các hệ thống điều khiển phân tán này phải có thể mở rộng về lãnh thổ, quản lý hoặc quy mô.
Nhiệm vụ của hệ thống phân phối bao gồm:
- Bảo mật là một vấn đề lớn trong môi trường phân tán, đặc biệt là khi sử dụng mạng công cộng.
- Khả năng chịu lỗi - có thể khó khăn khi mô hình được chế tạo bằng các thành phần không đáng tin cậy.
- Điều phối và phân phối các nguồn lực - có thể khó khăn nếu không có các giao thức thích hợp hoặc các chính sách bắt buộc.
Môi trường máy tính phân tán
(DCE) là một tiêu chuẩn công nghiệp được sử dụng rộng rãi hỗ trợ tính toán phân tán như vậy. Trên Internet, các nhà cung cấp bên thứ ba cung cấp một số dịch vụ chung,phù hợp với mô hình này.
Điện toán lưới là một mô hình tính toán với kiến trúc phân tán của một số lượng lớn máy tính liên quan đến việc giải quyết một vấn đề phức tạp. Trong mô hình điện toán lưới, các máy chủ hoặc máy tính cá nhân thực hiện các tác vụ độc lập và được kết nối lỏng lẻo với nhau bằng Internet hoặc mạng tốc độ thấp.
Dự án điện toán lưới lớn nhất là SETI @ home, trong đó các chủ sở hữu máy tính cá nhân tình nguyện thực hiện một số chu trình xử lý đa nhiệm bằng máy tính của họ cho dự án Tìm kiếm Trí thông minh Ngoài Trái đất (SETI). Sự cố máy tính này sử dụng hàng nghìn máy tính để tải xuống và tìm kiếm dữ liệu của kính thiên văn vô tuyến.
Một trong những ứng dụng đầu tiên của điện toán lưới là phá mã mật mã bởi một nhóm hiện nay được gọi là phân phối.net. Nhóm này cũng mô tả mô hình của họ là máy tính phân tán.
Mở rộng cơ sở dữ liệu
Việc lan truyền thông tin mới từ chủ nhân sang nô lệ không xảy ra ngay lập tức. Trên thực tế, có một khoảng thời gian mà bạn có thể nhận được thông tin lỗi thời. Nếu không đúng như vậy, hiệu suất ghi sẽ bị ảnh hưởng, vì các hệ thống phân tán sẽ phải đợi dữ liệu được truyền đồng bộ. Họ đi kèm với một số thỏa hiệp.
Sử dụng phương pháp tiếp cận cơ sở dữ liệu nô lệ, có thể mở rộng lưu lượng đọc ở một mức độ nào đó. Có rất nhiều lựa chọn ở đây. Nhưng bạn chỉ cần chia lưu lượng ghi thành nhiềumáy chủ bởi vì nó không thể xử lý nó. Một cách là sử dụng chiến lược sao chép nhiều tổng thể. Ở đó, thay vì nô lệ, có một số nút chính hỗ trợ đọc và ghi.
Một phương pháp khác được gọi là sharding. Với nó, máy chủ được chia thành nhiều máy chủ nhỏ hơn, được gọi là các mảnh. Các phân đoạn này có các mục nhập khác nhau, các quy tắc được tạo về các mục nhập đi vào phân đoạn nào. Điều rất quan trọng là phải tạo ra một quy tắc sao cho dữ liệu được phân phối đồng đều. Một cách tiếp cận khả thi là xác định phạm vi theo một số thông tin bản ghi.
Khóa phân đoạn này nên được chọn rất cẩn thận, vì tải trọng không phải lúc nào cũng bằng với cơ sở của các cột tùy ý. Phân đoạn duy nhất nhận được nhiều yêu cầu hơn các phân đoạn khác được gọi là điểm phát sóng và họ cố gắng ngăn nó hình thành. Sau khi phân tách, dữ liệu hiệu chuẩn lại trở nên vô cùng đắt đỏ và có thể dẫn đến thời gian ngừng hoạt động đáng kể.
Thuật toán đồng thuận cơ sở dữ liệu
DB rất khó triển khai trong các hệ thống bảo mật phân tán vì chúng yêu cầu mỗi nút thương lượng hành động ngắt hoặc cam kết chính xác. Chất lượng này được gọi là sự đồng thuận và là vấn đề cơ bản trong việc xây dựng hệ thống phân phối. Việc đạt được loại thỏa thuận cần thiết cho vấn đề "cam kết" rất đơn giản nếu các quy trình liên quan và mạng hoàn toàn đáng tin cậy. Tuy nhiên, các hệ thống thực phải tuân theo một sốcác lỗi có thể xảy ra đối với các quy trình mạng, thông báo bị mất, bị hỏng hoặc trùng lặp.
Điều này đặt ra một vấn đề và không thể đảm bảo rằng sẽ đạt được sự đồng thuận chính xác trong một khoảng thời gian giới hạn trên một mạng không đáng tin cậy. Trong thực tế, có những thuật toán đạt được sự đồng thuận khá nhanh trong một mạng không đáng tin cậy. Cassandra thực sự cung cấp các giao dịch nhẹ thông qua việc sử dụng thuật toán Paxos để tạo sự đồng thuận phân tán.
Tính toán phân tán là chìa khóa cho làn sóng xử lý dữ liệu lớn đã được sử dụng trong những năm gần đây. Đó là một phương pháp chia nhỏ một nhiệm vụ khổng lồ, chẳng hạn như 100 tỷ bản ghi tích lũy, trong đó không một máy tính nào có khả năng tự làm bất cứ điều gì thực tế, thành nhiều tác vụ nhỏ hơn có thể phù hợp với một máy duy nhất. Nhà phát triển chia nhiệm vụ lớn của mình thành nhiều nhiệm vụ nhỏ hơn, thực hiện song song trên nhiều máy, thu thập dữ liệu một cách thích hợp, sau đó vấn đề ban đầu sẽ được giải quyết.
Cách tiếp cận này cho phép bạn chia tỷ lệ theo chiều ngang - khi có một nhiệm vụ lớn, chỉ cần thêm nhiều nút hơn vào tính toán. Các tác vụ này đã được thực hiện trong nhiều năm bởi mô hình lập trình MapReduce liên quan đến việc triển khai để xử lý song song và tạo các tập dữ liệu lớn bằng cách sử dụng thuật toán phân tán trên một cụm.
Hiện tại, MapReduce đã hơi lỗi thời và mang lại một số vấn đề. Các kiến trúc khác đã xuất hiện để giải quyết những vấn đề này. Cụ thể, Lambda Architecture cho phân phốicác hệ thống xử lý dòng chảy. Những tiến bộ trong lĩnh vực này đã mang lại những công cụ mới: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
Hệ thống lưu trữ và sao chép tệp tin
Hệ thống tệp phân tán có thể được coi là kho lưu trữ dữ liệu phân tán. Điều này cũng giống như khái niệm - lưu trữ và truy cập một lượng lớn dữ liệu trên một cụm máy là một thực thể duy nhất. Chúng thường đi đôi với Máy tính phân tán.
Ví dụ, Yahoo đã được biết đến với việc chạy HDFS trên hơn 42.000 nút để lưu trữ 600 petabyte dữ liệu kể từ năm 2011. Wikipedia xác định sự khác biệt ở chỗ hệ thống tệp phân tán cho phép truy cập tệp bằng cách sử dụng cùng giao diện và ngữ nghĩa như tệp cục bộ, thay vì thông qua API tùy chỉnh như Ngôn ngữ truy vấn Cassandra (CQL).
Hệ thống tệp phân tán Hadoop (HDFS) là một hệ thống được sử dụng để tính toán qua cơ sở hạ tầng Hadoop. Phổ biến, nó được sử dụng để lưu trữ và sao chép các tệp lớn (dung lượng GB hoặc TB) trên nhiều máy. Kiến trúc của nó chủ yếu bao gồm NameNodes và DataNodes.
NameNodes chịu trách nhiệm lưu trữ siêu dữ liệu về cụm, chẳng hạn như nút nào chứa các khối tệp. Họ hoạt động như những người điều phối mạng, tìm ra nơi tốt nhất để lưu trữ và sao chép tệp, theo dõi tình trạng hệ thống. DataNodes chỉ đơn giản là lưu trữ các tệp và thực hiện các lệnh như sao chép tệp, ghi mới vànhững người khác.
Không có gì ngạc nhiên khi HDFS được sử dụng tốt nhất với Hadoop cho máy tính, vì nó cung cấp nhận thức về thông tin nhiệm vụ. Các công việc được chỉ định sau đó sẽ được chạy trên các nút lưu trữ dữ liệu. Điều này cho phép bạn sử dụng vị trí của dữ liệu - tối ưu hóa các tính toán và giảm lưu lượng truy cập qua mạng.
Hệ thống tệp liên hành tinh (IPFS) là một giao thức / mạng ngang hàng mới thú vị dành cho hệ thống tệp phân tán. Sử dụng công nghệ Blockchain, nó tự hào có một kiến trúc phi tập trung hoàn toàn không có chủ sở hữu duy nhất hoặc điểm thất bại.
IPFS cung cấp một hệ thống đặt tên (tương tự như DNS) được gọi là IPNS và cho phép người dùng dễ dàng truy xuất thông tin. Nó lưu trữ tệp thông qua lập phiên bản lịch sử, giống như Git. Điều này cho phép truy cập vào tất cả các trạng thái trước đó của tệp. Nó vẫn đang trong quá trình phát triển nặng (v0.4 tại thời điểm viết bài) nhưng đã thấy các dự án quan tâm đến việc xây dựng nó (FileCoin).
Hệ thống nhắn tin
Hệ thống nhắn tin cung cấp một vị trí trung tâm để lưu trữ và phân phối tin nhắn trong một hệ thống chung. Chúng cho phép bạn tách logic ứng dụng khỏi giao tiếp trực tiếp với các hệ thống khác.
Quy mô đã biết - Cụm Kafka của LinkedIn đã xử lý 1 nghìn tỷ tin nhắn mỗi ngày với đỉnh điểm là 4,5 triệu tin nhắn mỗi giây.
Nói một cách dễ hiểu, nền tảng nhắn tin hoạt động như thế này:
- Tin nhắnđược chuyển từ ứng dụng có khả năng tạo ra nó, được gọi là nhà sản xuất, đi vào nền tảng và được đọc từ nhiều ứng dụng, được gọi là người tiêu dùng.
- Nếu bạn cần lưu trữ một sự kiện nhất định ở nhiều nơi, chẳng hạn như tạo người dùng cho cơ sở dữ liệu, bộ nhớ, dịch vụ gửi email, thì nền tảng nhắn tin là cách rõ ràng nhất để phân phối thông điệp đó.
Có một số nền tảng nhắn tin hàng đầu phổ biến.
RabbitMQ là một nhà môi giới tin nhắn cho phép bạn tinh chỉnh hơn việc kiểm soát quỹ đạo của chúng bằng cách sử dụng các quy tắc định tuyến và các tham số có thể cấu hình dễ dàng khác. Nó có thể được gọi là một nhà môi giới "thông minh" vì nó có rất nhiều logic và giám sát chặt chẽ các thông điệp đi qua nó. Cung cấp các tùy chọn cho AP và CP từ CAP.
Kafka là một trình môi giới tin nhắn ít chức năng hơn một chút vì nó không theo dõi những tin nhắn nào đã được đọc và không cho phép logic định tuyến phức tạp. Nó giúp đạt được hiệu suất đáng kinh ngạc và đại diện cho lời hứa lớn nhất trong không gian này với sự phát triển tích cực của các hệ thống phân tán bởi cộng đồng nguồn mở và sự hỗ trợ của nhóm Confluent. Kafka phổ biến nhất với các công ty công nghệ cao.
Ứng dụng Tương tác Máy
Hệ thống phân phối này là một nhóm các máy tính làm việc cùng nhau để xuất hiện như một máy tính riêng biệt cho người dùng cuối. Các máy này trong tình trạng chung, hoạt độngđồng thời có thể hoạt động độc lập mà không ảnh hưởng đến thời gian hoạt động của toàn hệ thống.
Nếu bạn coi cơ sở dữ liệu là phân tán, chỉ khi các nút tương tác với nhau để điều phối hành động của chúng. Trong trường hợp này, nó giống như một ứng dụng chạy mã nội bộ của nó trên mạng ngang hàng và được phân loại là ứng dụng phân tán.
Ví dụ về các ứng dụng như vậy:
- Quy mô đã biết - BitTorrent tập hợp 193.000 nút cho tập Game of Thrones.
- Công nghệ đăng ký cơ bản của hệ thống Blockchain phân tán.
Sổ cái phân tán có thể được coi là một cơ sở dữ liệu bất biến, chỉ dành cho ứng dụng được sao chép, đồng bộ hóa và chia sẻ trên tất cả các nút trong mạng phân phối.
Quy mô nổi tiếng - mạng Ethereum - có 4,3 triệu giao dịch mỗi ngày vào ngày 4 tháng 1 năm 2018. Họ sử dụng mẫu Tìm nguồn cung ứng sự kiện, cho phép bạn khôi phục trạng thái của cơ sở dữ liệu bất kỳ lúc nào.
Blockchain là công nghệ cơ bản hiện tại được sử dụng cho các sổ cái phân tán và thực sự đánh dấu sự khởi đầu của chúng. Cải tiến mới nhất và lớn nhất này trong không gian phân tán đã tạo ra giao thức thanh toán phân tán thực sự đầu tiên, bitcoin.
Blockchain là một sổ cái phân tán với danh sách có thứ tự tất cả các giao dịch đã từng diễn ra trên mạng của nó. Các giao dịch được nhóm và lưu trữ trong các khối. Toàn bộ chuỗi khối về cơ bản là một danh sách liên kết các khối. Các khối được chỉ địnhtốn kém để tạo và được kết hợp chặt chẽ với nhau thông qua mật mã. Nói một cách đơn giản, mỗi khối chứa một hàm băm đặc biệt (bắt đầu bằng X số không) của nội dung của khối hiện tại (ở dạng cây Merkle) cộng với hàm băm của khối trước đó. Hàm băm này đòi hỏi rất nhiều sức mạnh của CPU.
Ví dụ về hệ điều hành phân tán
Loại hệ thống xuất hiện cho người dùng vì chúng là hệ thống người dùng đơn lẻ. Chúng chia sẻ bộ nhớ, đĩa và người dùng không gặp khó khăn khi điều hướng qua dữ liệu. Người dùng lưu trữ nội dung nào đó trong PC của mình và tệp được lưu trữ ở nhiều vị trí, tức là các máy tính được kết nối để có thể dễ dàng khôi phục dữ liệu bị mất.
Ví dụ về hệ điều hành phân tán:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (máy chủ Apache).
Nếu bất kỳ máy tính nào khởi động cao hơn, tức là nếu có nhiều yêu cầu được trao đổi giữa các PC riêng lẻ, thì đây là cách cân bằng tải xảy ra. Trong trường hợp này, các yêu cầu được truyền tới PC lân cận. Nếu mạng được tải nhiều hơn, thì nó có thể được mở rộng bằng cách thêm nhiều hệ thống vào mạng. Tệp mạng và thư mục được đồng bộ hóa và các quy ước đặt tên được sử dụng để không xảy ra lỗi khi truy xuất dữ liệu.
Caching cũng được sử dụng khi thao tác với dữ liệu. Tất cả các máy tính sử dụng cùng một không gian tên để đặt tên tệp. Nhưnghệ thống tệp hợp lệ cho mọi máy tính. Nếu có các bản cập nhật đối với tệp, tệp đó sẽ được ghi vào một máy tính và các thay đổi được truyền tới tất cả các máy tính, do đó tệp trông giống nhau.
Tệp bị khóa trong quá trình đọc / ghi, do đó không có bế tắc giữa các máy tính khác nhau. Các phiên cũng xảy ra, chẳng hạn như đọc, ghi tệp trong một phiên và đóng phiên, sau đó người dùng khác có thể làm tương tự, v.v.
Lợi ích khi sử dụng
Một hệ điều hành được thiết kế để giúp cuộc sống hàng ngày của mọi người trở nên dễ dàng hơn. Vì lợi ích và nhu cầu của người dùng, hệ điều hành có thể là người dùng đơn lẻ hoặc được phân phối. Trong hệ thống tài nguyên phân tán, nhiều máy tính được kết nối với nhau và chia sẻ tài nguyên của chúng.
Lợi ích của việc này:
- Nếu một PC trong hệ thống như vậy bị lỗi hoặc bị hỏng, thì nút hoặc máy tính khác sẽ xử lý nó.
- Có thể dễ dàng thêm nhiều tài nguyên khác.
- Tài nguyên như máy in có thể phục vụ nhiều máy tính.
Đây là sơ lược về hệ thống phân phối, tại sao nó được sử dụng. Một số điều quan trọng cần nhớ: chúng phức tạp và được lựa chọn theo quy mô và giá cả và khó làm việc hơn. Các hệ thống này được phân phối trong một số danh mục lưu trữ: máy tính, hệ thống tệp và nhắn tin, sổ đăng ký, ứng dụng. Và tất cả những điều này chỉ là rất hời hợt về một hệ thống thông tin phức tạp.