Tải bản đầy đủ (.pdf) (128 trang)

Bài giảng các hệ thống phân tán it45 Đại học mở hà nội

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (8.19 MB, 128 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<small>1 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

<b>CÁC HỆ THỐNG PHÂN TÁN </b>

<b>GIỚI THIỆU </b>

Các hệ thống phân tán là các hệ thống với rất nhiều thành phần đang hoạt động, mỗi thành phần có thể là các thiết bị độc lập nhưng cũng có thể là các hệ thống con. Vì vậy, học phần này cung cấp các kiến thức về hệ thống phân tán, các dạng, kiến trúc, thành phần, cách thức hoạt động, cũng như các giao thức, các cơ chế, mơ hình nhất qn. Nội dung học phần gồm 4 bài sau:

<b>Bài 1: Giới thiệu chung về các hệ thống phân tán. </b>

<b>Bài 2: Tiến trình và truyền thông các các hệ thống phân tán. </b>

<b>Bài 3: Đồng bộ hoá, nhất quán và nhân bản trong các hệ thống phân tán. </b>

<b>Bài 4: Các công nghệ phát triển các hệ thống phân tán, cơ chế giảm thiểu lỗi </b>

và an ninh trong các hệ thống phân tán.

Để học tốt môn học này, các Anh/Chị cần phải chuẩn bị các tài liệu cơ bản sau:

1. Nguyễn Đức Tuấn and Nguyễn Thị Tâm, Các hệ thống phân tán. Khoa Công nghệ Thông tin, Trường Đại học Mở Hà Nội, 2020.

2. M. van Steen and A. S. Tanenbaum, “A brief introduction to distributed systems,” Computing, vol. 98, no. 10, pp. 967–1009, Oct. 2016, doi: 10.1007/s00607-016-0508-7.

<i>3. A. S. Tanenbaum and M. van Steen, Distributed systems: principles and </i>

<i>paradigms, 2nd ed. Upper Saddle RIiver, NJ: Pearson Prentice Hall, 2007 </i>

4. D. Bader and R. Pennington, “Cluster Computing: Applications,” Int J High Perform Comput Appl, vol. 15, 2002.

5. G. Alonso, F. Casati, H. Kuno, and V. Machiraju, Web Services: Concepts, Architectures and Applications. Berlin, Heidelberg: Springer Berlin Heidelberg, 2004.

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

Sau khi học xong môn học này, các Anh/Chị sẽ đạt được những mục tiêu:

<b>1. Về kiến thức: </b>

- Giải thích được về các khái niệm cơ bản trong các hệ thống phân tán,

<b>nguyên lý hoạt động của các hệ thống phân tán. </b>

<b>- Tổng hợp và đánh giá được về các loại hệ thống phân tán. </b>

- Tổng hợp, giải thích và đánh giá được về các khái niệm luồng, đa luồng,

<b>ảo hoá, di trú mã trong các hệ thống phân tán. </b>

- Tổng hợp, giải thích và đánh giá được về truyền thơng trong các hệ

<b>thống phân tán. </b>

<b>- Đánh giá được các dạng truyền thông. </b>

<b>- Đánh giá được các cơ chế đồng bộ thời gian. - Phân tích được về tính nhất quán. </b>

- Đánh giá được các sự khác biệt giữa các giao thức nhất qn, mơ hình

- Vận dụng được cơ chế sao lặp trong các hệ thống phân tán để đảm bảo an ninh về dữ liệu, tăng tính sẵn sàng.

- Xây dựng được các ứng dụng phân tán.

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<small>3 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

<b>BÀI 1: GIỚI THIỆU CHUNG VỀ CÁC HỆ THỐNG PHÂN TÁN </b>

<b>GIỚI THIỆU </b>

Bài học giới thiệu các khái niệm cơ bản về các hệ thống phân tán, các thành phần trong các hệ thống phân tán, cách thức các thành phần này phối hợp, giao tiếp với nhau. Sau khi học xong bài học, người học

- Hiểu rõ và giải thích được về các thành phần, cơ chế hoạt động của các hệ thống phân tán, các đặc trưng của các hệ thống phân tán.

- Người học cũng có thể hiểu rõ và giải thích được về các loại hệ thống phân tán phổ biến hiện nay.

- Hiểu rõ và giải thích được các kiến trúc của các hệ thống phân tán.

- Hiểu rõ và giải thích được các mơ hình tương tác trong các Hệ thống phân tán. - Phân tích được ưu, nhược điểm của từng loại hệ thống phân tán để có thể lựa

chọn hệ thống phù hợp với ứng dụng thực tế của công việc.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>NỘI DUNG BÀI HỌC</b>

<b>1.1 Các khái niệm cơ bản về Hệ thống phân tán </b>

1.1.1 Hệ thống phân tán là gì

Một hệ thống phân tán là một tập hợp các thành phần điện toán tự hoạt mà người sử dụng thường biết đến nó như một hệ thống đơn nhất [1]. Trong đó, các thành phần điện toán tự hoạt là các thiết bị có thể hoạt động một cách độc lập với các thiết bị khác. Một thành phần điện toán thường được mơ tả như là một nút (node), có thể là một thiết bị phần cứng hoặc một tiến trình phần mềm. Các thành phần này kết hợp với nhau và phục vụ người dùng như một hệ thống đơn nhất. Vì vậy, việc hợp tác một cách đồng bộ trong hoạt động của tất cả các thiết bị là yêu cầu quan trọng nhất của một hệ thống phân tán.

1.1.4 Mục đích của các hệ thống phân tán

Các phần mềm phân tán được hình thành do: người dùng phân tán trên nhiều khu vực địa lý khác nhau và dữ liệu cũng được lưu trữ trên nhiều trung tâm dữ liệu khác nhau (tại nhiều địa điểm khác nhau).

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<small>5 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

Tuy nhiên, trong quá trình phát triển và vận hành các phần mềm phân tán, người ta nhận thấy các phần mềm phân tán đạt được các hiệu quả:

- Tính chia sẻ tài nguyên, hầu hết các thành phần (phần cứng, phần mềm, dữ liệu) đều được chia sẻ trong các hệ thống phân tán, kể cả tài nguyên lưu trữ, bộ nhớ và tài ngun tính tốn.

- Tính mở, khả chuyển và co giãn về tài nguyên cũng như khả năng bổ sung, thay thế các thiết bị mới của hệ thống (phần mềm và phần cứng). Nói cách khác, tính mở của các hệ thống phân tán là tính dễ dàng cấu hình phần cứng và phần mềm có trong hệ thống.

Tính mở của hệ thống được thể hiện khi hệ thống được hình thành từ rất nhiều các thiết bị phần cứng và phần mềm của nhiều nhà cung cấp khác nhau, với các điều kiện các thành phần này phải được kết hợp với nhau theo một tiêu chuẩn chung. Đặc điểm này còn được xem xét là khả năng bổ sung mới các thành phần (phần cứng/phần mềm) mà không làm ảnh hưởng đến các hoạt động của hệ thống.

- Khả năng song song, hệ thống phân tán hoạt động trên một mạng gồm nhiều thiết bị như máy tính hay các thiết bị có khả năng kết nối mạng khác. Mỗi máy tính có thể có một hoặc nhiều bộ vi xử lý, mỗi bộ vi xử lý lại có thể có nhiều nhân để thực thi các cơng việc. Vì vậy, các cơng việc có thể được song song hóa để giảm thời gian thực hiện.

- Tính sẵn sàng sử dụng cao, ngay cả khi một phần hệ thống gặp sự cố. Đặc điểm này được đảm bảo bằng khả năng phân tán một công việc cho nhiều thành phần trong hệ thống để giảm tải và tạo khả năng vận hành liên tục. Nếu một thành phần nào đó trong sự cố gặp sự cố thì hệ thống sẽ chuyển các cơng việc cho các thành phần khác thực thi.

- Tính trong suốt, đây là tính chất cơ bản của các hệ phân tán. Đây là khả năng che giấu các thành phần của hệ thống phân tán đối với người sử dụng và những người lập trình các ứng dụng. Họ có thể làm việc với các dữ liệu (đang được phân tán trên nhiều điểm/thành phần khác nhau đặt tại nhiều địa điểm địa lý khác nhau) như là đang làm việc với các thiết bị này một cách trực tiếp mà không biết đến kiến trúc hay sự phân bố của các thiết bị trong hệ thống phân tán.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

1.1.5 Lớp trung gian/phần mềm trung gian (middleware) và các hệ thống phân tán Để hỗ trợ phát triển các ứng dụng phân tán, các hệ thống phân tán thường được tổ chức để có một lớp phần mềm riêng biệt được đặt ở phía trên cùng của các hệ điều hành của các máy tính (là một thành phần của hệ thống) [1]. Lớp này nằm giữa Hệ điều hành và các ứng dụng, được gọi là Middleware (lớp trung gian hay phần mềm trung gian).

<b><small>Hình Error! No text of specified style in document..1. Một hệ thống phân tán được sắp xếp trong một lớp </small></b>

<small>trung gian </small>

Theo một nghĩa nào đó, phần mềm trung gian giống với một hệ thống phân tán như cách mà hệ điều hành thể hiện đối với máy tính: người quản lý tài nguyên cung cấp cho các ứng dụng sự chia sẻ và triển khai hiệu quả các tài nguyên này trên một mạng. Bên cạnh việc quản lý tài nguyên, phần mềm trung gian cũng cung cấp các dịch vụ có thể tìm thấy trong các hệ điều hành:

- Các phương tiện cho truyền thông tương tác; - Các dịch vụ an ninh;

- Các dịch vụ kiểm toán;

- Các dịch vụ phục hồi từ các sự số.

Sự khác nhau chính giữa phần mềm trung gian với các hệ điều hành tương ứng, là các dịch vụ phần mềm trung gian được cung cấp trong môi trường kết nối mạng. Theo nghĩa này, phần mềm trung gian được xem như một hệ thống chứa (container) với các thành phần và chức năng được sử dụng thường xun, khơng cịn được thực thi bởi các ứng dụng riêng biệt.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<small>7 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

Các dịch vụ phần mềm trung gian phổ biến hiện nay là lời gọi thủ tục từ xa (Remote Procedure Call - RPC), giao dịch dạng nguyên tử (atomic transaction), dịch vụ web (web service). Các dịch vụ này tương ứng với các chức năng:

Truyền thông (Communication): Dịch vụ RPC cho phép một ứng dụng gọi một chức năng được triển khai và thực thi trên một máy tính từ xa giống như chức năng này đang được chạy trên máy người dùng.

Giao dịch (Transaction): Nhiều ứng dụng sử dụng các dịch vụ được phân phối trên nhiều máy tính. Phần mềm giao dịch trung gian thường cung cấp hỗ trợ đặc biệt để thực thi các dịch vụ này theo cơ chế giao dịch nguyên tử (atomic transaction). Với cơ chế này, nhà phát triển ứng dụng chỉ cần chỉ định các dịch vụ từ xa có liên quan, và bằng cách tuân thủ giao thức đã được chuẩn hoá, phần mềm trung gian đảm bảo tất cả các dịch vụ đều được gọi thì giao dịch được coi là hồn tất, ngược lại, giao dịch sẽ bị huỷ bỏ (được coi là không hoàn thành).

Thành phần dịch vụ (Service composition): Ngày nay, việc xây dựng một ứng dụng mới dựa trên việc kết hợp các thành phần (thư viện) sẵn có càng trở nên phổ biến. Đặc biệt là đối với các dịch vụ Web. Phần mềm trung gian nền Web có thể giúp bằng việc chuẩn hố cách mà các dịch Web được truy nhập và cung cấp cách thức để tạo ra các chức năng theo một yêu cầu cụ thể [1].

Ví dụ cuối cùng là bộ cơng cụ Horus giúp đảm bảo tính tin cậy (Reliability) cho các ứng dụng phân tán. Horus cho phép nhà phát triển xây dựng một ứng dụng cấu tạo bởi một nhóm các tiến trình. Chẳng hạn, bất cứ thơng điệp nào được gửi bởi một tiến trình được đảm bảo được nhận bởi tất cả các tiến trình khác hoặc khơng tiến trình nào. Việc này giúp đảm bảo các công việc sẽ được thực hiện bởi tất cả các thành phần trong hệ thống hoặc sẽ không được thực hiện.

<b>1.2 Các đặc trưng của hệ thống phân tán </b>

1.2.1 Tập hợp các thành phần tính tốn tự động

Các hệ thống phân tán hiện đại được cấu tạo nên bởi rất nhiều thành phần, từ các máy tính tính tốn năng lực cao cho đến các máy tính cỡ nhỏ hay các thiết bị rất nhỏ. Điều đặc biệt là các thành phần tính tốn này có thể hoạt động một cách độc lập với các thiết bị khác. Tuy nhiên, chúng cùng thực hiện để đạt được một mục tiêu

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

chung thông qua quá trình trao đổi thơng điệp với nhau. Một thành phần trong hệ thống phản ứng lại các thông điệp được gửi đến bằng cách hoạt động phù hợp [1].

Và một vấn đề quan trọng đến từ hoạt động độc lập của các thành phần trong hệ thống là mỗi thành phần sẽ có một mốc thời gian riêng trong các hoạt động. Vì vậy, việc đồng bộ hoá và phối hợp giữa các thành phần trong hệ thống phân tán là rất quan trọng đối với các hệ thống phân tán.

1.2.2 Hệ thống kết hợp đơn nhất

Đây là tính chất mà những người dùng cuối sẽ khơng cần biết đến việc các tiến trình, dữ liệu và điều khiển được phân tán trên mạng máy tính. Họ chỉ biết đến máy tính mà họ đang làm việc trên đó. Tính chất này gọi là tính trong suốt phân tán (distribution transparency), là một tính chất quan trọng trong mục đích thiết kế của các hệ thống phân tán.

Theo một nghĩa nào đó, tính chất này giống với cách tiếp cận được thực hiện trong nhiều hệ điều hành dòng Unix. Các tài nguyên được truy nhập thông qua giao diện hệ thống tệp thống nhất, che giấu một cách hiệu quả sự khác biệt giữa các tệp, các thiết bị lưu trữ, và bộ nhớ chính và cả các mạng máy tính [1].

Tuy nhiên, việc sử dụng các hệ thống phân tán với cơ chế như một hệ thống đơn nhất cũng mang lại một số vấn đề. Các hệ thống đơn nhất được tạo nên từ nhiều nút mạng, nếu một trong các nút mạng này gặp sự cố, các ứng dụng sẽ không thể thực thi được. Và lúc này người dùng sẽ không thể xác định được lỗi khi mà với họ, chúng không hề tồn tại.

<b>1.3 Các loại hệ thống phân tán </b>

1.3.1 Các hệ thống điện toán phân tán

1.3.1.1 Tính tốn phân tán hiệu năng cao (High performance distributed computing)

Một lớp các hệ thống phân tán quan trọng được sử dụng cho các tác vụ tính tốn hiệu suất cao. Trong tính tốn cụm, lớp phần cứng bao gồm một tập hợp các trạm làm việc hoặc các PC giống nhau về cấu hình phần cứng, được kết nối chặt chẽ với nhau thông qua một mạng nội bộ tốc độ cao. Và tất cả các máy tính trong cụm đều chạy một hệ điều hành giống nhau.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<small>9 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

Tính tốn hiệu năng cao được tạo nên bởi các máy tính với nhiều bộ vi xử lý được kết hợp với nhau, cùng chia sẻ bộ nhớ vật lý. Bộ nhớ này giúp tăng hiệu năng xử lý cho các chương trình chạy trong các hệ thống tính tốn hiệu năng cao. Chúng cho phép các chương trình có thể thực thi nhiều luồng trong cùng lúc, và các luồng này có thể cùng truy nhập dữ liệu được chia sẻ trong bộ nhớ. Cơ chế này giúp giảm thời gian thực hiện các tác vụ tính tốn, tăng lượng cơng việc có thể thực hiện trong cùng một thời điểm.

Việc truy nhập này được quản lý bởi các cơ chế đồng bộ, chẳng hạn như semaphores. Tuy nhiên, cơ chế đồng bộ hoá bị giới hạn bởi số lượng các CPU để có thể có được các truy nhập có hiệu quả. Để vượt qua giới hạn này, hệ thống tính tốn năng lực cao chuyển sang sử dụng các hệ thống bộ nhớ phân tán. Sự thay đổi này cũng có nghĩa là nhiều chương trình đã phải sử dụng cơ chế chuyển tin nhắn thay vì sửa đổi dữ liệu chia sẻ như một phương tiện liên lạc và đồng bộ hoá giữa các luồng.

1.3.1.2 Tính tốn cụm (Cluster Computing)

Một cụm máy tính chứa một tập hợp các máy tính đồng nhất (về cấu hình phần cứng và hệ điều hành được cài đặt lên trên đó) trong một mạng cục bộ để thực hiện một tác vụ nào đó yêu cầu nhiều tài nguyên phần cứng.

Các thành phần của một cụm thường kết nối với nhau thông qua một mạng nội bộ (LAN), với mỗi nút (máy tính được sử dụng như là một máy chủ) chạy trên thể hiện của hệ điều hành của chúng và đồng nhất với nhau về hệ điều hành. Điện toán cụm là sự hội tụ của các xu hướng điện toán bao gồm sự sẵn có của bộ vi xử lý chi phí thấp, mạng tốc độ cao và phần mềm cho tính tốn phân tán hiệu năng cao.

Các cụm thường được triển khai để nâng cao hiệu năng và tính sẵn sàng so với một máy tính, trong khi thơng thường sẽ hiệu quả hơn nhiều so với các máy tính đơn lẻ có tốc độ hoặc tính khả dụng tương đương [2].

Tính tốn cụm có phạm vi ứng dụng và triển khai khá rộng, từ các cụm doanh nghiệp nhỏ với một số nút cho đến một số siêu máy tính mạnh nhất trên thế giới như IBM Sequoia [3].

<b>a) Các loại tính tốn cụm </b>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Các cụm tính tốn được sử dụng trong nhiều tổ chức để giảm thời gian tính tốn, lưu trữ dữ liệu nhanh hơn. Các cụm tính tốn này có thể được chia làm 03 loại chính và các cụm tính tốn này có thể kết hợp với nhau để có được hiệu suất cao hơn hoặc độ tin cậy.

High Performance Cluster (HPC), đơi khi cịn được biết đến với thuật ngữ high performance computing, được sử dụng cho các ứng dụng tính tốn chuyên sâu, thay vì xử lý các ứng dụng hướng đọc ghi như dịch vụ web hay cơ sở dữ liệu. Chẳng hạn như các mơ phỏng tính tốn về tai nạn giao thơng hay thời tiết. Các máy tính được kết nối chẳng chặt chẽ được thiết kế để tạo ra các “supercomputing”, các siêu máy tính [4].

High Availability Cluster, còn được biết đến với thuật ngữ “failover clusters”, cụm chuyển đổi dự phịng. Các cụm máy tính này được sử dụng để tăng cường tính sẵn sàng cho các hệ thống cụm tính tốn. Trong các cụm tính tốn khả dụng cao, các nút dự phịng được sử dụng để thực thi các tác vụ trong trường hợp các thành phần khác của cụm gặp lỗi. Nó được sử dụng để loại bỏ các điểm thất bại trong cụm tính tốn bằng cách sử dụng các thành phần dự phòng của cụm. Các cụm khả dụng cao thường được sử dụng cho các cơ sở dữ liệu quan trọng, chia sẻ tệp trên hệ thống mạng, các ứng dụng kinh doanh, và các dịch vụ khách hàng như các website thương mại điện tử [5].

Load Balancing Cluster, các cụm cân bằng tải, cho phép chia sẻ các tác vụ nặng (các cơng việc địi hỏi nhiều tài ngun tính tốn) trên các nút của hệ thống để nâng cao hiệu suất, hoặc giảm sức ép về tính toán cho các nút trong hệ thống. Một trong những ứng dụng cụ thể là hệ thống cụm các máy chủ web, khi có nhiều yêu cầu truy nhập đến một trang web, các yêu cầu này sẽ được phân tán đều trên các máy chủ trong hệ thống. Vì vậy, nó giúp làm tăng tốc độ truy nhập của khách hàng.

<b>b) Các đặc trưng của điện toán cụm </b>

Chi phí, kỹ thuật tính tốn cụm mang lại những lợi ích về kinh tế khi so sánh với các kỹ thuật khác về điện năng tiêu thụ và tốc độ xử lý được tạo ra, do trong thực tế nó sử dụng các thành phần phần cứng và phần mềm được thiết kế một cách chuyên biệt và tối ưu cho các hệ thống.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<small>11 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

Về tốc độ tính tốn, trong một cụm tính tốn, nhiều máy tính làm việc với nhau để cung cấp khả năng tính tốn tập trung, giúp cho cho tốc độ tính tốn được nâng cao.

Về tính mềm dẻo, trái ngược với máy tính cỡ lớn (mainframe), điện tốn cụm (cụm máy tính) có thể được nâng cấp một cách nhanh chóng bằng cách bổ sung các nút phụ (các thiết bị).

Về tính sẵn sàng cao, khi một thành phần trong cụm tính tốn bị lỗi, các thành phần còn lại vẫn sẽ tiếp tục thực hiện các tác vụ tính tốn hiện tại, khơng làm gián đoạn q trình tính tốn. Đây là điểm mà các máy tính cỡ lớn khơng thể có được.

<b>c) Quản lý cụm </b>

<i>Truyền tin nhắn và liên lạc, thông điệp (message) là cơ chế giúp các </i>

đối tượng trong một cụm máy tính có thể truyền thơng với nhau. Và có hai cách thức cho việc liên lạc trong các điện toán cụm là sử dụng PVM và MPI. PVM là parallel virtual machine, được phát triển vào năm 1989 bởi phòng thí nghiệm quốc gia Oak Ridge. Nó được cài đặt trực tiếp trên các nút trong cụm và cung cấp một thư viện để tạo nên một nút dạng “máy ảo song song”. Nó cung cấp một môi trường thực thi cho việc quản lý tài nguyên và tác vụ, thông báo lỗi và truyền tin.

MPI (Message Passing Interface – giao diện truyền tin nhắn), được xây dựng vào những năm 1990 để thay thế cho PVM. MPI được xây dựng dựa trên các hệ thống thương mại đang được sử dụng lúc đó. Việc triển khai MPI dựa trên giao thức TCP/IP và kết nối dạng socket.

<i>Quản lý các tác vụ (Task Scheduling), việc quản lý tác vụ trở nên </i>

khó khăn khi một lượng lớn người dùng cùng truy nhập một lượng lớn dữ liệu. Trong các cụm điện tốn CPU-GPU khơng đồng nhất, việc ánh xạ các tác vụ trên các lõi CPU và thiết bị GPU tạo ra một thách thức khá lớn bởi vì nó có mơi trường ứng dụng phức tạp và hiệu suất của từng công việc phụ thuộc vào khả năng của các công nghệ cơ bản. Việc lập lịch các tác vụ là một trong những lĩnh vực nghiên cứu rất được quan tâm, và đã có một số đề xuất xây dựng một thuật toán kết hợp và mở rộng MapReduce và Hadoop [6].

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<i>Quản lý lỗi trong điện toán cụm (Node failure management), là một </i>

kỹ thuật được sử dụng để xử lý một nút bị lỗi trong cụm bằng cách sử dụng các chiến lược, chẳng hạn như “fencing”. Chiến lược này thực hiện cô lập nút hoặc tài nguyên (đang được chia sẻ) gặp sự cố. Có hai cách thức được sử dụng trong cơ chế “fencing”, đầu tiên là vô hiệu hoá nút (thành phần) và thứ hai là ngăn chặn truy cập vào các tài nguyên được chia sẻ [7].

1.3.1.3 Tính tốn lưới (Grid Computing)

<b>a) Giới thiệu </b>

Một nhà khoa học đang thực hiện nghiên cứu về protein đăng nhập vào một máy tính và sử dụng tồn bộ mạng các máy tính để phân tích dữ liệu. Một doanh nhân truy nhập mạng lưới của công ty thông qua một thiết bị hỗ trợ các nhân (PDA) để dự đoán về những thay đổi của thị trường chứng khoán. Một nhân viên quân sự truy nhập và phân phối các tài nguyên máy tính trên nhiều mạng máy tính qn sự để mơ phỏng/giả lập chiến thuật chiến đấu. Tất cả các ứng dụng trên đều làm việc dựa trên một hệ thống gọi là grid computing (tính tốn lưới/điện tốn lưới).

Về cơ bản, tính tốn lưới là một mạng máy tính mà các tài nguyên của mỗi máy tính được chia sẻ với mọi máy tính khác trong lưới. Năng lực tính tốn, bộ nhớ và lưu trữ dữ liệu là tất cả các tài nguyên của cộng đồng mà những người dùng được cấp phép có thể khai thác và tận dụng cho các tác vụ cụ thể. Một hệ thống điện tốn lưới có thể đơn giản là một hệ thống với một tập hợp các máy tính giống nhau hoặc không, chạy cùng một hệ điều hành hoặc có thể phức tạp như là các hệ thống liên mạng, bao gồm mọi nền tảng máy tính có thể kết hợp lại với nhau [8]. Các máy tính trong điện tốn lưới có thể nằm ở nhiều nơi khác nhau (về địa lý), không bắt buộc phải nằm trong cùng một mạng nội bộ như tính tốn cụm.

Khái niệm điện tốn lưới khơng phải là mới. Nó là một dạng của điện toán phân tán. Trong đó các máy tính khác nhau trong cùng một mạng cùng chia sẻ với nhau một hay nhiều tài nguyên. Trong ý tưởng của điện toán lưới, mọi tài nguyên đều được chia sẻ, biến một mạng máy tính trở thành một siêu máy tính mạnh mẽ. Với một giao diện người dùng tốt, việc truy nhập một hệ thống điện tốn lưới khơng khác nhiều so với việc truy nhập các tài nguyên trong một máy tính cục bộ. Mọi

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<small>13 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

máy tính được cấp phép đều có thể truy nhập đến năng lực tính toán và khả năng lưu trữ khổng lồ.

Các nguồn tài nguyên của một máy tính bao gồm:

 Bộ vi xử lý trung tâm (CPU): ngày nay, các máy tính có thể có nhiều hơn một CPU.

 Bộ nhớ (memory).

 Các thiết bị lưu trữ (storage).

Thông thường, một máy tính có thể hoạt động với các giới hạn về các tài nguyên của chính nó. Có một giới hạn trên về việc máy tính có thể hồn thành một tác vụ nhanh như thế nào và có thể lưu trữ bao nhiêu thơng tin. Và hầu hết các máy tính đều có thể nâng cấp, điều này có nghĩa là có thể gia tăng sức mạnh tính tốn hoặc cơng suất cho một máy tính. Nhưng đó vẫn chỉ là sự gia tăng về mặt hiệu suất. Trong khi điện toán lưới thực hiện liên kết các nguồn tài nguyên lại với nhau và cho phép người dùng sử dụng một máy tính và tận dụng sức mạnh tổng hợp của tất cả các máy tính trong hệ thống. Đối với người dùng cá nhân, điện toán lưới đã chuyển đổi máy tính của họ trở thành một siêu máy tính.

<b>b) Chia sẻ tài nguyên trong lưới </b>

Một số công ty và tổ chức đang làm việc với nhau để tạo ra một tập hợp tiêu chuẩn các luật gọi là các giao thức (protocol) để giúp cho việc thiết lập các mơi trường điện tốn lưới dễ dàng hơn. Giao thức cho phép tạo ra một hệ thống điện toán lưới mới hoặc sử dụng các hệ thống đang tồn tại. Điều thiếu sót chính là các thoả thuận kết hợp. Điều này có nghĩa rằng hai hệ thống điện tốn lưới khác nhau có thể khơng tương thích với nhau, bởi vì mỗi hệ thống đang làm việc với một tập hợp các giao thức và công cụ riêng.

Thơng thường, một hệ thống điện tốn lưới u cầu:

 Ít nhất một máy tính, thường là máy chủ, xử lý tất cả các nhiệm vụ điều hành cho hệ thống. Máy tính này thường được gọi là control node (nút điều khiển). Ứng dụng khác và các máy chủ Web (gồm các vật lý lẫn ảo) cung cấp các dịch vụ cụ thể cho hệ thống.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

 Một mạng các máy tính chạy phần mềm đặc biệt dành cho mạng tính tốn lưới. Các máy tính này đóng vai trị vừa là giao diện truyền thơng với người dùng vừa là tài nguyên mà hệ thống sẽ khai thác cho các ứng dụng khác nhau.

 Một tập hợp các phần mềm máy tính gọi là phần mềm trung gian (middleware).

Nếu phần mềm trung gian là đặc trưng của hệ thống điện toán lưới (là một hệ thống phân tán), thì nút điều khiển là bộ điều phối (dispatcher). Nút điều khiển phải ưu tiên và lên lịch các tác vụ trên mạng. Đây là công việc của nút điều khiển để xác định tài nguyên nào mà mỗi tác vụ sẽ có thể truy nhập. Nút điều khiển cũng phải giám sát hệ thống để đảm bảo nó không bị quá tải. Và quan trọng là mỗi người dùng kết nối với mạng thì máy tính của họ không bị làm giảm hiệu năng. Một hệ thống điện toán lưới cần khai thác các tài nguyên rảnh rỗi của các máy tính trong hệ thống mà khơng làm ảnh hưởng đến các thành phần khác.

Tiềm năng cho các ứng dụng điện tốn lưới là vơ hạn, cung cấp cho mọi người sự tiêu chuẩn hoá về các giao thức và cơng cụ. Bởi vì khơng có các định dạng chuẩn, các nhà phát triển bên thứ ba, lập trình viên độc lập muốn tạo nên ứng dụng trên nền tảng điện toán lưới, thường thiếu khả năng tạo các ứng dụng hoạt động trên các hệ thống khác nhau. Mặc dù có thể tạo ra các phiên bản khác nhau của cùng một ứng dụng cho các hệ thống khác nhau, nhưng nó tốn thời gian và nhiều nhà phát triển không muốn phải thực hiện nó nhiều lần. Một bộ giao thức được tiêu chuẩn hố có nghĩa là các nhà phát triển có thể tập trung vào một phiên bản khi tạo ra các ứng dụng cho điện toán lưới.

<b>c) Các ứng dụng điện tốn lưới </b>

Hiện nay, có một số hệ thống điện toán lưới mà hầu hết chúng chỉ phù hợp với một phần định nghĩa của hệ thống điện toán lưới thực sự. Và hầu hết các hệ thống điện toán lưới đang được vận hành bởi các dự án tổ chức học tập và nghiên cứu. Các hệ thống này tận dụng sức mạnh xử lý đang rảnh rỗi của các máy tính.

Dự án “tìm kiếm trí thơng minh ngồi trái đất” - Search for Extraterrestrial Intelligence (SETI) là một trong những hệ thống điện toán lưới sớm nhất để thu hút sự chú ý. Nhiệm vụ của dự án SETI là phân tích dữ liệu được thu thập

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<small>15 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

bởi kính viễn vọng vơ tuyến để tìm kiếm bằng chứng cho thơng tin liên lạc của người ngồi hành tinh. Vì có q nhiều thơng tin để một máy tính cá nhân có thể phân tích dữ liệu một cách hiệu quả. Dự án SETI tạo ra một chương trình có tên là SETI@home kết nối các máy tính với nhau tạo một siêu máy tính ảo. Các máy tính này có thể là của những người dùng muốn đóng góp tài ngun tính tốn cho dự án.

Một chương trình khác tương tự là dự án Folding@home được quản trị bởi Pande Group, một học viện phi lợi nhuận thuộc bộ mơn hố học của Đại học Stanford. Học viện này đang nghiên cứu về protein. Nghiên cứu bao gồm cách mà các protein hình thành hình dạng, được gọi là nếp gấp và cách thức liên quan đến cách thức mà protein hoạt động. Các nhà khoa học tin rằng các protein không ăn khớp có thể là nguyên nhân gây ra các bệnh như Parkinson hay Alzheimer. Có thể bằng cách nghiên cứu các protein, nhóm Pande có thể khám phá những cách thức mới để điều trị hoặc thậm chí chữa các bệnh này.

Có rất nhiều các dự án ứng dụng điện toán lưới tương tự đang hoạt động. Nhiều dự án trong số chúng không tồn tại lâu dài, nghĩa là một khi mục tiêu của dự án tương ứng được đáp ứng, hệ thống sẽ giải thể. Trong một số trường hợp, một dự án mới, có liên quan sẽ thay thế cho các dự án đã hoàn thành.

Trong một số dự án, với lượng dữ liệu cần phân tích là rất lớn, cần có sự đóng góp của những người tình nguyện. Họ sẽ tải xuống một ứng dụng từ trang Web của dự án tương ứng. Sau khi cài đặt, ứng dụng sẽ liên lạc với nút điều khiển sẽ gửi một số dữ liệu đến máy tính của người dùng để phân tích. Phần mềm phân tích dữ liệu với tài nguyên CPU rảnh rỗi trên máy tính của các tình nguyện viên. Trên máy tính của người dùng, phần mềm của dự án có mức độ ưu tiên tài nguyên rất thấp; nếu người dùng cần kích hoạt một chương trình đòi hỏi nhiều sức mạnh xử lý, phần mềm dự án sẽ tạm ngừng hoạt động. Một khi việc sử dụng CPU trở lại bình thường trên máy của người sử dụng, chương trình của dự án sẽ tiếp tục thực hiện phân tích dữ liệu.

Khi máy tính của người dùng hồn thành phân tích dữ liệu được u cầu. Vào thời điểm đó, phần mềm của dự án sẽ gửi dữ liệu trở lại nút điều khiển, và chuyển tiếp dữ liệu đã phân tích đến cơ sở dữ liệu thích hợp. Sau đó, nút điều khiển (bộ điều phối) sẽ gửi một khối dữ liệu mới đến máy tính của người dùng và chu trình

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

sẽ lặp lại. Nếu dự án có thể thu hút được một lượng tình nguyện viên nhất định, thì có thể hồn thành các mục tiêu trong một khoảng thời gian ngắn.

1.3.1.4 Điện toán đám mây (Cloud Computing)

<b>a) Giới thiệu </b>

Điện toán đám mây (cloud computing) hay điện tốn máy chủ ảo, là mơ hình điện tốn sử dụng các cơng nghệ máy tính dựa trên nền tảng Internet. Ở mơ hình điện tốn này, tất cả các giải pháp công nghệ đều được cung cấp dưới dạng các “dịch vụ” [9]. Thuật ngữ “đám mây” được dùng ở đây là để thể hiện sự phức tạp trong cấu trúc cũng như dịch vụ của nó. Với mơ hình điện tốn đám mây, bất kỳ ai cũng có thể sử dụng các dịch vụ cơng nghệ được cung cấp mà khơng cần phải có các kiến thức về cơng nghệ đó, cũng như khơng cần quan tâm đến các cơ sở hạ tầng phục vụ của cơng nghệ đó. Người dùng có thể sử dụng bất kỳ thiết bị nào, PC, máy tính xách tay, điện thoại thông minh, và thiết bị cầm tay hỗ trợ cá nhân (PDA) để truy nhập chương trình, kho lưu trữ, và các nền tảng phát triển ứng dụng thơng qua Internet.

<b>b) Ứng dụng của điện tốn đám mây </b>

Điện toán đám mây đang trở thành một trào lưu công nghệ mới và rất nhiều chuyên gia mong đợi mơ hình điện tốn này sẽ là mũi nhọn trong thị trường công nghệ thông tin. Các ưu điểm của cơng nghệ điện tốn đám mây là tiết kiệm chi phí, tính sẵn sàng cao, và dễ dàng điều chỉnh cho phù hợp với nhu cầu sử dụng.

Hiện nay, có rất nhiều các nhà cung cấp dịch vụ như Google, Amazon, Salesforce, Microsoft, IBM, với nhiều gói dịch vụ khác nhau phù hợp với từng đối tượng khách hàng. Các dịch vụ điện toán đám mây cũng khá gần gũi, chẳng hạn như Gmail, Dropbox, OneDrive hay Google Drive. Với các dịch vụ này, các bạn có thể sao lưu các dữ liệu một cách tự động mà không cần bận tâm đến việc quản lý các thiết bị lưu trữ.

1.3.2 Các hệ thống thông tin phân tán

Một trong những lớp các hệ thống phân tán quan trọng thường được thấy trong các tổ chức với rất nhiều các ứng dụng được kết nối mạng, nhưng việc truyền thông giữa chúng thường mang lại hiệu quả thấp. Nhiều giải pháp phần mềm trung gian đang tồn tại là kết quả của quá trình làm việc với cơ sở hạ tầng, trong đó các ứng

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<small>17 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

dụng có thể được tích hợp với các hệ thống thơng tin tồn doanh nghiệp một cách dễ dàng hơn [10]–[12].

Một số cấp độ của sự tích hợp có thể diễn ra có thể phân biệt được. Trong nhiều trường hợp, một ứng dụng được nối mạng chỉ đơn giản bao gồm một máy chủ chạy ứng dụng đó (thường bao gồm cả cơ sở dữ liệu) và cung cấp cho các chương trình từ xa, được gọi là máy khách. Các máy khách này gửi một yêu cầu đến máy chủ để thực hiện một thao tác cụ thể, sau đó phản hồi sẽ được gửi lại. Tích hợp ở mức thấp nhất cho phép khách hàng đóng gói một số yêu cầu, có thể cho các máy chủ khác nhau, thành một yêu cầu lớn hơn và được thực hiện dưới dạng giao dịch phân tán. Ý tưởng chính là giao dịch chỉ được hoàn tất khi tất cả các yêu cầu đều được thực hiện.

Một khi các ứng dụng trở nên phức tạp hơn, chúng sẽ được tách thành các thành phần độc lập (cần chú ý phân biệt các thành phần cơ sở dữ liệu với các thành phần xử lý), rõ ràng việc tích hợp cũng sẽ diễn ra bằng cách cho các ứng dụng truyền thông trực tiếp với nhau. Điều này đã dẫn đến sự phát triển của một ngành công nghiệp khổng lồ tập trung vào Tích hợp ứng dụng doanh nghiệp (Enterprise Application Integration – EAI).

1.3.2.1 Xử lý giao dịch phân tán

Để có thể phân tích một cách rõ ràng về các giao dịch phân tán, các ứng dụng cơ sở dữ liệu sẽ được sử dụng trong phần này. Trong thực tế, các hoạt động trên CSDL được thực hiện dưới hình thức các giao dịch (transaction). Lập trình sử dụng các giao dịch yêu cầu các hoạt động đặc biệt phải được cung cấp bởi hệ thống phân tán cơ bản hoặc bởi hệ thống biên dịch của ngơn ngữ lập trình.

<small>Bảng 1 Ví dụ về các thành phần của các giao dịch </small>

<small>BEGIN_TRANSACTION Bắt đầu một giao dịch </small>

<small>END_TRANSACTION Kết thúc giao dịch hoặc cố gắng đệ trình ABORT_TRANSACTION Huỷ giao dịch và khôi phục các giá trị cũ </small>

<small>READ Đọc dữ liệu từ một tệp, một bảng hoặc các các nguồn khác WRITE Ghi dữ liệu từ một tệp, một bảng hoặc các các nguồn khác </small>

Các hoạt động của một giao dịch sẽ phụ thuộc vào kiểu đối tượng được sử dụng trong các giao dịch. Chẳng hạn trong hệ thống thư điện tử, các hoạt động

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

có thể là gửi, nhận, và chuyển tiếp thư điện tử. Trong một hệ thống kế tốn, các hoạt động này có thể khá khác biệt. Tuy nhiên, Đọc và Ghi là hai hoạt động điển hình xuất hiện trong nhiều hệ thống khác nhau. Các trạng thái thông thường, các cuộc gọi thủ tục, v.v., cũng được cho phép trong một giao dịch. Cụ thể là các cuộc gọi thủ tục từ xa (remote procedure call – RPC), nghĩa là hoạt động gọi một thủ tục ở trên các máy chủ khác, cũng thường được gói gọn trong một giao dịch và được biết đến với cụm từ giao dịch RPC. BEGIN_TRANSACTION và END_TRANSACTION được sử dụng để phân định phạm vi giao dịch.

Thuộc tính all-or-nothing (tất cả hoặc khơng gì cả) của các giao dịch là một trong bốn tính chất mà các giao dịch có. Cụ thể hơn, các giao dịch tuân thủ các thuộc tính được gọi là ACID:

 Atomic – nguyên tử: đối với thế giới bên ngồi, giao dịch xảy ra là khơng thể tách rời.

 Consistent – nhất quán: giao dịch không thể vi phạm tính nhất quán của dữ liệu trong hệ thống

 Isolated – bị cô lập: các giao dịch sẽ không thể tác động lẫn nhau

 Durable – bền bỉ: Khi một giao dịch được thực hiện, sẽ không thể thay đổi.

Trong các hệ thống phân tán, các giao dịch thường được cấu tạo bởi một số giao dịch phụ, cùng tạo thành giao dịch lồng nhau (nested transaction). Các giao dịch con có thể làm việc với các cơ sở dữ liệu khác nhau để có được một kết quả tổng hợp. Giao dịch ở mức cao nhất (top-level) có thể điều phối để các tiến trình con chạy song song với nhau nhằm nâng cao hiệu năng hoặc đơn giản hoá việc lập trình. Mỗi tiến trình con có thể thực hiện một hoặc nhiều giao dịch con.

Các giao dịch con làm phát sinh một vấn đề nhỏ nhưng quan trọng. Khi một giao dịch bắt đầu thực hiện các giao dịch con, và một trong số chúng kết thúc, gửi kết quả thực hiện về cho giao dịch cha mẹ. Sau khi thực hiện các tính tốn, giao dịch cha mẹ sẽ huỷ, khơi phục tồn bộ hệ thống trở lại trạng thái trước khi giao dịch mức cao bắt đầu. Vì vậy, các kết quả của giao dịch con được đệ trình trước đó vẫn

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<small>19 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

phải bị hoàn tác (khơi phục). Do đó tính bền vững sẽ chỉ có thể áp dụng cho các giao dịch ở mức cao (khơng dành cho các giao dịch con).

Vì các giao dịch có thể lồng nhau với nhiều mức, nên cần có sự gia tăng trong quản trị để đảm bảo các hoạt động được thực hiện một cách đúng đắn. Khi một giao dịch con được bắt đầu, nó sẽ được cung cấp một bản sao riêng của tất cả dữ liệu trong toàn bộ hệ thống để nó có thể thực hiện các tác vụ. Nếu giao dịch huỷ, không gian dữ liệu riêng của nó cũng sẽ bị loại bỏ. Nếu nó đệ trình dữ liệu sau khi xử lý, không gian dữ liệu riêng của nó sẽ thay thế không gian dữ liệu của giao dịch cha/mẹ. Do đó, nếu một giao dịch con đệ trình dữ liệu và một giao dịch con khác được bắt đầu, nó sẽ có thể truy cập được kết quả tạo bởi giao dịch con trước đó. Tương tự như vậy, nếu huỷ bỏ một giao dịch ở mức cao hơn, tất cả các giao dịch bên dưới của nó cũng sẽ bị huỷ bỏ theo. Và nếu một số giao dịch được bắt đầu một cách đồng thời, kết quả được tạo ra là giống như chúng chạy một cách tuần tự không theo một trật tự cụ thể nào.

Các giao dịch lồng nhau rất quan trọng trong các hệ thống phân tán, vì chúng cung cấp một cách thức để phân phối các giao dịch trên nhiều máy trong hệ thống. Chúng phải tuân theo sự phân chia hợp lý các công việc của giao dịch gốc [1]. Ví dụ: một giao dịch cho việc lập lịch trình cho ba chuyến bay khác nhau cần được đặt trước được phân chia thành ba giao dịch con. Mỗi một giao dịch con có thể được quản lý riêng biệt và độc lập với các giao dịch còn lại.

Trong những ngày đầu của hệ thống phần mềm trung gian doanh nghiệp, thành phần xử lý các giao dịch phân tán (hoặc lồng nhau) tạo nên lõi cho các ứng dụng tích hợp ở máy chủ hoặc ở mức cơ sở dữ liệu. Thành phần này được gọi là transaction processing monitor (bộ phận giám sát xử lý giao dịch) hay ngắn gọn là TP monitor. Nhiệm vụ chính của nó là cho phép một ứng dụng truy cập vào nhiều máy chủ/cơ sở dữ liệu bằng cách cung cấp cho nó một mơ hình lập trình giao dịch, như trong hình bên dưới.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b><small>Hình Error! No text of specified style in document..2. Vai trị của trình giám sát xử lý giao dịch trong các hệ </small></b>

1.3.2.2 Ứng dụng tích hợp doanh nghiệp

Khi có càng nhiều ứng dụng tách rời khỏi các cơ sở dữ liệu mà chúng được xây dựng, thì rõ ràng là cần có các hạ tầng để tích hợp các ứng dụng độc lập với cơ sở dữ liệu của chúng. Cụ thể là các thành phần ứng dụng sẽ có thể truyền thơng với nhau một cách trực tiếp và không chỉ bằng cách hành vi yêu cầu/phản hồi được hỗ trợ bởi các hệ thống xử lý giao dịch.

Nhu cầu truyền thơng tương tác này đã tạo ra nhiều mơ hình truyền thơng khác nhau. Ý tưởng chính là các ứng dụng có thể trao đổi thơng tin một cách trực tiếp thông qua phần mềm truyền thông trung gian. Hiện nay, có một số loại phần mềm trung gian truyền thông đã được phát triển. Chẳng hạn như RPC (remote procedure call), một thành phần ứng dụng có thể gửi yêu cầu (request) một cách hiệu quả đến thành phần ứng dụng khác thông qua việc gọi thủ tục nội bộ mà các kết quả

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<small>21 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

trong u cầu được đóng gói dưới dạng một thơng điệp và gửi đi. Tương tự, kết quả sẽ được gửi trả về cho các ứng dụng như là kết quả của lời gọi thủ tục.

Khi công nghệ phát triển cho phép truy nhập đến các đối tượng từ xa, gọi là remote method invocations (RMI). RMI về cơ bản giống như RPC nhưng hoạt động với các đối tượng (Object) thay vì các chức năng (Procedure) như RPC.

RPC và RMI có nhược điểm là thành phần gọi (caller) và được gọi (callee) đều cần được khởi chạy tại thời điểm truyền thơng. Ngồi ra, các thành phần này phải biết chính xác cách thức mà chúng tham chiếu đến nhau. Sự kết hợp chặt chẽ này thường gặp phải một nhược điểm nghiêm trọng, và cơ chế phần mềm trung gian hướng thông điệp (message-oriented middleware), hay đơn giản là MOM được phát triển. Với cơ chế này, các ứng dụng sẽ gửi một thông điệp đến các điểm liên lạc lô-gic, thường được mô tả bởi một tiêu đề. Tương tự, các ứng dụng chỉ ra các loại thông điệp mà chúng quan tâm, sau đó phần mềm trung gian sẽ xử lý các thông điệp này và chuyển chúng đến cho các ứng dụng này. Những hệ thống này được gọi là publish/subscribe (xuất bản/đăng ký) tạo nên một lớp quan trọng và mở rộng của các hệ thống phân tán.

Hỗ trợ tích hợp ứng dụng doanh nghiệp là một trong các mục đích quan trọng của nhiều sản phẩm trung gian. Thơng thường, có bốn cách để tích hợp các ứng dụng:

<b>File transfer (chuyển tệp tin), bản chất của tích hợp thơng qua </b>

chuyển tệp tin là ứng dụng tạo ra một tệp chứa dữ liệu chia sẻ, sau đó được đọc bởi các ứng dụng khác. Cách thức này là một kỹ thuật đơn giản giúp nó trở nên phổ biến. Tuy nhiên, đây lại là một cách tiếp cận có nhiều thứ cần phải được thống nhất:

 Định dạng tệp và bố cục: văn bản, dữ liệu nhị phân, cấu trúc của tệp,... Ngày nay, XML là một trong các định dạng phổ biến nhờ khả năng tự mơ tả của nó. Vì vậy, định dạng này có thể được sử dụng trong kỹ thuật chuyển tệp tin.

 Trình quản lý tệp: nơi mà chúng được lưu trữ, cách mà chúng được đặt tên, và ai là người có quyền loại bỏ các tệp tin.  Cập nhập lan truyền: khi một ứng dụng tạo ra một tệp, có thể

có một số ứng dụng cần đọc tệp đó để cung cấp một cái nhìn

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

đồng nhất của một hệ thống. Do đó, đơi khi các chương trình riêng biệt cần được triển khai để thông báo cho các ứng dụng cập nhập tệp.

<b>Cơ sở dữ liệu chia sẻ, nhiều vấn đề liên quan đến tích hợp thơng qua </b>

<b>các tệp được giảm bớt khi sử dụng CSDL dùng chung. Tất cả các ứng dụng sẽ có </b>

quyền truy nhập vào cùng một dữ liệu và thường thông qua một ngôn ngữ truy vấn cao cấp như SQL. Ngồi ra, việc thơng báo cho các ứng dụng khi có thay đổi cũng dễ dàng thực hiện thơng qua các trigger (một thủ tục lưu được thực hiện một cách tự động khi có sự kiện) trong các CSDL hiện đại. Tuy nhiên, cơ chế này có hai nhược điểm lớn. Đầu tiên, vẫn cần phải thiết kế một lược đồ dữ liệu chung, có thể có sự sai lệch lớn nếu tập hợp các ứng dụng cần tích hợp không thể biết trước (các thông tin về ứng dụng). Thứ hai, khi có nhiều lần truy cập và cập nhật, CSDL dùng chung có thể dễ dàng trở thành một nút cổ chai về hiệu năng.

<b>Gọi thủ tục từ xa, việc tích hợp thơng qua các tệp hay CSDL giả sử </b>

rằng những thay đổi bởi một ứng dụng dễ dàng kích hoạt các ứng dụng khác thực hiện. Tuy nhiên, thực tế cho thấy rằng đôi khi những thay đổi nhỏ thực sự sẽ kích hoạt nhiều ứng dụng thực hiện. Trong những trường hợp như vậy, việc thay đổi dữ liệu không thực sự quan trọng bằng việc thực hiện một chuỗi các hành động.

Một tập hợp các hoạt động có thể được ghi nhận thơng qua việc sử dụng một thủ tục (có thể dẫn đến tất cả các dạng thay đổi đối với dữ liệu được chia sẻ). Để ngăn chặn việc truy nhập của các ứng dụng đến dữ liệu bên trong các hoạt động (được triển khai bởi các ứng dụng khác), các kỹ thuật đóng gói tiêu chuẩn sẽ được thực hiện như được triển khai với các lệnh gọi thủ tục truyền thống hoặc các yêu cầu đối tượng. Trong các tình huống như vậy, một ứng dụng sẽ cung cấp một thủ tục để cho các ứng dụng khác thực hiện truy nhập đến dữ liệu do nó quản lý thơng qua một dạng lời gọi thủ tục từ xa. Về bản chất, RPC cho phép một ứng dụng A chỉ sử dụng thông tin mà ứng dụng B cho phép (thông qua một thủ tục) mà không thể truy nhập một cách trực tiếp đến các thơng tin đó.

<b>Thơng điệp, một nhược điểm chính của các RPC là bên gọi và bên </b>

được gọi phải được khởi động và chạy cùng thời điểm để lời gọi được thực hiện thành công. Tuy nhiên, trong nhiều trường hợp, các hoạt động một cách đồng bộ như vậy

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<small>23 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

thường khó hoặc không thể đảm bảo. Trong các trường hợp như vậy, việc cung cấp một hệ thống vận chuyển tin nhắn yêu cầu từ ứng dụng A để thực hiện một hành động tại ứng dụng B là cần thiết. Hệ thống tin nhắn đảm bảo rằng các yêu cầu sẽ được gửi và phải hồi sẽ trả về một cách chính xác. Tuy nhiên, thơng điệp khơng thực sự là giải pháp hồn hảo cho việc tích hợp ứng dụng. Nó cũng tạo ra các vấn đề liên quan đến định dạng và bố cục của dữ liệu, nó yêu cầu một ứng dụng phải biết địa chỉ mà thông điệp được gửi đến, kịch bản để xử lý các thông điệp bị thất lạc.

Với bốn cách tiếp cận trên, dễ thấy rằng việc tích hợp ứng dụng không hề đơn giản. Tuy nhiên, phần mềm trung gian (dưới dạng một hệ thống phân tán) có thể giúp một cách đáng kể trong việc tích hợp bằng cách cung cấp các phương tiện phù hợp như hỗ trợ cho RPC hoặc tin nhắn.

1.3.3 Các hệ thống phân tán phổ biến

Các hệ thống phân tán hiện nay phần lớn được đặc trưng bởi tính ổn định. Các nút trong hệ thống được cố định và có ít nhiều các kết nối bền vững và chất lượng cao đến một mạng. Ở một mức độ nhất định, sự ổn định này được thực hiện thông qua một số kỹ thuật để đạt được tính trong suốt trong phân tán.

Tuy nhiên, các vấn đề đã thay đổi khi các thiết bị di động và điện toán nhúng được giới thiệu, và thường được gọi là các hệ thống điện toán phổ biến (pervasive systems). Đây cũng là cách mà hệ thống phân tán một cách tự nhiên. Ranh giới khác biệt là mờ nhạt trong so sánh giữa điện toán và các hệ thống thông tin. Các hệ thống này thường khơng có giao diện truyền thơng duy nhất, chẳng hạn như màn hình hay bàn phím. Thay vào đó, các hệ thống này thường được trang bị rất nhiều cảm biến (Sensor) để thu nhận các hành vi của người dùng. Tương tự như vậy, có vơ số các cơ chế để cung cấp thông tin và phản hồi, thậm chí thường nhằm mục đích điều khiển hành vi.

Nhiều thiết bị trong các hệ thống phổ biến được đặc trưng bởi kích thước nhỏ, chạy bằng pin, di động và chỉ có kết nối khơng dây. Tuy nhiên, các đặt tính trên khơng hồn tồn đặc trưng cho tất cả các thiết bị. Có thể phân biệt 03 loại hệ thống phổ biến mặc dù có sự giống nhau giữa các loại trên: các hệ thống máy tính phổ biến, các hệ thống di động, và các mạng cảm biến.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

1.3.3.1 Các hệ thống Điện toán phổ biến (Ubiquitous Computing Systems) Điện toán phổ biến là dạng điện tốn có thể triển khai ở bất kỳ nơi nào tại bất kỳ thời điểm nào. Trái ngược với dạng điện tốn dựa trên các máy tính để bàn, điện tốn phổ biến có thể triển khai trên bất kỳ thiết bị nào (các thiết bị di động: máy tính bảng, các thiết bị đầu cuối,…). Các yêu cầu cơ bản của một hệ thống máy tính phổ biến bao gồm:

1. Distribution (sự phân tán): các thiết bị được kết nối, phân tán và có thể truy nhập một cách trong suốt với người dùng.

2. Interaction (sự tương tác): sự tương tác giữa người dùng và các thiết bị là rất kín đáo.

3. Context Awareness (nhận thức ngữ cảnh): hệ thống nhận thức ngữ cảnh của người dùng để tối ưu sự tương tác.

4. Autonomy (tự hoạt): các thiết bị hoạt động một cách tự động mà khơng cần có sự can thiệp từ con người

5. Intelligence (thông minh): hệ thống có thể thực hiện rất nhiều các hoạt động khác nhau một cách năng động.

1.3.3.2 Các hệ thống điện toán di động

Các thành phần di động thường là thành phần quan trọng của các hệ thống máy tính phổ biến. Có một số sự khác biệt phân biệt giữa các điện tốn di động và các hệ thống máy tính phổ biến.

Đầu tiên, các thiết bị tạo thành một phần của hệ thống di động (phân tán) có thể rất đa dạng. Thơng thường, điện tốn di động hiện nay được thực hiện với các thiết bị di động như điện thoại thơng minh và các máy tính bảng. Tuy nhiên, các loại thiết bị hoàn toàn khác nhau đang sử dụng giao thức IP để truyền thông. Các thiết bị trên bao gồm điều khiển từ xa, máy nhắn tin, các thiết bị được trang bị trên ô tô, các thiết bị hỗ trợ GPS. Một tính năng đặc trưng của tất cả các thiết bị này là chúng sử dụng truyền thông không dây.

Thứ hai, trong điện tốn di động, vị trí của một thiết bị sẽ thay đổi theo thời gian. Sự thay đổi vị trí có ảnh hưởng của nó trên nhiều vấn đề. Chẳng hạn, nếu vị trí của thiết bị liên tục thay đổi, cần có dịch vụ để xác định toạ độ địa lý của

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<small>25 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

thiết bị theo thời gian. Việc thay đổi vị trí cũng có ảnh hưởng lớn đến việc truyền thông. Trong các mạng di động dạng ad hoc (hay MANET), hai thiết bị trong mạng đã phát hiện ra nhau theo nghĩa chúng biết địa chỉ mạng của nhau. Vậy làm thế nào để định tuyến tin nhắn giữa chúng?

Nếu các tuyến đường là tĩnh thì sẽ khó bền vững khi mà các nút dọc theo đường định tuyến có thể dễ dàng di chuyển ra khỏi phạm vi có thể nhận biết bởi các hàng xóm của nó. Đối với các MANET lớn, việc sử dụng các đường đi được thiết lập trước không phải là sự lựa chọn khả thi. Vì vậy, mạng chịu gián đoạn (disruption-tolerant network) là giải pháp có thể được sử dụng để truyền tin nhắn giữa các thành phần trong điện tốn di động.

Giải pháp ở đây khơng dựa trên việc thiết lập đường truyền giữa nút nguồn và đích mà dựa trên hai nguyên tắc. Đầu tiên, sử dụng kỹ thuật chống gây lụt đặc biệt cho phép một thông điệp được lan truyền dần trên một phần của mạng, cho đến khi đến đích. Tuy nhiên, việc truyền tin như thế này sẽ dẫn đến sự dư thừa thơng tin, nhưng đây là những chi phí cần thiết. Nguyên tắc thứ hai là trong một mạng chịu sự gián đoạn, một nút trung gian sẽ được sử dụng để lưu trữ thông điệp nhận được cho đến khi nó gặp một nút khác trong mạng mà nó có thể truyền tin.

1.3.3.3 Các mạng cảm biến (sensor networks)

Một mạng các cảm biến thường bao gồm hàng chục, hàng trăm, thậm chí hàng ngàn các nút nhỏ, mỗi nút được trang bị một hoặc nhiều thiết bị cảm biến. Ngồi ra, mỗi nút thường có thể đóng vai trò là một nút thực thi. Chẳng hạn, khi một nút với cảm biến có thể phát hiện ra đám cháy, nó sẽ kích hoạt các vịi phun nước. Hầu hết các mạng cảm biến sử dụng truyền thông không dây và thường chạy bằng pin. Nguồn tài nguyên hạn chế, khả năng truyền thông giới hạn, và nhu cầu tiêu thụ năng lượng bị hạn chế là một trong những yêu cầu quan trọng trong các tiêu chí thiết kế các mạng cảm biến.

1.3.4 Công nghệ chuỗi khối và phân tán

Công nghệ chuỗi khối (Blockchain) được giới thiệu bởi Nakamoto [13] với hệ thống tiền điện tử hay tiền mật mã bitcoin. Nakamoto sử dụng công nghệ chuỗi

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

khối để giải quyết vấn đề chi (chuyển tiền) lặp lại trong bitcoin nhưng công nghệ đầy hứa hẹn này đã mang lại rất nhiều ứng dụng khác.

Chuỗi khối là một chuỗi các khối được liên kết với nhau và số lượng các khối tăng một cách liên tục để lưu trữ các giao dịch bên trong các khối. Nền tảng này sử dụng phương pháp phi tập trung cho phép các thông tin được phân tán và mỗi mảnh của thông tin phân tán hay thường được biết đến một cách phổ biến là dữ liệu chia sẻ quyền sở hữu. Các chuỗi khối lưu trữ các lô giao dịch đã được áp dụng mã băm để bảo vệ chúng và chúng được truyền đi trên các mạng điểm – đến – điểm (peer to peer). Một chuỗi khối mang lại những lợi ích nhất định như bảo mật, ẩn danh và tính tồn vẹn của dữ liệu mà khơng có sự can thiệp của bên thứ ba. Các lợi ích này là lý do cơng nghệ này được lựa chọn để lưu trữ hồ sơ của các bệnh nhân trong các bệnh viện hay các dữ liệu nhạy cảm có giá trị khác.

1.3.4.1 Kiến trúc

Để hiểu rõ kiến trúc của chuỗi khối, hãy xem xét từng bước mà giao dịch được gửi từ một người dùng trên một mạng chuỗi khối.

<b><small>Hình Error! No text of specified style in document..3. Các bước mà một giao dịch được gửi, xác minh và thêm </small></b>

<small>vào chuỗi khối </small>

<b>Bước 1. Một giao dịch mới được gửi bởi một người dùng trong </b>

mạng chuỗi khối dẫn đến một khối mới sẽ được tạo ra. Một khối trong chuỗi khối được sử dụng để lưu giữ các giao dịch và các khối này sẽ được phân tán trên tất cả các nút đã kết nối vào trong mạng. Các giao dịch đặt bên trong một khối sẽ được gửi quảng bá đến tất cả các nút trong mạng. Như vậy, tất cả các nút trong mạng sẽ có một

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<small>27 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

bản sao đầy đủ của chuỗi khối để giúp thực hiện tiến trình xác minh. Khi một khối chưa thông tin giao dịch người dùng được phát tán đến tất cả các nút đã kết nối, chúng xác minh rằng khối này không bị chỉnh sửa. Nếu các kết quả của quá trình xác minh là thành cơng thì các nút sẽ thêm khối mới vào bản sao chuỗi khối tại các nút đó.

<b>Bước 2. Tồn bộ q trình khối được bổ sung vào chuỗi được hoàn </b>

tất khi các nút đạt được một sự đồng thuận khi các nút này quyết định các khối nào là hợp lệ để thêm vào chuỗi, khối nào thì khơng. Q trình xác định sự hợp lệ này được thực hiện bởi các nút đã kết nối bằng cách sử dụng các thuật toán đã biết để xác minh giao dịch và để đảm bảo người gửi là một thành đã được xác thực của mạng chuỗi khối. Khi một nút thành công trong việc thực hiện xác nhận, nút được sẽ nhận được phần thưởng là một lượng tiền điện tử xác định. Quá trình xác nhận giao dịch này được gọi là khai thác và nút thực hiện xác nhận được gọi là nút khai thác.

<b>Bước 3. Sau khi q trình xác thực giao dịch được hồn tất, khối mới </b>

sẽ được thêm vào chuỗi khối.

<b>Bước 4. Sau khi tồn bộ q trình xác thực được thực hiện, giao dịch </b>

được hoàn tất.

1.3.4.2 Một số khái niệm cơ bản

Để có thể hiểu được về chuỗi khối, cần nắm vững các khái niệm cơ bản sau: khối, thuật toán đồng thuận.

1) Khối (block)

Là một tập hợp các thơng tin được gói gọn trong một khối. Phần dữ liệu ở đầu khối chứa dữ liệu băm của các khối trước nó trong chuỗi. Một khối chứa 3 thành phần quan trọng là dữ liệu (data), dữ liệu băm của khối hiện tại và dữ liệu băm của khối trước đó. Thành phần dữ liệu có thể là bất kỳ được định nghĩa. Trong trường hợp là tiền mật mã, dữ liệu sẽ chứa giá trị tiền giống như tiền điện tử. Dữ liệu băm duy nhất được lưu trữ trong các khối này có thể được băm bởi hàm băm SHA-256 được sử dụng cho việc định danh tính duy nhất của một khối trong chuỗi.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b><small>Hình Error! No text of specified style in document..4. Cách thức các khối </small></b>

<small>được liên kết lại với nhau trong chuỗi </small>

2) Thuật toán đồng thuận

Mỗi khối được thêm vào chuỗi khi đạt được sự đồng thuận dựa trên một số luật đồng thuận được áp dụng. Một trong những thuật toán đồng thuận phổ biến nhất là Proof of Work – POW (bằng chứng công việc) và đã được sử dụng bởi Nakamoto [13] trong mạng bitcoin. Hoạt động cơ bản của thuật tốn này là có một số các nút hay thành viên trên một mạng chuỗi khối nên khi giao dịch được yêu cầu thêm vào mạng bởi bất kỳ nút nào thì nó cần được xử lý. Quá trình này được gọi là khai thác (mine) và các nút thực hiện việc khai thác được gọi là (miner).

1.3.4.3 Các tính năng chính của chuỗi khối 1) Phi tập trung (phân tán)

Với chuỗi khối thông tin được phân tán trên mạng thay vì được lưu trữ tập trung tại một nút trung tâm. Việc này dẫn đến việc kiểm sốt thơng tin cũng phân tán và xử lý bởi sự đồng thuận đạt được bằng việc chia sẻ đầu vào giữa các nút kết nối vào mạng. Việc phân tán dữ liệu giúp cho dữ liệu trở nên đáng tin cậy hơn khi các sửa đổi trên các dữ liệu này sẽ được nhận biết bởi tất cả các nút trong mạng.

2) Minh bạch dữ liệu

Việc đạt được sự minh bạch dữ liệu trong bất kỳ công nghệ nào là có mối quan hệ dựa trên niềm tin giữa người chủ sở hữu và những người sử dụng. Trong các hệ thống dịch vụ dựa trên công nghệ chuỗi khối người chủ sở hữu của thông tin

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<small>29 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

vẫn có thể đảm bảo được tính riêng tư của nội dung thông tin khi mà người sử dụng vẫn có thể quan sát được các hoạt động liên quan đến các thơng tin đó.

3) An ninh

Các hệ thống dịch vụ dựa trên công nghệ chuỗi khối có sự ổn định cao trong các hoạt động khi mà một sự cố xảy ra tại một nút trong mạng lưới sẽ không gây ra nhiều ảnh hưởng đến các thành phần khác hoặc toàn bộ mạng lưới. Điều này có được nhờ sự phân tán trong hoạt động của công nghệ chuỗi khối.

4) Ẩn danh

Công nghệ chuỗi khối khơng u cầu danh tính thực của những người tham gia vào trong mạng lưới mà vẫn có được sự tin tưởng từ những người khác trong mạng nhờ vào các cơ chế hoạt động của công nghệ này.

<b>1.4 Các kiểu kiến trúc </b>

Kiến trúc hệ thống phân tán được đóng gói với các thành phần (component) và kết nối (connector). Các thành phần có thể là các nút riêng lẻ hoặc các thành phần quan trọng trong kiến trúc, trong khi các thành phần kết nối được sử dụng để kết nối các thành phần.

Thành phần: một đơn vị dạng mô-đun với giao diện được định nghĩa rõ ràng, có thể thay thế, tái sử dụng.

Trình kết nối (thành phần kết nối – connector): liên kết truyền thông giữa các đun.

mơ-Vì vậy, ý tưởng đằng sau các kiến trúc phân tán là để các thành phần này được thể hiện trên các nền tảng khác nhau, nơi các thành phần có thể truyền thơng với nhau qua mạng truyền thông để đạt được các mục tiêu cụ thể.

Hiện nay có 4 kiểu kiến trúc khác nhau, cùng với kiến trúc lai. Ý tưởng cơ bản là tổ chức các thành phần luận lý khác nhau và phân tán các đơn vị tính tốn này trên các máy tính vật lý khác nhau [14].

 Kiến trúc phân tầng (Layered architecture)

 Kiến trúc hướng đối tượng (Object based architecture)  Kiến trúc hướng dữ liệu (Data-centered architecture)  Kiến trúc hướng sự kiện (Event-based architecture)

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

 Kiến trúc lai (Hybrid architecture) 1.4.1 Kiến trúc phân tầng

Kiến trúc phân tầng (lớp) chia tách các tầng chứa các thành phần với nhau, tạo cho nó một cách tiếp cận dạng mơ-đun hố cao hơn. Chẳng hạn như mơ hình OSI phối hợp kiến trúc phân lớp khi tương tác với từng thành phần. Mỗi tương tác là tuần tự mà một tầng sẽ liên lạc với tầng liền kề, và quá trình này cứ tiếp tục cho đến khi yêu cầu được thực hiện [14]. Nhưng trong một số trường hợp nhất định, việc triển khai có thể được thực hiện mà có một số lớp bị bỏ qua, đó được gọi là sự phối hợp giữa các lớp. Thông qua cơ chế thực hiện này, các kết quả tốt hơn có thể thu được nhờ hiệu suất thực thi gia tăng.

<b><small>Hình Error! No text of specified style in document..5. Mơ hình tương tác giữa các lớp </small></b>

Các lớp ở phía dưới cung cấp một dịch vụ cho các lớp ở phía trên. Yêu cầu sẽ được chuyển dịch từ trên xuống dưới, trong khi phản hồi sẽ được gửi từ dưới lên trên. Ưu điểm của phương pháp này là các cuộc gọi luôn đi theo một tuyến đường định trước và mỗi lớp đều có thể dễ dàng được thay thế hoặc chỉnh sửa mà khơng ảnh hưởng đến tồn bộ kiến trúc.

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<small>31 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

<b><small>Hình Error! No text of specified style in document..6. Kiểu kiến trúc cơ bản của một hệ thống phân tán </small></b>

1.4.2 Kiến trúc hướng đối tượng

Kiểu kiến trúc này dựa trên sự sắp xếp lỏng lẻo của các đối tượng. Vì vậy, sẽ khơng có kiến trúc cụ thể như kiến trúc các lớp. Giống như kiến trúc phân lớp, kiến trúc hướng đối tượng không có một tập hợp các bước tuần tự cần thực hiện cho một lời gọi. Mỗi thành phần được tham chiếu như là các đối tượng, trong đó mỗi đối tượng có thể tương tác với các đối tượng khác thông qua một kết nối hoặc một giao diện được cung cấp.

<b><small>Hình Error! No text of specified style in document..7. Mơ hình truyền thơng giữa các đối tượng </small></b>

Q trình trao đổi giữa đối tượng được thực hiện giống như cách gọi phương thức. Chúng thường được gọi là các cuộc gọi thủ tục từ xa (RPC). Chẳng hạn như Java RMI, các dịch vụ Web và các lời gọi REST API. Và thường có các thuộc tính sau:

 Kiểu cấu trúc này thường có cấu trúc lỏng lẻo.  Thành phần là đối tượng.

1.4.3 Kiến trúc hướng dữ liệu

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

Kiến trúc này dựa trên một trung tâm dữ liệu, nơi mà các truyền thơng chính diễn ra thơng qua một kho lưu trữ dữ liệu trung tâm. Kho lưu trữ chung này có thể ở dạng chủ động hoặc bị động. Điều này giống như q trình sản xuất hàng hố. Người sản xuất sản xuất ra các mặt hàng cho một kho dữ liệu chung và khách hàng có thể yêu cầu dữ liệu từ đó. Kho dữ liệu chung này có thể là một cơ sở dữ liệu đơn giản.

<b><small>Hình Error! No text of specified style in document..8. Mơ hình truyền thơng giữa các đối tượng thơng qua kho </small></b>

<small>dữ liệu </small>

Các đối tượng trong kiến trúc này sẽ truyền thông với nhau thông qua một cơ sở dữ liệu chung. Các thành phần (đối tượng) sẽ được cung cấp một không gian lưu trữ liên tục. Tất cả các thông tin liên quan đến các nút trong hệ thống được lưu trữ trong không gian lưu trữ liên tục này. Các đối tượng trong hệ thống khi truyền thông với nhau sẽ đọc/ghi dữ liệu từ/vào các cơ sở dữ liệu này.

1.4.4 Kiến trúc hướng sự kiện

Toàn bộ các truyền thông trong hệ thống được thực hiện thông qua các sự kiện. Khi một sự kiện được tạo ra, nó sẽ được gửi đến một hệ thống trung chuyển (bus). Thông qua cơ chế này, các thành phần khác trong hệ thống sẽ nhận biết được rằng có một sự kiện đã xảy ra. Vì vậy, nếu thành phần nào trong hệ thống cần truyền thông với sự kiện, nó sẽ kéo sự kiện từ hệ thống trung chuyển và xử lý sự kiện đó.

<b><small>Hình Error! No text of specified style in document..9. Mơ hình truyền thông giữa các đối tượng </small></b>

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<small>33 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

Các sự kiện cũng có thể là dữ liệu, hoặc đường dẫn đến các nguồn tài nguyên. Vì vậy, người nhận có thể truy cập bất cứ thông tin nào được gửi đến trong sự kiện và xử lý tương với từng loại thông tin. Quá trình truyền thơng được thực hiện thông qua việc truyền tải các sự kiện đến các thành phần trong hệ thống.

Kiểu kiến trúc này là một dạng với các thành phần được ghép nối lỏng lẻo. Vì vậy, có thể dễ dàng thêm, loại bỏ và sửa đổi các thành phần trong hệ thống. Một lợi thế lớn của kiểu kiến trúc này là các thành phần vốn không đồng nhất trong hệ thống lại có thể liên lạc với hệ thống trung chuyển bằng bất kỳ giao thức truyền thông nào.

Với các đặc điểm trên, kiểu kiến trúc hướng sự kiện dựa trên kiến trúc publisher (nhà xuất bản) – subscriber (th bao). Giữa các nút khơng có truyền thơng trực tiếp hoặc phối hợp. Thay vào đó, các đối tượng được đăng ký dịch vụ liên lạc qua hệ thống trung chuyển sự kiện. Vì vậy, kiểu kiến trúc này có một số cách thức truyền thơng:

 Publisher – Subscriber (nhà xuất bản – thuê bao)

1.4.5.1 Kiến trúc máy khách chủ (Client - Server)

Kiến trúc này có hai thành phần chính, máy khách và máy chủ. Máy chủ thực hiện tất cả các quá trình xử lý, tính tốn và xử lý dữ liệu. Máy khách được sử dụng để truy cập các tài nguyên và dịch vụ do máy chủ (máy chủ từ xa) cung cấp. Các máy khách có thể thực hiện các yêu cầu từ máy chủ và máy chủ sẽ phản hồi tương ứng. Về cơ bản, trong các hệ thống chỉ có một máy chủ được sử dụng. Tuy nhiên, để có thể đảm bảo tính sẵn sàng của các dịch vụ được cung cấp trong hệ thống, nhiều hơn một máy chủ sẽ được sử dụng với kỹ thuật cân bằng tải.

Kiến trúc máy chủ khách có CSDL bảo mật tập trung, chứa các thông tin bảo mật như thông tin đăng nhập và các dữ liệu truy nhập cụ thể. Những người dùng khơng thể truy nhập máy chủ mà khơng có các thơng tin bảo mật. Vì vậy,

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

kiến trúc này ổn định và toàn hơn so với P2P. Sự ổn định có được là nhờ CSDL giúp quản lý việc sử dụng tài nguyên theo một cách an tồn. Tuy nhiên, máy chủ có thể sẽ bị quá tải nếu phải xử lý một lượng lớn các tác vụ trong cùng một thời điểm.

1.4.5.2 Kiến trúc điểm đến điểm (Point-to-Point)

Ý tưởng của kiến trúc này là khơng sử dụng cơ chế kiểm sốt trung tâm trong một hệ thống phân tán. Mỗi nút có thể là máy khách hoặc máy chủ tại một thời điểm nhất định. Nếu một máy yêu cầu dịch vụ trên một máy khác thì nói được coi là máy khách, và máy cung cấp dịch vụ được coi là máy chủ.

Để có thể sử dụng dịch vụ, đầu tiên các máy (nút) phải kết nối vào mạng. Việc tham gia vào một mạng có thể được thực hiện một cách khác nhau tuỳ theo mạng. Và có hai cách thức để một thành phần (nút) mới biết được các nút khác trong mạng đang cung cấp các dịch vụ gì.

 Máy chủ tra cứu tập trung (Centralized Lookup Server): nút mới phải đăng ký với máy chủ tra cứu tập trung các dịch vụ mà nó sẽ cung cấp trên mạng. Vì vậy, để có thể truy cập đến các dịch vụ, các nút trong mạng cần liên lạc với máy chủ tra cứu tập trung và nó sẽ chuyển tiếp các yêu cầu đến các nhà cung cấp dịch vụ

 Hệ thống phi tập trung (Decentralized System): một nút muốn yêu cầu dịch vụ sẽ phải gửi quảng bá các yêu cầu đến tất cả các nút trong mạng, và nếu nút nào có cung cấp dịch vụ tương ứng sẽ phản hồi.

<b>1.5 Mơ hình tương tác </b>

Trong các hệ thống phân tán, mơ hình kiến trúc (architectural model) định nghĩa cách thức mà các thành phần trong hệ thống tương tác với nhau và cách mà các thành phần này được ánh xạ vào một mạng máy tính. Ví dụ như mơ hình máy khách – máy chủ và mơ hình các tiến trình ngang hàng.

Các tiến trình trong một hệ thống phân tán (các tiến trình dạng khách – chủ) tương tác với nhau bằng cách truyền đi các thông điệp (message), dẫn đến sự giao tiếp (truyền tin nhắn) và phối hợp (đồng bộ hoá và sắp xếp các hoạt động) giữa các tiến

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<small>35 </small>Các hệ thống phân tán – Bài 1 Giới thiệu chung về các hệ thống phân tán

trình. Mỗi tiến trình đều có trạng thái riêng. Có hai yếu tố quan trọng ảnh hưởng đến tương tác giữa các tiến trình cho các hệ thống phân tán:

1) Hiệu suất truyền (giao tiếp).

2) Khơng có khái niệm thời gian tồn cục trong các hệ thống phân tán khi mà thời gian trong các máy tính là khác nhau.

Hiệu suất truyền trong một mạng máy tính có các đặc tính liên quan đến độ trễ, băng thơng và jitter (độ trễ trong việc truyền liên tục các gói tin). Sự chậm trễ giữa việc truyền đi một thông điệp bởi một tiến trình và bên nhận của nó được gọi là “độ trễ”. Độ trễ bao gồm độ trễ truyền thông qua phương tiện, thời gian truyền thông điệp và thời gian nhận bởi các dịch vụ truyền thông của hệ điều hành (chẳng hạn như TCP/IP) tại các tiến trình của bên gửi và bên nhận. Độ trễ thay đổi theo trạng thái hoạt động hiện tại của hệ điều hành.

Băng thông của một mạng máy tính là tổng số lượng thơng tin có thể truyền qua nó trong một đơn vị thời gian. Còn jitter là khoảng thời gian cần thiết để truyền đi một thông điệp và giá trị này là thay đổi. Vì nó liên quan đến thời gian thực và lưu lượng truyền thơng.

Có hai mơ hình tương tác là mơ hình hệ thống phân tán đồng bộ và hệ thống phân tán không đồng bộ.

 Các hệ thống phân tán đồng bộ được định nghĩa là các hệ thống mà thời gian để thực thi mỗi bước của một tiến trình có cận trên và cận dưới cụ thể. Mỗi thông điệp được truyền đi đến đích trong một khoảng thời gian giới hạn xác định. Mỗi tiến trình có một đồng hồ cục bộ với độ trễ thấp khi so với thời gian thực. Tuy nhiên, rất khó để có thể đảm bảo được việc truyền thông đúng với các giới hạn thời gian đặt ra trong các hệ thống thực.

 Các hệ thống phân tán khơng đồng bộ khơng có giới hạn về tốc độ thực hiện trên các tiến trình, độ trễ truyền thơng điệp và tốc độ trơi của đồng hồ.

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<b>BÀI TẬP VÀ HƯỚNG DẪN </b>

<b>Câu 1. Hãy nêu các thành phần của một thống phân tán? Câu 2. Nêu các đặc trưng của hệ thống phân tán. </b>

<b>Câu 3. Nêu các kiểu kiến trúc của các hệ thống phân tán. </b>

<b>Câu 4. Sự phân tán được thể hiện như thế nào trong các hệ thống chuỗi khối </b>

(Blockchain).

<b>Câu 5. Mạng viễn thơng có phải là một hệ thống phân tán hay khơng? Vì sao? Câu 6. Các hệ điều hành mạng chạy trên các thiết bị nào? </b>

<i>Chúc Anh/Chị học tập tốt! </i>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<small>1 </small>Các hệ thống phân tán – Bài 2 Tiến trình và truyền thơng trong các hệ thống phân tán

<b> BÀI 2: TIẾN TRÌNH VÀ TRUYỀN THÔNG TRONG CÁC HỆ THỐNG PHÂN TÁN </b>

<b>GIỚI THIỆU </b>

Bài học giới thiệu các khái niệm cơ bản về tiến trình, luồng trong các hệ thống phân tán. Truyền thông và các chế độ truyền thông cũng được trình bày trong bài học này. Sau khi học xong bài học này, người học có thể:

- Hiểu và giải thích được cách thức mà các tiến trình được tạo ra, được thực thi trên máy tính.

- Có thể phân tích và xác định được bao nhiêu luồng cần thiết để giải quyết một lượng cơng việc cụ thể nào đó.

- Hiểu và giải thích được về các dạng ảo hố và ứng dụng của ảo hoá trong các hệ thống phân tán.

- Hiểu và giải thích được về di trú mã, vì sao cần thực hiện di trú mã trong các hệ thống phân tán. So sánh được các cơ chế và chính sách di trú mã. Khi nào thì triển khai cơ chế di trú mã cụ thể nào.

- Hiểu và giải thích được các vấn đề truyền thơng trong các hệ phân tán.

- Phân biệt được các dạng truyền thông trong các hệ thống phân tán và từng trường hợp sử dụng cụ thể của mỗi dạng truyền thông.

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<b>NỘI DUNG BÀI HỌC2.1 Đa luồng </b>

2.1.1 Luồng và tiến trình

Để thực thi một chương trình, một hệ điều hành tạo ra một số các bộ vi xử lý ảo, mỗi cái để chạy một chương trình. Để theo dõi các bộ vi xử lý ảo, hệ điều hành sử dụng một bảng tiến trình, chứa các mục để lưu trữ các giá trị của thanh ghi CPU, các bản đồ bộ nhớ, mở các tệp, các thông tin phân quyền....Các mục này tạo nên một ngữ cảnh tiến trình (process context).

Một tiến trình thường được định nghĩa là một chương trình được thực hiện. Nghĩa là một chương trình đang được thực hiện trên một bộ vi xử lý ảo của hệ điều hành. Và vấn đề quan trọng là hệ điều hành phải hết sức cẩn thận để đảm bảo rằng các tiến trình độc lập khơng thể gây hại hoặc vơ tình làm ảnh hưởng đến sự đúng đắn của mỗi một hành động của tiến trình khác. Nói cách khác, thực tế nhiều tiến trình chia sẻ cùng CPU và các tài nguyên phần cứng khác một cách trong suốt đối với người dùng.

Một luồng (thread) là một phần mã nguồn có thể được thực thi một cách độc lập với chương trình chính. Chẳng hạn, một chương trình có thể có một luồng dạng open (mở) để chờ đợi các sự kiện xác định xảy ra hoặc chạy các công việc phân biệt, cho phép chương trình chính thực hiện các tác vụ khác. Một chương trình có thể có nhiều luồng được thực thi tại một thời điểm và có thể ở trạng thái huỷ hoặc chờ sau khi tác vụ được hoàn tất. Một luồng thường duy trì một lượng tối thiểu thơng tin cho phép một CPU được chia sẻ với một số luồng. Thông thường, một thread context (ngữ cảnh luồng) thường chứa một ngữ cảnh tiến trình, cùng với một số thơng tin phục vụ cho quản lý luồng.

Có hai ý nghĩa quan trọng của việc triển khai nhiều luồng có thể thực thi một cách đồng thời. Đầu tiên, hiệu năng của một ứng dụng đa luồng thường tốt hơn so với phiên bản đơn luồng của nó. Thứ hai, vì các luồng khơng được tự động bảo vệ chúng khỏi các tiến trình khác, nên việc phát triển các ứng dụng đa luồng đòi hỏi nhiều sự đầu tư hơn.

2.1.2 Sử dụng luồng trong các hệ thống phi phân tán

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<small>3 </small>Các hệ thống phân tán – Bài 2 Tiến trình và truyền thông trong các hệ thống phân tán

Một lợi ích quan trọng của các tiến trình đơn luồng là việc chặn lời gọi hệ thống được thực thi sẽ có tác dụng đối với tồn bộ tiến trình. Tuy nhiên, đây cũng là điểm hạn chế của dạng chương trình này. Chẳng hạn, với một chương trình như bảng tính (spreadsheet), giả sử rằng người dùng liên tục thực hiện việc sửa đổi các giá trị. Một thuộc tính quan trọng của một chương trình bảng tính là nó duy trình sự phụ thuộc chức năng giữa các ơ tính khác nhau, thường từ các bảng tính khác nhau. Vì vậy, khi một ơ thay đổi, tất cả các ô phụ thuộc phải tự động cập nhập theo. Khi người dùng thay đổi giá trị trong một ơ đơn lẻ, có thể kéo theo một số lượng lớn các tính tốn sẽ được thực thi. Nếu chỉ có một luồng đơn, việc tính tốn khơng được phép thực hiện khi chương trình đang đợi dữ liệu nhập vào. Như vậy, sẽ khó có thể cung cấp dữ liệu vào khi các thành phần phụ thuộc đang được tính tốn. Vì vậy, cần sử dụng ít nhất hai luồng: một để xử lý tương tác với người dùng và một để cập nhập bảng tính.

Một lợi ích khác của đa luồng là việc khai thác sự song song khi thực hiện các chương trình trên hệ thống có đa bộ vi xử lý (multiprocessor) hoặc đa lõi (multicore). Trong trường hợp này, mỗi luồng được gắn với một CPU hoặc lõi khác nhau khi các dữ liệu chia sẻ được lưu trong bộ nhớ chia sẻ chung. Và khi được thiết kế hợp lý, cơ chế song song có thể trong suốt với người dùng (họ sẽ không cần thiết phải thực hiện các thiết lập để có thể triển khai song song hố các cơng việc): tiến trình sẽ chạy tốt như nhau trên một hệ thống không xử lý song song, mặc dù chậm hơn.

Đa luồng cho cơ chế song song đã trở nên quan trọng hơn với khả năng sử dụng các máy tính đa bộ vi xử lý hay đa nhân giá rẻ. Ngày nay, các hệ thống sử dụng cơ chế đa luồng còn mở rộng các thiết được sử dụng sang các thiết bị di động (điện thoại thông minh, máy tính bảng,...) có bộ vi xử lý đang càng ngày càng được hoàn thiện về hiệu năng trên mức điện năng tiêu thụ.

2.1.3 Luồng trong các hệ thống phân tán

Một tính năng quan trọng của các luồng là chúng có thể cung cấp sự thuận tiện, cho phép chặn các lời gọi hệ thống mà không chặn tồn bộ tiến trình, nơi các luồng đang chạy. Đặc tính này cho phép các luồng nhận được nhiều quan tâm sử dụng trong các hệ thống phân tán vì nó giúp cho việc thể hiện truyền thơng dễ dàng hơn dưới dạng duy trình nhiều kết nối lơ-gíc cùng một lúc.

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

2.1.3.1 Các máy khách đa luồng

Để có được mức độ trong suốt cao trong phân tán, các hệ thống phân tán hoạt động trên các mạng diện rộng cần che giấu thời gian truyền tin nhắn liên tiến trình dài. Độ trễ của các cuộc truyền tin khứ hồi trong mạng diện rộng có thể lên đến hàng trăm mili giây hoặc đôi khi là vài giây.

Cách thức thông thường để che giấu độ trễ của truyền thông là thực hiện truyền thông và lập tức thực hiện một tác vụ khác cùng lúc. Đây là cách thức được sử dụng trong các trình duyệt Web. Một tài liệu Web chứa một tệp HTML với các văn bản cùng các ảnh, biểu tượng,... Để hiển thị các thành phần của một tài liệu Web, trình duyệt phải thiết lập một kết nối TCP/IP, đọc dữ liệu đến, và chuyển nó đi để hiển thị. Việc thiết lập một kết nối cũng như đọc các dữ liệu đến sẽ chặn các hoạt động khác. Và khi xử lý các truyền thông từ xa, thì nhược điểm là thời gian để hồn thành thao tác có thể tương đối dài.

Thơng thường, trình duyệt thường bắt đầu nạp trang HTML và sau đó hiển thị nó. Để che giấu độ trễ trong truyền thơng một cách tốt nhất có thể, một số trình duyệt bắt đầu hiển thị dữ liệu kể cả khi chúng đang được gửi đến. Khi văn bản được hiển thị cho người xem, các thành phần như thành phần cuộn sẽ được hiển thị, trình duyệt vẫn tiếp tục nạp các tệp khác để tạo trang, chẳng hạn như các ảnh. Tuy nhiên, cách thức này chỉ là để tạo cho người dùng cảm giác rằng trang web đang tải nhanh nhưng thực tế thì khơng phải như vậy.

Hiện nay, trong thực tế, người ta thấy rằng trình duyệt Web đang thực hiện một số tác vụ cùng một lúc. Và việc phát triển trình duyệt như một ứng dụng khách đa luồng đang giúp đơn giản hoá các vấn đề một cách đáng kể. Khi tệp HTML chính đang được nạp, thì cùng lúc đó, các luồng khác nhau sẽ được kích hoạt để thực hiện việc tải các phần khác của trang. Mỗi luồng thiết lập một kết nối riêng biệt đến máy chủ và lấy các dữ liệu khác nhau của một trang Web.

Một lợi ích khác quan trọng đối với việc sử dụng các trình duyệt Web đa luồng là các kết nối có thể được mở một cách đồng thời. Trong trường hợp máy chủ bị tải nặng hoặc chậm, sẽ khơng có sự cải thiện thực sự nào về hiệu năng được chú ý so với việc tải các tệp để hình thành trang Web. Tuy nhiên, trong nhiều

</div>

×