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 quán. Nội dung học phần gồm 4 bài sau: Bài 1: Giới thiệu chung về các hệ thống phân tán. Bài 2: Tiến trình và truyền thông các các hệ thống phân tán. 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à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 và an ninh trong các hệ thống phân tán.
Trang 11 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 HỆ THỐNG PHÂN TÁN GIỚI THIỆU
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 quán Nội dung học phần gồm 4 bài sau:
Bài 1: Giới thiệu chung về các hệ thống phân tán
Bài 2: Tiến trình và truyền thông các các hệ thống phân tán
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à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
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
3 A S Tanenbaum and M van Steen, Distributed systems: principles and
paradigms, 2nd ed Upper Saddle RIiver, NJ: Pearson Prentice Hall, 2007
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
Trang 2Sau khi học xong môn học này, các Anh/Chị sẽ đạt được những mục tiêu:
1 Về kiến thức:
- 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,
nguyên lý hoạt động của các hệ thống phân tán
- Tổng hợp và đánh giá được về các loại hệ thống phân tán
- Tổng hợp, giải thích và đánh giá được về các khái niệm luồng, đa luồng,
ảo hoá, di trú mã trong các hệ thống phân tán
- Tổng hợp, giải thích và đánh giá được về truyền thông trong các hệ
thống phân tán
- Đánh giá được các dạng truyền thông
- Đánh giá được các cơ chế đồng bộ thời gian
- Phân tích được về tính nhất quán
- Đánh giá được các sự khác biệt giữa các giao thức nhất quán, mô hình
nhất quán
2 Về kỹ năng
- Lựa chọn được dạng hệ thống phân tán phù hợp để ứng dụng cho các hoạt động thực tiễn
- Áp dụng được cơ chế đa luồng, di trú mã trong các ứng dụng phân tán
- Áp dụng được các cơ chế an ninh, tạo lập được các chính sách an ninh cho các hệ thống phân tán
- 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
3 Về thái độ
- Người học tự tin triển khai, ứng dụng các kỹ thuật liên quan đến các hệ thống phân tán cho các hệ thống đang hoạt động trong thực tế
- Bước đầu có mong muốn tiếp tục theo đuổi các kiến thức sâu hơn về các
hệ thống phân tán, thực hiện các nghiên cứu thực tiễn
Chúc các anh/chị học tập tốt!
Trang 33 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 1: GIỚI THIỆU CHUNG VỀ CÁC HỆ THỐNG
PHÂN TÁN
GIỚI THIỆU
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
Trang 4NỘI DUNG BÀI HỌC
1.1 Các khái niệm cơ bản về Hệ thống phân tán
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.2 Các thành phần của hệ thống phân tán
Phần cứng hệ phân tán: bao gồm máy chủ và các hệ thống máy con được đặt
ở những vị trí khác nhau (địa điểm) và kết nối với nhau thông qua mạng máy tính
- Middleware: phần mềm trung gian
1.1.3 Kiến trúc của hệ thống phân tán
Kiến trúc hệ thống phân tán bao gồm các thành phần (component) và các kết nối (connectors) Các thành phần có thể là các nút (thiết bị phần cứng, phần mềm) hoặc các thành phần quan trọng trong kiến trúc, nơi mà các kết nối được sử dụng để liên kết các thành phần lại với nhau
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)
Trang 55 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 nguyên tính toá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
Trang 61.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)
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
trung gian
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;
Trang 77 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à hoà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 hoá 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
1.2 Các đặc trưng của hệ thống phân tán
1.2.1 Tập hợp các thành phần tính toá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 toá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 toá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
Trang 8chung 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
1.3 Các loại hệ thống phân tán
1.3.1 Các hệ thống điện toán phân tán
1.3.1.1 Tính toá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 toán hiệu suất cao Trong tính toá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
Trang 99 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 toá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 toá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 toá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 toá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 toá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 toá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 toá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]
a) Các loại tính toán cụm
Trang 10Các cụm tính toán được sử dụng trong nhiều tổ chức để giảm thời gian tính toán, lưu trữ dữ liệu nhanh hơn Các cụm tính toán này có thể được chia làm
03 loại chính và các cụm tính toá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 toá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 toá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 toán Trong các cụm tính toá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 toá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 nguyên tính toá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) Các đặc trưng của điện toán cụm
Chi phí, kỹ thuật tính toá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
Trang 1111 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 toán, trong một cụm tính toán, nhiều máy tính làm việc với nhau để cung cấp khả năng tính toán tập trung, giúp cho cho tốc độ tính toá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 toá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 toá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 toán hiện tại, không làm gián đoạn quá trình tính toán Đây là điểm mà các máy tính cỡ lớn không thể có được
c) Quản lý cụm
Truyền tin nhắn và liên lạc, thông điệp (message) là cơ chế giúp các
đố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
Quản lý các tác vụ (Task Scheduling), việc quản lý tác vụ trở nên
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 toá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]
Trang 12Quản lý lỗi trong điện toán cụm (Node failure management), là một
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 toán lưới (Grid Computing)
a) Giới thiệu
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 toà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 quân 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 toán lưới/điện toán lưới)
Về cơ bản, tính toá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 toá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 toá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 toá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 toán cụm
Khái niệm điện toá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 toá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
Trang 1313 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ể hoà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 toá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) Chia sẻ tài nguyên trong lưới
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 toá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 toá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 toán lưới yê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
Trang 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 toá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 toá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 hoá
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
c) Các ứng dụng điện toán lưới
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 ngoà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
Trang 1515 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 ngoài hành tinh Vì có quá 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 nguyên tính toá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 hoá 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 hoàn thành phân tích dữ liệu được yê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
Trang 16sẽ 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ể hoà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)
a) Giới thiệu
Điện toán đám mây (cloud computing) hay điện toán máy chủ ảo, là
mô hình điện toá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 toá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 toá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) Ứng dụng của điện toán đám mây
Đ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 toá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 toá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
Trang 1717 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 toà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
Bảng 1 Ví dụ về các thành phần của các giao dịch
BEGIN_TRANSACTION Bắt đầu một giao dịch
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ũ
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
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
Trang 18có thể là gửi, nhận, và chuyển tiếp thư điện tử Trong một hệ thống kế toá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 ngoài, giao dịch xảy
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 toán, giao dịch cha mẹ sẽ huỷ, khôi phục toà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
Trang 1919 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
Trang 20Hì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ệ
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ả
Trang 2121 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 yê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 Ngoà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:
File transfer (chuyển tệp tin), bản chất của tích hợp thông qua
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
Trang 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
Cơ sở dữ liệu chia sẻ, nhiều vấn đề liên quan đến tích hợp thông qua
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ó
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 Ngoà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
Gọi thủ tục từ xa, việc tích hợp thông qua các tệp hay CSDL giả sử
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 đó
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
đượ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
Trang 2323 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 hoà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 hoàn toà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
Trang 241.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 toá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 toán dựa trên các máy tính để bàn, điện toá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
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 toá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
Trang 2525 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 toá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 Ngoà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
Trang 26khố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 toà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
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
vào chuỗi khối
Bước 1 Một giao dịch mới được gửi bởi một người dùng trong
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
Trang 2727 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ước 2 Toàn bộ quá trình khối được bổ sung vào chuỗi được hoàn
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 Quá 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ước 3 Sau khi quá trình xác thực giao dịch được hoàn tất, khối mới
sẽ được thêm vào chuỗi khối
Bước 4 Sau khi toàn bộ quá trình xác thực được thực hiện, giao dịch
đượ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
Trang 28Hình Error! No text of specified style in document 4 Cách thức các khối
được liên kết lại với nhau trong chuỗi
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 toá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 soá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
Trang 2929 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 yê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
1.4 Các kiểu kiến trúc
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 toá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)
Trang 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 hoá 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
Hình Error! No text of specified style in document 5 Mô hình tương tác giữa các lớp
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 toàn bộ kiến trúc
Trang 3131 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
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
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
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
Quá 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
Trang 32Kiế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ư quá trình sản xuất hàng hoá 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
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
dữ liệu
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 đó
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
Trang 3333 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 (thuê 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 toá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,
Trang 34kiế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 toà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 soá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
1.5 Mô hình tương tác
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
Trang 3535 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 toà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ồ
Trang 36
BÀI TẬP VÀ HƯỚNG DẪN
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
Câu 3 Nêu các kiểu kiến trúc của các hệ thống phân tán
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
(Blockchain)
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?
Chúc Anh/Chị học tập tốt!
Trang 371 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ÀI 2: TIẾN TRÌNH VÀ TRUYỀN THÔNG TRONG CÁC
HỆ THỐNG PHÂN TÁN
GIỚI THIỆU
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 hoá 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
Trang 38NỘI DUNG BÀI HỌC
2.1 Đa luồng
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
Trang 393 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 toà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 toán sẽ được thực thi Nếu chỉ có một luồng đơn, việc tính toá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 toá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 hoá 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 toà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
Trang 402.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 để hoà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