lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
CHƯƠNG 1 TỔNG QUAN VÀ KIẾN TRÚC
1.1 Tổng quan về các hệ thống phân tán
Nói về những bước tiến lịch sử trong sphát triển của các hệ thống mạng máy tính,
bắt đầu vào đầu những năm 1960, thời điểm máy tính còn kích cỡ rất lớn,
đắt tiền chỉ được sử dụng trong các tổ chức nghiên cứu quan chính phủ.
Nhu cầu về các máy tính bị lập này nảy sinh để giao tiếp chia sẻ thông tin.
Vì vậy, khái niệm mạng máy tính đã ra đời. Năm 1969, một sự kiện quan trọng đã
diễn ra với việc thành lập ARPANET, Mạng lưới Cơ quan Dự án Nghiên cứu Nâng
cao. Được phát triển bởi Bộ Quốc phòng Hoa Kỳ, ARPANET mạng diện rộng
đầu tiên sử dụng chuyển mạch gói, một phương pháp truyền dữ liệu mang tính cách
mạng. Nó kết nối bốn trường đại học lớn, đánh dấu sự ra đời của cái mà ngày nay
chúng ta gọi Internet. Trong vài thập kỷ tiếp theo, mạng máy tính phát triển
nhanh chóng. Vào những năm 1970, công nghệ Ethernet xuất hiện, cho phép máy
tính giao tiếp trong mạng cục bộ (LAN). Sự phát triển này đã mở đường cho sự
phát triển của máy tính cá nhân và thiết lập mạng doanh nghiệp. Những năm 1980
chứng kiến sự ra đời của Giao thức điều khiển truyền dẫn Giao thức Internet
(TCP/IP), một bộ giao thức đã trở thành xương sống của Internet. Với việc áp dụng
TCP/IP, các mạng khác nhau giờ đây thể giao tiếp liền mạch, dẫn đến smở
rộng toàn cầu của Internet. Những năm 1990 thời điểm bước ngoặt của mạng
máy tính. World Wide Web, do Sir Tim Berners-Lee tạo ra, cung cấp giao diện thân
thiện với người dùng để truy cập thông tin trên Internet. Bước đột phá này đã dân
chủ hóa việc tiếp cận kiến thức, cách mạng hóa giáo dục, thương mại truyền
thông. Khi chúng ta bước vào thế kỷ 21, các công nghệ mạng không dây, chẳng
hạn như Wi-Fi, xuất hiện, giải phóng chúng ta khỏi giới hạn của kết nối dây.
Cuộc cách mạng không dây này mang lại tính di động chưa từng có, cho phép
chúng ta kết nối mọi lúc, mọi nơi. Ngày nay, chúng ta thấy mình đang ở kỷ nguyên
Internet vạn vật (IoT), nơi các vật dụng hàng ngày được kết nối với Internet, tạo ra
một mạng lưới rộng lớn gồm các thiết bị được kết nối với nhau. Từ nhà thông minh
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
đến phương tiện tự hành, IoT đang định hình lại cuộc sống của chúng ta theo những
cách mà trước đây chúng ta chỉ có thể tưởng tượng.
Những bước phát triển nhảy vọt của máy tính cũng như mạng máy tính đã làm thay
đổi cách thức con người sử dụng máy tính cũng như thay đổi yêu cầu về chất
lượng dịch vụ đối với các hệ thống máy tính. Con người sử dụng máy tính không
phải chỉ để thực hiện các phép tính toán hay cho công việc, ngày nay chúng ta sử
dụng máy tính còn cho các nhu cầu ngày càng đa dạng như giải trí (xem phim, nghe
nhạc, chơi game, ...), kết nối con người (chat trực tuyến, họp trực tuyến, ...), giao
dịch mua bán (mua hàng trực tuyến). Liên quan đết chất lượng dịch vụ, ngày nay
người dùng không thể nào chấp nhận kiên trì với việc ngồi chờ 1 trang web tải
trong phòng vài phút, dù rằng cách đây hơn 10 năm thì họ sẵn sàng chịu đựng điều
đó. Với việc nhu cầu sử dụng máy tính ngày càng đa dạng yêu cầu về chất lượng
dịch vụ của người dùng ngày càng được nâng cao, các nhà cung ứng dịch vụ cũng
như cung ứng dịch vụ mạng cần phải nghiên cứu thuyết về Các hệ thống phân
tán để làm sao đưa vào ứng dụng và tối ưu cho hoạt động của hệ thống của họ. Đó
là lý do ra đời của bộ môn Các hệ thống phân tán và ứng dụng.
1.2 Định nghĩa các hệ thống phân tán
Trong cộng đồng nghiên cứu vHệ phân tán, nhiều định nghĩa Hệ phân tán được
đưa ra, tuy nhiên một định nghĩa của Giáo Tannenbaum được cộng đồng chấp
nhận là định nghĩa chính xác nhất, đó là:
"A collection of independent connected computers that provides services to its
users as a single coherent system."
Tạm dịch: Hệ phân tán được định nghĩa là một tập hợp các máy tính độc lập có
kết nối, nó cung cấp các dịch vụ cho người dùng như một máy tính duy nhất.
Định nghĩa này có thể được phân tích với các ý chính sau:
Tập hợp máy tính độc lập: Tập hợp các máy tính không phụ thuộc vào nhau,
có thể khác nhau về kiến trúc phần cứng cũng như phần mềm.
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Được kết nối với nhau: Được kết nối với nhau qua một htầng mạng máy
tính. Các phần mềm trên các máy tính khác nhau có thể phối hợp, chia sẻ tài
nguyên với nhau.
Cùng thực hiện nhiệm vụ chung: Các máy tính phải cùng nhau thực hiện một
nhiệm vụ chung nào đó, thường là cùng nhau cung cấp một dịch vụ cho
người dùng.
Cung cấp dịch vụ một cách thống nhất: Thống nhất về giao diện, về cách
truy cập dịch vụ (với các mức độ khác nhau).
Người sử dụng không phải quan tâm đến các chi tiết của hệ thống: đây còn
được gọi là đặc tính trong suốt của hệ phân tán. Đối với người dùng, người
dùng như chỉ sử dụng một máy tính duy nhất, dù phía sau là cả một hệ
thống khổng lồ vận hành, nhưng chúng hoàn toàn trong suốt với người dùng.
1.3 Các đặc điểm của hệ thống phân tán
Trong nội dung phần này, chúng ta scùng nhau tìm hiểu các đặc điểm của hệ phân
tán: Khả năng chia sẻ tài nguyên, tính trong suốt, tính mở, và khả năng mở rộng hệ
thống.
1.3.1 Khả năng chia sẻ tài nguyên
Mục tiêu quan trọng của hthống phân tán giúp người dùng (và ứng dụng) dễ
dàng truy cập chia sẻ tài nguyên từ xa. Tài nguyên thể hầu hết mọi thứ,
nhưng các ví dụ điển hình bao gồm thiết bị ngoại vi, phương tiện lưu trữ, dữ liệu,
tệp, dịch vụ mạng, chỉ kể tên một số. nhiều do để muốn chia sẻ tài nguyên.
Một lý do rõ ràng là về kinh tế. Ví dụ: việc chia sẻ một thiết bị lưu trữ đáng tin cậy
cao cấp duy nhất sẽ rẻ hơn so với việc phải mua và duy tthiết bi lưu trữ riêng cho
từng người dùng. Việc kết nối người dùng tài nguyên cũng giúp cộng tác trao
đổi thông tin dễ dàng hơn, như được minh họa bằng sự thành công của Internet với
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
các giao thức đơn giản đtrao đổi tệp, thư, tài liệu, âm thanh và video. Khả năng
kết nối của Internet đã cho phép các nhóm người phân tán rộng rãi về mặt địa
làm việc cùng nhau bằng tất cả các loại phần mềm nhóm, nghĩa phần mềm để
cộng tác chỉnh sửa, hội nghị từ xa,
v.v., như được minh họa bởi các công ty phát triển phần mềm đa quốc gia đã thuê
ngoài phần lớn sản xuất mã của họ sang châu Á, cũng như vô số công cụ cộng tác
đã trở nên sẵn có (dễ dàng hơn) do đại dịch COVID-19.
Việc chia sẻ tài nguyên trong các hệ thống phân tán cũng được minh họa bằng sự
thành công của các mạng ngang hàng chia sẻ tệp như BitTorrent. Những hệ thống
phân tán này giúp người dùng chia sẻ tập tin trên Internet một cách đơn giản. Mạng
ngang hàng thường liên quan đến việc phân phối các tệp phương tiện như âm thanh
video. Trong các trường hợp khác, công nghệ này được sử dụng để phân phối
lượng lớn dữ liệu, như trong trường hợp cập nhật phần mềm, dịch vụ sao lưu
đồng bộ hóa dữ liệu trên nhiều máy chủ.
Việc tích hợp liền mạch các tiện ích chia sẻ tài nguyên trong môi trường nối mạng
hiện nay cũng đã trở nên phổ biến. Một nhóm người dùng thể chỉ cần đặt các
tập tin vào một thư mục chia sẻ đặc biệt được duy trì bởi bên thứ ba trên Internet.
Bằng cách sdụng phần mềm đặc biệt, thư mục dùng chung hầu như không thể
phân biệt được với các tmục khác trên máy tính của người dùng. Trên thực tế,
các dịch vụ này thay thế việc sử dụng thư mục dùng chung trên hệ thống tệp phân
tán cục bộ, cung cấp dữ liệu cho người dùng độc lập với tổ chức họ thuộc về
và không phụ thuộc vào vị trí của họ. Dịch vụ này được cung cấp cho các hệ điều
hành khác nhau. Nơi lưu trữ chính xác dữ liệu được ẩn hoàn toàn khỏi người dùng
cuối.
1.3.2 Tính trong suốt phân tán
Tính trong suốt trong các hệ thống phân tán đề cập đến mức độ hệ thống xuất
hiện như một thực thể duy nhất, gắn kết với người dùng, mặc thể bao gồm
nhiều thành phần được kết nối với nhau. Nó nhằm mục đích bảo vệ người dùng và
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
ứng dụng khỏi sự phức tạp của kiến trúc bản, cho phép họ tương tác với hệ
thống một cách đơn giản. Có một số loại trong suốt trong hệ thống phân tán:
Tính trong suốt truy cập: Điều này đảm bảo rằng người dùng ứng dụng thể
truy cập tài nguyên (chẳng hạn như tệp, dịch vụ hoặc dữ liệu) một cách thống nhất
nhất quán, bất kể vị trí thực tế hoặc phân bổ của họ trên mạng. Điều này
nghĩa là người dùng không cần biết chi tiết cụ thể về vị trí của tài nguyên.
Tính trong suốt của vị trí: Với tính trong suốt của vị trí, người dùng không cần biết
địa chỉ vật lý hoặc mạng của tài nguyên. Điều này cho phép truy cập liền mạch vào
các tài nguyên mà không cần phải quan tâm đến chi tiết về vị trí của chúng.
Tính trong suốt trong di chuyển: Tính trong suốt trong di chuyển cho phép các tài
nguyên được di chuyển hoặc sao chép qua các nút khác nhau trong hệ thống
không làm gián đoạn các hoạt động đang diễn ra. Người dùng ứng dụng tiếp tục
tương tác với tài nguyên như thể nó ở vị trí ban đầu.
Tính trong suốt của bản sao: Tính trong suốt của bản sao đảm bảo rằng nhiều bản
sao của tài nguyên (chẳng hạn như dữ liệu hoặc dịch vụ) được quản theo cách
trong suốt đối với người dùng. Điều này nghĩa là người dùng không cần biết h
đang tương tác với bản sao nào hệ thống sẽ quản việc sao chép tính nhất
quán ở hậu trường.
Tính trong suốt đồng thời: Kiểu trong suốt này đảm bảo rằng nhiều người dùng
hoặc ứng dụng có thể truy cập đồng thời các tài nguyên được chia sẻ không can
thiệp lẫn nhau. Hệ thống quản quyền truy cập đồng thời vào tài nguyên, đảm bảo
tính nhất quán và chính xác.
Tính trong suốt của lỗi: Tính trong suốt của lỗi đảm bảo rằng hệ thống tiếp tục hoạt
động đáng tin cậy ngay cả khi lỗi phần cứng hoặc phần mềm. Điều này thể
liên quan đến các cơ chế như khả năng chịu lỗi, dự phòng và các thủ tục phục hồi.
Tính trong suốt về hiệu suất: Tính trong suốt về hiệu suất nhằm mục đích cung cấp
mức hiệu suất nhất quán cho người dùng, bất kể tải của hệ thống hay các nút cụ thể
đang được sdụng. Điều này thể liên quan đến kỹ thuật cân bằng tải phân
bổ tài nguyên.
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Tính trong suốt về quy mô: Tính trong suốt này tập trung vào khả năng mở rộng
quy mô của hệ thống để đáp ứng số lượng người dùng, tài nguyên hoặc nhiệm vụ
ngày càng tăng. đảm bảo rằng hệ thống thể thêm hoặc xóa tài nguyên một
cách linh hoạt mà không ảnh hưởng đến hoạt động chung của nó.
Bằng cách cung cấp các hình thức trong suốt này, các hệ thống phân tán nhằm mục
đích đơn giản hóa sự phức tạp của việc quản lý mạng lưới các nút được kết nối với
nhau. Điều này cho phép người dùng ứng dụng tương tác với hệ thống một cách
đơn giản, bất kể sự phân bổ tài nguyên cơ bản. Tính trong suốt là yếu tố then chốt
giúp hệ thống phân tán trở nên thiết thực, đáng tin cậy thân thiện với người
dùng.
1.3.3 Tính mở
Tính mở trong bối cảnh của các hệ thống phân tán đề cập đến mức độ mà hệ thống
được thiết kế với các tiêu chuẩn, giao thức giao diện mở cho phép khả năng
tương tác, khả năng mở rộng và khả năng truy cập. Hệ thống phân tán mở khuyến
khích sự hợp tác, đổi mới tích hợp các thành phần đa dạng từ các nguồn khác
nhau.
Dưới đây là một số khía cạnh chính của tính mở trong hệ thống phân tán:
Các tiêu chuẩn giao thức mở: Một hệ thống phân tán mở dựa trên các tiêu chuẩn
và giao thức được xác định rõ ràng, có sẵn công khai để liên lạc và tương tác. Các
tiêu chuẩn này thường được phát triển và duy trì bởi các tập đoàn, tổ chức hoặc cơ
quan tiêu chuẩn trong ngành. dbao gồm HTTP/HTTPS cho giao tiếp web,
SMTP cho email và TCP/IP cho giao tiếp mạng.
Khả năng tương tác: Một hệ thống phân tán mở cho phép các thành phần, thiết bị
hoặc phần mềm khác nhau từ nhiều nhà cung cấp khác nhau hoạt động liền mạch
với nhau. Điều này cho phép người dùng chọn các công cụ hoặc thành phần tốt
nhất cho nhu cầu cụ thể của họ không bị ràng buộc vào hsinh thái của một
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
nhà cung cấp duy nhất. Khả năng mở rộng: Một hệ thống mở được thiết kế để dễ
dàng mở rộng thích ứng nhằm đáp ứng các yêu cầu ngày càng phát triển.
cung cấp các giao diện và API (Giao diện lập trình ứng dụng) cho phép các nhà
phát triển thêm chức năng, dịch vụ hoặc -đun mới không làm thay đổi
bản hệ thống hiện có.
Khả năng truy cập tài liệu: Tính mở cũng ngụ ý việc cung cấp tài liệu ràng
toàn diện cho phép các nhà phát triển, người dùng quản trị viên hiểu và tương
tác với hệ thống một cách hiệu quả. Điều này đảm bảo rằng kiến thức về hệ thống
luôn sẵn có và có thể được chia sẻ trong cộng đồng.
Hợp tác cộng đồng: Các hệ thống phân tán mở thường thúc đẩy cộng đồng các nhà
phát triển, người dùng các bên liên quan cộng tác để cải thiện, nâng cao hỗ
trợ hệ thống. Cách tiếp cận hợp tác này dẫn đến kiến thức được chia sẻ, các phương
pháp hay nhất và sự phát triển nhanh chóng của các tính năng mới.
Cấp phép Sở hữu ttuệ: Tính mở thể liên quan đến việc sử dụng các giấy
phép nguồn mở cho phép chia sẻ, sửa đổi phân phối lại mã nguồn của hệ thống.
Điều này thúc đẩy tính minh bạch, đổi mới và phát triển dựa vào cộng đồng.
Tích hợp với các hệ thống hiện có: Một hệ thống phân tán mở phải khả năng
tích hợp với sở hạ tầng, công nghệ hệ thống hiện . Điều này đặc biệt
quan trọng trong môi trường doanh nghiệp nơi khả năng tương tác với các hệ thống
đã được thiết lập là rất quan trọng.
Tính trung lập của nhà cung cấp: Các hệ thống phân tán mở nhằm mục đích tránh
sự khóa chặt của nhà cung cấp, trong đó người dùng phụ thuộc vào sản phẩm hoặc
dịch vụ của một nhà cung cấp duy nhất. Điều này cho phép người dùng có sự linh
hoạt và lựa chọn hơn trong việc lựa chọn và thay đổi các thành phần khi cần thiết.
Bảo mật và tin cậy: Tính mở không có nghĩa là hy sinh tính bảo mật. Điều quan
trọng là các hệ thống phân tán mở phải có cơ chế bảo mật mạnh mẽ, với các quy
trình minh bạch để giải quyết các lỗ hổng và đảm bảo tính toàn vẹn và bảo mật
của dữ liệu.
Nhìn chung, tính mở trong các hệ thống phân tán thúc đẩy cách tiếp cận hợp tác và
toàn diện để phát triển công nghệ. Nó trao quyền cho người dùng, thúc đẩy sự đổi
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
mới tạo ra một hsinh thái sôi động gồm các công cụ dịch vụ thể phát
triển để đáp ứng nhu cầu đa dạng của người dùng và ứng dụng. Cách tiếp cận này
công cụ định hình sự thành công của nhiều công nghệ chúng ta sử dụng ngày
nay.
Khả năng mở rộng hệ thống
Khả năng mở rộng trong các hệ thống phân tán đề cập đến khả năng của hệ thống
trong việc xử khối lượng công việc hoặc tải ngày càng tăng khi được bổ sung
nhiều tài nguyên hơn, ví dụ như máy chủ, không ảnh hưởng tiêu cực đến hiệu
suất. Đây một yếu tquan trọng cần cân nhắc khi thiết kế xây dựng các hệ
thống phân tán, cho phép chúng phát triển thích ứng với những nhu cầu
thay đổi.
Có hai loại khả năng mở rộng chính:
Khả năng mở rộng theo chiều dọc: Khả năng mở rộng theo chiều dọc, còn được
gọi mở rộng quy mô, liên quan đến việc bổ sung thêm nhiều tài nguyên (ví dụ
như CPU, bộ nhớ hoặc bộ lưu trữ) vào một máy hoặc nút trong hệ thống. Cách tiếp
cận này những hạn chế bạn chỉ có thể mở rộng quy cho một máy duy nhất
trước khi đạt đến giới hạn phần cứng. Nó thường được sử dụng cho các ứng dụng
yêu cầu sức mạnh tính toán cao nhưng có thể không phù hợp để xử lý số lượng lớn
người dùng hoặc yêu cầu đồng thời.
Khả năng mở rộng theo chiều ngang: Khả năng mở rộng theo chiều ngang, còn
được gọi là mở rộng quy mô, liên quan đến việc thêm nhiều máy hoặc nút hơn vào
hệ thống phân tán. Cách tiếp cận này cho phép khả năng mở rộng hầu như không
giới hạn vì bạn có thể tiếp tục bổ sung thêm máy nếu cần. Nó rất phù hợp để xử lý
số lượng lớn người dùng hoặc yêu cầu đồng thời, khiến nó trở thành lựa chọn phổ
biến cho các ứng dụng web, dịch vụ đám mây các hthống khác nhu cầu cao.
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Một số khái niệm và kỹ thuật quan trọng liên quan đến khả năng mở rộng trong h
thống phân tán có thể được kể đến như:
Cân bằng tải: Cân bằng tải phân phối các yêu cầu hoặc tác vụ đến trên nhiều máy
chủ hoặc nút để đảm bảo rằng không máy nào bị quá tải. nhiều thuật toán
khác nhau để cân bằng tải, bao gồm thuật toán quay vòng, thuật toán ít kết nối nhất
và hàm băm IP, cùng nhiều thuật toán khác.
Phân vùng/Sharding: Phân vùng bao gồm việc chia một tập dliệu hoặc khối lượng
công việc lớn thành các phần nhỏ hơn, dễ quản lý hơn để thphân phối trên
nhiều nút. Phân mảnh một dạng phân vùng cụ thể trong đó dliệu được phân
chia dựa trên một tiêu chí cụ thể (ví dụ: theo ID người dùng, khu vực địa lý). Phân
vùng giúp phân phối tải cải thiện hiệu suất bằng cách cho phép xử song song.
Nhân bản: Sao chép liên quan đến việc tạo bản sao của dliệu hoặc dịch vụ trên
nhiều nút để cải thiện khả năng chịu lỗi và tính khả dụng. Nó cũng có thể được sử
dụng để phân phối khối lượng công việc đọc nhiều, cho phép nhiều nút phục vụ
các yêu cầu đọc cùng một lúc.
Bộ nhớ đệm: Bộ nhớ đệm liên quan đến việc lưu trữ dữ liệu được truy cập thường
xuyên trong bộ nhớ hoặc lớp lưu trữ truy cập nhanh để giảm nhu cầu tìm nạp dữ
liệu đó tbộ lưu trữ chậm hơn hoặc các nút từ xa. Bộ nhớ đệm thể cải thiện
đáng kthời gian phản hồi của hệ thống, đặc biệt đối với khối lượng công việc đọc
nhiều. hình nhất quán: Các hệ thống phân tán khác nhau thể áp dụng các
hình nhất quán khác nhau, chẳng hạn như tính nhất quán mạnh mẽ, tính nhất
quán cuối cùng hoặc tính nhất quán nhân quả, thể ảnh hưởng đến cách dữ liệu
được sao chép và phân phối.
Xử lý sự cố: Hệ thống phân tán phải được thiết kế để xử lý lỗi một cách khéo léo.
Điều này bao gồm các cơ chế phát hiện và khôi phục sau lỗi nút cũng nđảm bảo
độ bền của dữ liệu.
Tự động mở rộng quy mô: Tự động mở rộng quy mô là một kỹ thuật được sử dụng
trong môi trường đám mây cho phép tài nguyên được tự động thêm hoặc xóa dựa
trên các điều kiện được xác định trước, chẳng hạn như tải tăng.
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Giám sát và đo lường: Việc giám sát và thu thập số liệu phù hợp là rất quan trọng
để hiểu được hiệu suất hệ thống và mức sử dụng công suất. Thông tin này rất cần
thiết để đưa ra quyết định sáng suốt về việc mở rộng quy mô.
Tóm lại, việc thiết kế một hệ thống phân tán thể mở rộng đòi hỏi phải xem xét
cẩn thận các yếu tố như cân bằng tải, phân vùng, sao chép, bộ nhớ đệm khả năng
chịu lỗi. Bằng cách sử dụng các kỹ thuật này, các nhà phát triển thể xây dựng
các hệ thống thể phát triển để đáp ứng nhu cầu ngày càng tăng trong khi vẫn
duy trì hiệu suất và độ tin cậy tốt.
1.4 Kiến trúc Hệ phân tán
Chúng tôi bắt đầu thảo luận về kiến trúc bằng cách trước tiên xem xét cách tổ chức
logic của một hệ thống phân tán thành các thành phần phần mềm, còn được gọi là
kiến trúc phần mềm của nó. Nghiên cứu về kiến trúc phần mềm đã trưởng thành
đáng kể hiện nay người ta thường chấp nhận rằng việc thiết kế hoặc áp dụng
kiến trúc là rất quan trọng cho sphát triển thành công của các hệ thống phần mềm
lớn.
Đối với cuộc thảo luận của chúng ta, khái niệm về phong cách kiến trúc là quan
trọng. Kiểu nvậy được hình thành dựa trên các thành phần, cách các thành phần
được kết nối với nhau, dữ liệu trao đổi giữa các thành phần cuối cùng cách
các thành phần này được cấu hình chung trong một hệ thống. Một thành phần
một đơn vị mô-đun với các giao diện được yêu cầu cung cấp được xác định
ràng thể thay thế được trong môi trường của nó. Điều quan trọng một bộ
phận thể được thay thế, đặc biệt trong khi hệ thống vẫn tiếp tục hoạt động.
Điều này do thường không phải một lựa chọn để tắt hệ thống để bảo trì. Tốt
nhất, chỉ một phần của thể tạm thời không hoạt động. Việc thay thế một thành
phần chỉ thể được thực hiện nếu các giao diện của vẫn còn nguyên. Trong
thực tế, chúng tôi thấy rằng việc thay thế hoặc cập nhật một thành phần nghĩa
một phần của hệ thống (chẳng hạn như máy chủ), chạy bản cập nhật thường
xuyên chuyển sang các thành phần được làm mới sau khi quá trình cài đặt của
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
chúng hoàn tất. Các biện pháp đặc biệt có thể cần được thực hiện khi mt phần của
hệ thống phân tán cần được khởi động lại để các bản cập nhật hiệu lực. Các biện
pháp như vậy có thể bao gồm việc các chế độ dự phòng được nhân rộng để đảm
nhiệm trong khi quá trình khởi động lại một phần đang diễn ra.
Một khái niệm khó nắm bắt hơn một chút khái niệm về trình kết nối, thường
được mô tả như một cơ chế làm trung gian cho việc giao tiếp, điều phối hoặc hợp
tác giữa các thành phần. dụ: một trình kết nối thể được hình thành bởi các
phương tiện cho các cuộc gọi thủ tục (từ xa), truyền tin nhắn hoặc truyền dữ liệu.
Nói cách khác, trình kết nối cho phép luồng điều khiển dữ liệu giữa các thành
phần.
Bằng cách sử dụng các thành phần đầu nối, chúng ta thể tạo ra nhiều cấu hình
khác nhau, do đó, được phân loại thành các kiểu kiến trúc. Một số kiểu cho đến
nay đã được xác định, trong đó những kiểu quan trọng nhất đối với hệ thống phân
tán là:
Kiến trúc phân lớp
Kiến trúc hướng dịch vụ
Cấu trúc xuất bản-đăng ký
1.4.1 Kiến trúc phân lớp
Ý tưởng cơ bản cho kiểu phân lớp rất đơn giản: các thành phần được tổ chức theo
kiểu phân lớp trong đó một thành phần ở lớp Lj có thể gọi xuống một thành phần
ở lớp cấp thấp hơn Li (với i < j) và thường mong đợi phản hồi. Chỉ trong những
trường hợp đặc biệt, lệnh gọi nâng cấp mới được thực hiện đối với thành phần
cấp cao hơn.
Một kiến trúc phân lớp được biết đến rộng rãi được áp dụng rộng rãi là kiến trúc
các ngăn xếp giao thức truyền thông.
Trong ngăn xếp giao thức truyền thông, mỗi lớp thực hiện một hoặc một số dịch
vụ truyền thông cho phép dữ liệu được gửi từ đích đến một hoặc một số mục tiêu.
Để đạt được mục đích này, mỗi lớp cung cấp một giao diện chỉ định các chức năng
thể được gọi. Về nguyên tắc, giao diện sẽ ẩn hoàn toàn việc triển khai thực tế
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
của một dịch vụ. Mt khái niệm quan trọng khác trong trường hợp giao tiếp là giao
thức (giao tiếp), tả các quy tắc các bên sẽ tuân theo để trao đổi thông tin.
Điều quan trọng là phải hiểu sự khác biệt giữa dịch vđược cung cấp bởi một lớp,
giao diện mà dịch vụ đó được cung cấp và giao thức mà một lớp thực hiện để thiết
lập giao tiếp.
Để làm sự khác biệt này, hãy xem xét một dịch vụ đáng tin cậy, hướng đến kết
nối, được cung cấp bởi nhiều hệ thống truyền thông. Trong trường hợp này, trước
tiên một bên giao tiếp cần thiết lập kết nối với một bên khác trước khi cả hai có thể
gửi và nhận tin nhắn. Đáng tin cậy nghĩa là sẽ đưa ra những đảm bảo chắc chắn
rằng các tin nhắn đã gửi thực sự sẽ được chuyển đến phía bên kia, ngay cả khi
nguy cao là các tin nhắn thể bị mất (ví dụ như thể xảy ra khi sử dụng
phương tiện không dây). Ngoài ra, các dịch vụ như vậy thường đảm bảo rằng các
tin nhắn được gửi theo đúng thứ tự như khi chúng được gửi.
Loại dịch vụ này được thực hiện trên Internet bằng Giao thức điều khiển truyền
dẫn (TCP). Giao thức chỉ định những tin nhắn nào sẽ được trao đổi để thiết lập
hoặc ngắt kết nối, những gì cần phải làm để duy trì thứ tự của dữ liệu được truyền
và cả hai bên cần làm gì để phát hiện và sửa dữ liệu bị mất trong quá trình truyền.
Dịch vụ này được cung cấp dưới dạng một giao diện lập trình tương đối đơn giản,
bao gồm các cuộc gọi để thiết lập kết nối, gửi và nhận tin nhắn cũng như ngắt kết
nối lại. Trên thực tế, nhiều giao diện khác nhau, thường phụ thuộc vào hệ điều
hành hoặc ngôn ngữ lập trình được sử dụng. Tương tự như vậy, có nhiều cách triển
khai giao thức và giao diện của nó.
1.4.2 Kiến trúc hướng dịch vụ
Mặc dù phong cách kiến trúc phân lớp rất phổ biến nhưng một trong những nhược
điểm chính của nó là sự phụ thuộc mạnh mẽ giữa các lớp khác nhau. Những ví dụ
điển hình trong đó những sự phụ thuộc tiềm ẩn này đã được xem xét cẩn thận được
tìm thấy trong việc thiết kế các ngăn xếp giao thức truyền thông. Các ví dxấu bao
gồm các ứng dụng về cơ bản được thiết kế và phát triển dưới dạng các thành phần
hiện có mà không quan tâm nhiều đến tính ổn định của giao diện hoặc bản thân các
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
thành phần đó, chứ chưa nói đến sự chồng chéo về chức năng giữa các thành phần
khác nhau.
Sự phụ thuộc trực tiếp như vậy vào các thành phần cụ thể đã dẫn tới một phong
cách kiến trúc phản ánh một tổ chức lỏng lẻo hơn thành một tập hợp các thực thể
riêng biệt, độc lập. Mỗi thực thể đóng gói một dịch vụ. Cho dù chúng được gọi là
dịch vụ, đối tượng hay vi dịch vụ, chúng đều có điểm chung là dịch vụ được thực
thi dưới dạng một tiến trình (hoặc luồng) riêng biệt. Tất nhiên, việc chạy các thực
thể riêng biệt không nhất thiết làm giảm mức đphụ thuộc so với kiểu kiến trúc
phân lớp.
1.4.3 Kiến trúc xuất bản-đăng ký
Khi các hệ thống tiếp tục phát triển và các quy trình có thể tham gia hoặc rời bdễ
dàng hơn, điều quan trọng là phải có một kiến trúc trong đó sự phụ thuộc giữa các
quy trình trở nên lỏng lẻo nhất thể. Một lớp lớn các hthống phân tán đã áp
dụng một kiến trúc trong đó sự tách biệt ràng giữa xử phối hợp. Ý tưởng
xem hệ thống như một tập hợp các quy trình vận hành tự động. Trong hình
này, sự phối hợp bao gồm sự giao tiếp và hợp tác giữa các quy trình. Nó tạo thành
chất keo gắn kết các hoạt động được thực hiện bởi các quy trình thành một tổng
thể.
Khi các quá trình được kết hợp theo thời gian và tham chiếu, sự phối hợp diễn ra
trực tiếp, được gọi là phối hợp trực tiếp. Sự ghép nối tham chiếu thường xuất hiện
dưới dạng tham chiếu rõ ràng trong giao tiếp. Ví dụ: một quy trình chỉ có thể giao
tiếp nếu nó biết tên hoặc định danh của các quy trình khác muốn trao đổi
thông tin. Khớp nối tạm thời nghĩa cả hai quá trình đang giao tiếp sẽ phải
được thiết lập chạy. Trong cuộc sống thực, nói chuyện qua điện thoại di động
(và giả sử rằng điện thoại di động chỉ có một chủ sở hữu) là một ví dụ về giao tiếp
trực tiếp.
Một kiểu phối hợp khác xảy ra khi các tiến trình được tách rời tạm thời nhưng được
ghép nối tham chiếu, mà chúng ta gọi là phối hợp hộp thư. Trong trường hợp này,
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
không cần thiết phải hai quá trình giao tiếp hoạt động cùng lúc để quá trình giao
tiếp diễn ra. Thay vào đó, giao tiếp diễn ra bằng cách đặt các tin nhắn vào hộp thư
(có thể dùng chung). Bởi vì cần phải xác định địa chỉ rõ ràng cho hộp thư sẽ chứa
các tin nhắn được trao đổi nên cần có sự kết hợp tham chiếu.
Sự kết hợp của các hệ thống được tách rời tham chiếu và được ghép theo thời gian
tạo thành nhóm các hình để phối hợp dựa trên sự kiện. Trong các hệ thống tách
rời tham chiếu, các tiến trình không biết ràng về nhau. Điều duy nhất một
quy trình có thể làm là xuất bản một thông báo tả sự xuất hiện của mt sự kiện
(ví dụ: nó muốn điều phối các hoạt động hoặc nó vừa tạo ra một số kết quả tvị).
Giả sử rằng các thông báo có đủ loại và đủ loại, các quy trình có thể đăng ký một
loại thông báo cụ thể. Trong hình điều phối dựa trên sự kiện tưởng, thông
báo đã xuất bản sẽ được gửi chính xác đến những quy trình đã đăng thông báo
đó. Tuy nhiên, thông thường yêu cầu người đăng phải luôn hoạt động tại thời
điểm thông báo được xuất bản. Một mô hình phối hợp nổi tiếng sự kết hợp của
các quy trình được tách rời theo thời gian tham chiếu, dẫn đến cái được gọi
không gian dữ liệu dùng chung. Ý tưởng chính các tiến trình giao tiếp hoàn toàn
thông qua các bộ dữ liệu, các bản ghi dữ liệu có cấu trúc bao gồm một số trường,
rất giống với một hàng trong bảng sở dữ liệu. Các tiến trình thể đặt bất kỳ
loại bộ dliệu nào vào không gian dữ liệu được chia sẻ. Để truy xuất một bộ dữ
liệu, một quy trình sẽ cung cấp một mẫu tìm kiếm phù hợp với các bộ dữ liệu đó.
Bất kỳ bộ nào khớp đều được trả về.
Do đó, không gian dữ liệu dùng chung được coi thực hiện chế tìm kiếm kết
hợp cho các bộ dữ liệu. Khi một quy trình muốn trích xuất một bdữ liệu từ không
gian dữ liệu, nó sẽ chỉ định (một số) giá trị của các trường mà nó quan tâm. Bất kỳ
bộ dliệu nào phù hợp với đặc tả đó sẽ bị xóa khỏi không gian dữ liệu được
chuyển đến quy trình.
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
1.5 Kiến trúc phần mềm và kiến trúc hệ thống
Hệ phân tán một hệ thống phức tạp, bao gồm nhiều thành phần nhỏ hơn hoạt
động cùng nhau để đạt được mục tiêu chung. Để quản lý sự phức tạp này, hệ phân
tán cần được tổ chức một cách hợp lý.
Hệ phân táncác thành phần phần mềm tạo thành hthống. Kiến trúc phần mềm
cho chúng ta biết cách các thành phần phần mềm này được tổ chức và làm thế nào
chúng giao tiếp với nhau, hay các kiểu dữ liệu trao đổi gì. Điều này giống như
việc xây dựng một ngôi nhà, nơi bạn cần biết cách sắp xếp các phòng, cửa ra vào
và cửa sổ để tạo ra mt ngôi nhà hoàn chỉnh.
Việc thực hiện của hệ phân tán việc đặt các thành phần này vào một máy tính
thật. Đây giống nviệc chuyển ngôi nhà đã thiết kế vào một khu đất thực tế. Thực
thể cuối cùng của kiến trúc phần mềm (sau khi đã hoàn thiện việc sắp xếp các thành
phần với nhau) được gọi là kiến trúc hệ thống.
Kiến trúc hệ thống cách thức sắp xếp cài đặt các thầnh phần trong kiến trúc phân
mềm lên các thiết bị vật lý như máy tính, máy chủ và các thiết bị kết nối khác. Nói
cách khác, nếu kiến trúc phần mềm bản thiết kế của ngôi nhà, thì kiến trúc hệ
thống là ngôi nhà đã hoàn thiện, với tất cả các yếu tố vật đã được đặt vào đúng
vị trí.
Quá trình từ việc thiết kế kiến trúc phần mềm đến việc triển khai kiến trúc hệ thống
một quá trình phức tạp đòi hỏi sự hiểu biết sâu sắc về cả hai lĩnh vực. Tuy
nhiên, khi được thực hiện đúng, nó có thể dẫn đến việc tạo ra một hệ phân tán hiệu
quả linh hoạt, khả năng đáp ứng nhu cầu của người dùng thích ứng với
các thay đổi trong công nghệ và yêu cầu kinh doanh.
1.5.1 Kiến trúc phần mềm
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Kiến trúc phân tầng
Luồng yêu cầuLung trả về
Hình 1.1: Kiến trúc phân tầng
Trong kiến trúc phân tầng, các thành phần thường được tổ chức theo từng tầng, với
mỗi tầng có sự ràng buộc chặt chẽ với nhau. Điều này giúp tạo ra một cấu trúc
ràng và dễ quản lý cho hệ thống.
Tầng trên sẽ gọi các thành phần của tầng dưới liền kề. Điều này giống như việc
một người quản sẽ chỉ đạo những người làm việc dưới quyền mình. Mỗi tầng
trong hệ thống đều có trách nhiệm riêng và chỉ tương tác với tầng liền kề.
Khi có yêu cầu, thông tin sẽ được chuyển từ tầng trên xuống tầng dưới. Đây giống
như việc một người quản gửi yêu cầu công việc cho nhân viên của mình. Nhân
viên sau đó sẽ thực hiện công việc và gửi kết quả trở lại cho người quản lý.
Kết quả sau cùng sẽ được trả về từ tầng dưới lên tầng trên. Đây giống như việc
nhân viên hoàn thành công việc và báo cáo kết quả cho người quản lý.
Qua đó, ta thấy rằng việc tổ chức các thành phần theo từng tầng trong kiến trúc
phân tầng không chỉ giúp quản hiệu quả hơn mà còn giúp nâng cao khả năng mở
rộng và bảo dưỡng của hệ thống.
Hiệu năng của hệ thống phụ thuộc vào số lượng tầng cách thiết kế các thành
phần trong mỗi tầng. Nếu số lượng tầng quá ít, hệ thống sẽ khó mở rộng và bảo trì.
Nếu số lượng tầng quá nhiều, hthống sẽ bị chậm phức tạp. Do đó, việc lựa
chọn số lượng tầng phù hợp là rất quan trọng.
TẦNG N
TẦNG N
-
1
TẦNG 2
TẦNG 1
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Số lượng tầng càng nhiều thì tính chuyên môn hóa càng cao. Điều này có nghĩa là
mỗi tầng snhiệm vụ ràng không can thiệp vào các tầng khác. Điều này
giúp cho việc phát triển và kiểm thử hệ thống được dễ dàng và hiệu quả hơn.
Kiến trúc hướng đối tượng
Hình 1.2. Kiến trúc hướng đối tượng
Kiến trúc hướng đối tượng một cách tổ chức hệ thống phần mềm theo các đối
tượng, mỗi đối tượng có thuộc tính và phương thức riêng. Các đối tượng có thể kế
thừa, đa hình, bao đóng các tính năng của chúng. Kiến trúc hướng đối tượng
giúp cho việc tái sử dụng, mở rộng, và bảo trì mã nguồn dễ dàng hơn.
Trong kiến trúc hướng đối tượng thì các đối tượng không nhất thiết phải nằm trên
cùng một máy tính trong hệ phân tán thể trong các máy tính khác nhau.
Các đối tượng thể giao tiếp với nhau thông qua lời gọi thủ tục từ xa (remote
procedure call - RPC), là một chế cho phép một chương trình gọi một chương
trình khác ở xa như thể chúng ở cùng một máy.
Kiến trúc dựa trên đối tượng ràng buộc lỏng hơn so với kiến trúc phân tầng. Các
đối tượng trong kiến trúc này thể tương đối độc lập, dễ dàng thay đổi, nâng cấp,
tái sử dụng. Kiến trúc này cũng thể cải thiện hiệu năng của hệ thống bằng
cách phân bổ các đối tượng ở các vị trí khác nhau để giảm thiểu chi phí giao tiếp.
Kiến trúc này phù hợp với các hệ thống thời gian thực, điều khiển, hoặc yêu cầu
tính linh hoạt cao.
Đối tượng
Đối tượng
Đối tượng
Đối tượng
Đối tượng
Gọi thủ tục
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Tuy nhiên, kiến trúc dựa trên đối tượng phân tán cũng có một số nhược điểm. Một
trong số đó khó khăn trong việc xác định các đối tượng, giao diện, quan h
giữa chúng. Một nhược điểm khác là khi một đối tượng gọi một đối tượng khác ở
xa, nó không biết được rằng đối tượng bị gọi có sẵn hay không, hoặc có xảy ra lỗi
gì trong quá trình giao tiếp hay không. Điều này có thể dẫn đến việc đối tượng gọi
bị phong tỏa (block) hoặc bỏ qua (ignore) lời gọi. Ngoài ra, khi chờ thực hiện yêu
cầu txa, đối tượng gọi không thể làm được công việc khác, làm giảm hiệu quả
của hệ thống.
Kiến trúc hướng sự kiện
Hình 1.3. Kiến trúc hướng sự kiện
Kiến trúc hướng sự kiện một hình kiến trúc phần mềm trong đó các tiến trình
trao đổi thông tin dựa trên việc phát hành các skiện. Trong nh này, các sự
kiện chứa các thông tin cần trao đổi và có thể kích hoạt các thao tác trong các tiến
trình. Các tiến trình trong kiến trúc hướng sự kiện không giao tiếp trực tiếp với
nhau, mà thay vào đó, chúng phát hành và lắng nghe các sự kiện. Khi một sự kiện
được phát hành, chỉ những tiến trình đã đăng nhận sự kiện đó mới nhận được
thông tin. Điều này giúp giảm bớt sự phụ thuộc giữa các tiến trình và tăng khả năng
mở rộng của hệ thống. Một trong những lợi ích lớn nhất của kiến trúc hướng sự
kiện mức độ ràng buộc giữa các tiến trình thấp. Điều này nghĩa mỗi tiến
trình thể hoạt động độc lập không cần biết về sự tồn tại của các tiến trình
khác. Điều này giúp cho việc phát triển và bảo dưỡng hệ thống dễ dàng hơn.
Phát hành sự kiện
Kênh sự kiện
Thành phần
Thành phần
Thành phần
Đăng ký sự kiện
Đăng ký sự kiện
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Ngoài ra, trong kiến trúc hướng sự kiện, đối tượng gọi không bị phong tỏa khi chờ
đợi một lời gọi thủ tục hoàn thành. Thay vào đó, nó có thể tiếp tục xử lý công việc
khác và sau đó xử lý kết quả của lời gọi thủ tục khi kết quả sẵn sàng.
Tuy nhiên, kiến trúc hướng sự kiện cũng nhược điểm của riêng nó. Việc xác
định và quản lý các sự kiện có thể trở nên phức tạp, đặc biệt là trong các hệ thống
lớn với nhiều tiến trình. Ngoài ra, việc xửcác sự kiện không đồng bộ có thể gây
ra khó khăn trong việc gỡ lỗi và kiểm tra.
Kiến trúc hướng dữ liệu
Hình 1.4. Kiến trúc hướng dữ liệu
Kiến trúc hướng dữ liệu là một mô hình kiến trúc phần mềm trong đó dữ liệu đóng
vai trò trung tâm. Trong kiến trúc này, các tiến trình hoạt động dựa trên dữ liệu,
thay vì dựa trên sự kiện hoặc đối tượng như trong các mô hình khác.
Một đặc điểm quan trọng của các mô hình kiến trúc trước, như kiến trúc phân tầng
hay kiến trúc hướng sự kiện, là lượng dữ liệu được gửi và nhận giữa các tiến trình
không nên quá lớn. Nếu lượng dữ liệu quá lớn, thể chiếm hết băng thông
đường truyền và ảnh hưởng đến hiệu suất của hệ thống. Để giải quyết vấn đề này,
kiến trúc hướng dữ liệu tập trung vào việc quản lý xử lý dữ liệu một cách hiệu
quả.
Trong kiến trúc hướng dliệu, bên gửi bên nhận không ràng buộc chặt chẽ
với nhau. Bên gửi có thể gửi dữ liệu khi bên nhận không hoạt động, và ngược lại,
bên nhận thể nhận dữ liệu khi bên gửi không hoạt động. Điều này giúp tăng
cường khả năng chịu lỗi và linh hoạt của hệ thống.
Phát hành sự kiện
Thành phần
Thành phần
Đăng ký sự kiện
Kho dữ liệu dùng chung
lOMoARcPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Một dụ điển hình cho kiến trúc hướng dữ liệu hệ thống thư điện tử. Khi bạn
gửi một email, bạn không cần biết người nhận đang online hay không. Email
của bạn sẽ được lưu trong máy chủ sẽ được gửi đến người nhận khi họ kết nối
với máy chủ. Sau khi gửi email, bạn thể tắt máy tính của mình không ảnh
hưởng đến việc người nhận nhận được email.
Tuy nhiên, kiến trúc hướng dữ liệu cũng nhược điểm của riêng . Việc xác định
quản dữ liệu thể trở nên phức tạp, đặc biệt trong các hệ thống lớn với
nhiều loại dữ liệu khác nhau. Ngoài ra, việc xử dliệu không đồng bộ thể
gây ra khó khăn trong việc gỡ lỗi và kiểm tra.
Kiến trúc microservices
Kiến trúc microservices một kiến trúc phần mềm đặc biệt, trong đó ứng dụng
được xây dựng dựa trên slượng nhỏ các dịch vụ (services), mỗi dịch vchạy trên
tiến trình riêng và hoàn toàn triển khai độc lập được. Mỗi dịch vụ trong kiến trúc
microservices thường tương ứng với một chức năng cụ thể thể được phát
triển bởi các nhóm độc lập với nhau. Dưới đây là một số ưu điểm của kiến trúc
microservices:
Đơn giản triển khai: Mỗi dịch vụ thể được triển khai, cập nhật, mở rộng
quản lý độc lập, giúp tăng tốc quá trình phát triển và triển khai.
Đơn giản để hiểu: mỗi dịch vụ tương ứng với một chức năng kinh doanh cụ
thể, nên việc hiểu và phát triển từng dịch vụ trở nên dễ dàng hơn.
Tái sử dụng: Các dịch vụ thể được tái sử dụng trong nhiều ứng dụng khác nhau,
giúp tiết kiệm thời gian và nguồn lực.
Nhanh chóng cách ly thành phần hỏng: Khi một dịch vụ gặp sự cố, thể
được cách ly mà không ảnh hưởng đến các dịch vụ khác trong hệ thống.
Giảm thiểu nguy cơ khi thực hiện thay đổi: Vì mỗi dịch vụ có thể được quản lý
độc lập, nên việc thực hiện các thay đổi (như cập nhật phiên bản, thay đổi công
nghệ) trở nên ít rủi ro hơn.

Preview text:

lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
CHƯƠNG 1 TỔNG QUAN VÀ KIẾN TRÚC
1.1 Tổng quan về các hệ thống phân tán
Nói về những bước tiến lịch sử trong sự phát triển của các hệ thống mạng máy tính,
bắt đầu vào đầu những năm 1960, thời điểm mà máy tính còn có kích cỡ rất lớn,
đắt tiền và chỉ được sử dụng trong các tổ chức nghiên cứu và cơ quan chính phủ.
Nhu cầu về các máy tính bị cô lập này nảy sinh để giao tiếp và chia sẻ thông tin.
Vì vậy, khái niệm mạng máy tính đã ra đời. Năm 1969, một sự kiện quan trọng đã
diễn ra với việc thành lập ARPANET, Mạng lưới Cơ quan Dự án Nghiên cứu Nâng
cao. Được phát triển bởi Bộ Quốc phòng Hoa Kỳ, ARPANET là mạng diện rộng
đầu tiên sử dụng chuyển mạch gói, một phương pháp truyền dữ liệu mang tính cách
mạng. Nó kết nối bốn trường đại học lớn, đánh dấu sự ra đời của cái mà ngày nay
chúng ta gọi là Internet. Trong vài thập kỷ tiếp theo, mạng máy tính phát triển
nhanh chóng. Vào những năm 1970, công nghệ Ethernet xuất hiện, cho phép máy
tính giao tiếp trong mạng cục bộ (LAN). Sự phát triển này đã mở đường cho sự
phát triển của máy tính cá nhân và thiết lập mạng doanh nghiệp. Những năm 1980
chứng kiến sự ra đời của Giao thức điều khiển truyền dẫn và Giao thức Internet
(TCP/IP), một bộ giao thức đã trở thành xương sống của Internet. Với việc áp dụng
TCP/IP, các mạng khác nhau giờ đây có thể giao tiếp liền mạch, dẫn đến sự mở
rộng toàn cầu của Internet. Những năm 1990 là thời điểm bước ngoặt của mạng
máy tính. World Wide Web, do Sir Tim Berners-Lee tạo ra, cung cấp giao diện thân
thiện với người dùng để truy cập thông tin trên Internet. Bước đột phá này đã dân
chủ hóa việc tiếp cận kiến thức, cách mạng hóa giáo dục, thương mại và truyền
thông. Khi chúng ta bước vào thế kỷ 21, các công nghệ mạng không dây, chẳng
hạn như Wi-Fi, xuất hiện, giải phóng chúng ta khỏi giới hạn của kết nối có dây.
Cuộc cách mạng không dây này mang lại tính di động chưa từng có, cho phép
chúng ta kết nối mọi lúc, mọi nơi. Ngày nay, chúng ta thấy mình đang ở kỷ nguyên
Internet vạn vật (IoT), nơi các vật dụng hàng ngày được kết nối với Internet, tạo ra
một mạng lưới rộng lớn gồm các thiết bị được kết nối với nhau. Từ nhà thông minh lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
đến phương tiện tự hành, IoT đang định hình lại cuộc sống của chúng ta theo những
cách mà trước đây chúng ta chỉ có thể tưởng tượng.
Những bước phát triển nhảy vọt của máy tính cũng như mạng máy tính đã làm thay
đổi cách thức mà con người sử dụng máy tính cũng như thay đổi yêu cầu về chất
lượng dịch vụ đối với các hệ thống máy tính. Con người sử dụng máy tính không
phải chỉ để thực hiện các phép tính toán hay cho công việc, ngày nay chúng ta sử
dụng máy tính còn cho các nhu cầu ngày càng đa dạng như giải trí (xem phim, nghe
nhạc, chơi game, ...), kết nối con người (chat trực tuyến, họp trực tuyến, ...), giao
dịch mua bán (mua hàng trực tuyến). Liên quan đết chất lượng dịch vụ, ngày nay
người dùng không thể nào chấp nhận kiên trì với việc ngồi chờ 1 trang web tải
trong phòng vài phút, dù rằng cách đây hơn 10 năm thì họ sẵn sàng chịu đựng điều
đó. Với việc nhu cầu sử dụng máy tính ngày càng đa dạng và yêu cầu về chất lượng
dịch vụ của người dùng ngày càng được nâng cao, các nhà cung ứng dịch vụ cũng
như cung ứng dịch vụ mạng cần phải nghiên cứu lý thuyết về Các hệ thống phân
tán để làm sao đưa vào ứng dụng và tối ưu cho hoạt động của hệ thống của họ. Đó
là lý do ra đời của bộ môn Các hệ thống phân tán và ứng dụng.
1.2 Định nghĩa các hệ thống phân tán
Trong cộng đồng nghiên cứu về Hệ phân tán, nhiều định nghĩa Hệ phân tán được
đưa ra, tuy nhiên có một định nghĩa của Giáo sư Tannenbaum được cộng đồng chấp
nhận là định nghĩa chính xác nhất, đó là:
"A collection of independent connected computers that provides services to its
users as a single coherent system."
Tạm dịch: Hệ phân tán được định nghĩa là một tập hợp các máy tính độc lập có
kết nối, nó cung cấp các dịch vụ cho người dùng như một máy tính duy nhất.
Định nghĩa này có thể được phân tích với các ý chính sau:
• Tập hợp máy tính độc lập: Tập hợp các máy tính không phụ thuộc vào nhau,
có thể khác nhau về kiến trúc phần cứng cũng như phần mềm. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
• Được kết nối với nhau: Được kết nối với nhau qua một hạ tầng mạng máy
tính. Các phần mềm trên các máy tính khác nhau có thể phối hợp, chia sẻ tài nguyên với nhau.
• Cùng thực hiện nhiệm vụ chung: Các máy tính phải cùng nhau thực hiện một
nhiệm vụ chung nào đó, thường là cùng nhau cung cấp một dịch vụ cho người dùng.
• Cung cấp dịch vụ một cách thống nhất: Thống nhất về giao diện, về cách
truy cập dịch vụ (với các mức độ khác nhau).
• Người sử dụng không phải quan tâm đến các chi tiết của hệ thống: đây còn
được gọi là đặc tính trong suốt của hệ phân tán. Đối với người dùng, người
dùng như chỉ sử dụng một máy tính duy nhất, dù là ở phía sau là cả một hệ
thống khổng lồ vận hành, nhưng chúng hoàn toàn trong suốt với người dùng.
1.3 Các đặc điểm của hệ thống phân tán
Trong nội dung phần này, chúng ta sẽ cùng nhau tìm hiểu các đặc điểm của hệ phân
tán: Khả năng chia sẻ tài nguyên, tính trong suốt, tính mở, và khả năng mở rộng hệ thống.
1.3.1 Khả năng chia sẻ tài nguyên
Mục tiêu quan trọng của hệ thống phân tán là giúp người dùng (và ứng dụng) dễ
dàng truy cập và chia sẻ tài nguyên từ xa. Tài nguyên có thể là hầu hết mọi thứ,
nhưng các ví dụ điển hình bao gồm thiết bị ngoại vi, phương tiện lưu trữ, dữ liệu,
tệp, dịch vụ và mạng, chỉ kể tên một số. Có nhiều lý do để muốn chia sẻ tài nguyên.
Một lý do rõ ràng là về kinh tế. Ví dụ: việc chia sẻ một thiết bị lưu trữ đáng tin cậy
cao cấp duy nhất sẽ rẻ hơn so với việc phải mua và duy trì thiết bi lưu trữ riêng cho
từng người dùng. Việc kết nối người dùng và tài nguyên cũng giúp cộng tác và trao
đổi thông tin dễ dàng hơn, như được minh họa bằng sự thành công của Internet với lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
các giao thức đơn giản để trao đổi tệp, thư, tài liệu, âm thanh và video. Khả năng
kết nối của Internet đã cho phép các nhóm người phân tán rộng rãi về mặt địa lý
làm việc cùng nhau bằng tất cả các loại phần mềm nhóm, nghĩa là phần mềm để
cộng tác chỉnh sửa, hội nghị từ xa,
v.v., như được minh họa bởi các công ty phát triển phần mềm đa quốc gia đã thuê
ngoài phần lớn sản xuất mã của họ sang châu Á, cũng như vô số công cụ cộng tác
đã trở nên sẵn có (dễ dàng hơn) do đại dịch COVID-19.
Việc chia sẻ tài nguyên trong các hệ thống phân tán cũng được minh họa bằng sự
thành công của các mạng ngang hàng chia sẻ tệp như BitTorrent. Những hệ thống
phân tán này giúp người dùng chia sẻ tập tin trên Internet một cách đơn giản. Mạng
ngang hàng thường liên quan đến việc phân phối các tệp phương tiện như âm thanh
và video. Trong các trường hợp khác, công nghệ này được sử dụng để phân phối
lượng lớn dữ liệu, như trong trường hợp cập nhật phần mềm, dịch vụ sao lưu và
đồng bộ hóa dữ liệu trên nhiều máy chủ.
Việc tích hợp liền mạch các tiện ích chia sẻ tài nguyên trong môi trường nối mạng
hiện nay cũng đã trở nên phổ biến. Một nhóm người dùng có thể chỉ cần đặt các
tập tin vào một thư mục chia sẻ đặc biệt được duy trì bởi bên thứ ba trên Internet.
Bằng cách sử dụng phần mềm đặc biệt, thư mục dùng chung hầu như không thể
phân biệt được với các thư mục khác trên máy tính của người dùng. Trên thực tế,
các dịch vụ này thay thế việc sử dụng thư mục dùng chung trên hệ thống tệp phân
tán cục bộ, cung cấp dữ liệu cho người dùng độc lập với tổ chức mà họ thuộc về
và không phụ thuộc vào vị trí của họ. Dịch vụ này được cung cấp cho các hệ điều
hành khác nhau. Nơi lưu trữ chính xác dữ liệu được ẩn hoàn toàn khỏi người dùng cuối.
1.3.2 Tính trong suốt phân tán
Tính trong suốt trong các hệ thống phân tán đề cập đến mức độ mà hệ thống xuất
hiện như một thực thể duy nhất, gắn kết với người dùng, mặc dù nó có thể bao gồm
nhiều thành phần được kết nối với nhau. Nó nhằm mục đích bảo vệ người dùng và lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
ứng dụng khỏi sự phức tạp của kiến trúc cơ bản, cho phép họ tương tác với hệ
thống một cách đơn giản. Có một số loại trong suốt trong hệ thống phân tán:
Tính trong suốt truy cập: Điều này đảm bảo rằng người dùng và ứng dụng có thể
truy cập tài nguyên (chẳng hạn như tệp, dịch vụ hoặc dữ liệu) một cách thống nhất
và nhất quán, bất kể vị trí thực tế hoặc phân bổ của họ trên mạng. Điều này có
nghĩa là người dùng không cần biết chi tiết cụ thể về vị trí của tài nguyên.
Tính trong suốt của vị trí: Với tính trong suốt của vị trí, người dùng không cần biết
địa chỉ vật lý hoặc mạng của tài nguyên. Điều này cho phép truy cập liền mạch vào
các tài nguyên mà không cần phải quan tâm đến chi tiết về vị trí của chúng.
Tính trong suốt trong di chuyển: Tính trong suốt trong di chuyển cho phép các tài
nguyên được di chuyển hoặc sao chép qua các nút khác nhau trong hệ thống mà
không làm gián đoạn các hoạt động đang diễn ra. Người dùng và ứng dụng tiếp tục
tương tác với tài nguyên như thể nó ở vị trí ban đầu.
Tính trong suốt của bản sao: Tính trong suốt của bản sao đảm bảo rằng nhiều bản
sao của tài nguyên (chẳng hạn như dữ liệu hoặc dịch vụ) được quản lý theo cách
trong suốt đối với người dùng. Điều này có nghĩa là người dùng không cần biết họ
đang tương tác với bản sao nào vì hệ thống sẽ quản lý việc sao chép và tính nhất quán ở hậu trường.
Tính trong suốt đồng thời: Kiểu trong suốt này đảm bảo rằng nhiều người dùng
hoặc ứng dụng có thể truy cập đồng thời các tài nguyên được chia sẻ mà không can
thiệp lẫn nhau. Hệ thống quản lý quyền truy cập đồng thời vào tài nguyên, đảm bảo
tính nhất quán và chính xác.
Tính trong suốt của lỗi: Tính trong suốt của lỗi đảm bảo rằng hệ thống tiếp tục hoạt
động đáng tin cậy ngay cả khi có lỗi phần cứng hoặc phần mềm. Điều này có thể
liên quan đến các cơ chế như khả năng chịu lỗi, dự phòng và các thủ tục phục hồi.
Tính trong suốt về hiệu suất: Tính trong suốt về hiệu suất nhằm mục đích cung cấp
mức hiệu suất nhất quán cho người dùng, bất kể tải của hệ thống hay các nút cụ thể
đang được sử dụng. Điều này có thể liên quan đến kỹ thuật cân bằng tải và phân bổ tài nguyên. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Tính trong suốt về quy mô: Tính trong suốt này tập trung vào khả năng mở rộng
quy mô của hệ thống để đáp ứng số lượng người dùng, tài nguyên hoặc nhiệm vụ
ngày càng tăng. Nó đảm bảo rằng hệ thống có thể thêm hoặc xóa tài nguyên một
cách linh hoạt mà không ảnh hưởng đến hoạt động chung của nó.
Bằng cách cung cấp các hình thức trong suốt này, các hệ thống phân tán nhằm mục
đích đơn giản hóa sự phức tạp của việc quản lý mạng lưới các nút được kết nối với
nhau. Điều này cho phép người dùng và ứng dụng tương tác với hệ thống một cách
đơn giản, bất kể sự phân bổ tài nguyên cơ bản. Tính trong suốt là yếu tố then chốt
giúp hệ thống phân tán trở nên thiết thực, đáng tin cậy và thân thiện với người dùng.
1.3.3 Tính mở
Tính mở trong bối cảnh của các hệ thống phân tán đề cập đến mức độ mà hệ thống
được thiết kế với các tiêu chuẩn, giao thức và giao diện mở cho phép khả năng
tương tác, khả năng mở rộng và khả năng truy cập. Hệ thống phân tán mở khuyến
khích sự hợp tác, đổi mới và tích hợp các thành phần đa dạng từ các nguồn khác nhau.
Dưới đây là một số khía cạnh chính của tính mở trong hệ thống phân tán:
Các tiêu chuẩn và giao thức mở: Một hệ thống phân tán mở dựa trên các tiêu chuẩn
và giao thức được xác định rõ ràng, có sẵn công khai để liên lạc và tương tác. Các
tiêu chuẩn này thường được phát triển và duy trì bởi các tập đoàn, tổ chức hoặc cơ
quan tiêu chuẩn trong ngành. Ví dụ bao gồm HTTP/HTTPS cho giao tiếp web,
SMTP cho email và TCP/IP cho giao tiếp mạng.
Khả năng tương tác: Một hệ thống phân tán mở cho phép các thành phần, thiết bị
hoặc phần mềm khác nhau từ nhiều nhà cung cấp khác nhau hoạt động liền mạch
với nhau. Điều này cho phép người dùng chọn các công cụ hoặc thành phần tốt
nhất cho nhu cầu cụ thể của họ mà không bị ràng buộc vào hệ sinh thái của một lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
nhà cung cấp duy nhất. Khả năng mở rộng: Một hệ thống mở được thiết kế để dễ
dàng mở rộng và thích ứng nhằm đáp ứng các yêu cầu ngày càng phát triển. Nó
cung cấp các giao diện và API (Giao diện lập trình ứng dụng) cho phép các nhà
phát triển thêm chức năng, dịch vụ hoặc mô-đun mới mà không làm thay đổi cơ
bản hệ thống hiện có.
Khả năng truy cập và tài liệu: Tính mở cũng ngụ ý việc cung cấp tài liệu rõ ràng
và toàn diện cho phép các nhà phát triển, người dùng và quản trị viên hiểu và tương
tác với hệ thống một cách hiệu quả. Điều này đảm bảo rằng kiến thức về hệ thống
luôn sẵn có và có thể được chia sẻ trong cộng đồng.
Hợp tác cộng đồng: Các hệ thống phân tán mở thường thúc đẩy cộng đồng các nhà
phát triển, người dùng và các bên liên quan cộng tác để cải thiện, nâng cao và hỗ
trợ hệ thống. Cách tiếp cận hợp tác này dẫn đến kiến thức được chia sẻ, các phương
pháp hay nhất và sự phát triển nhanh chóng của các tính năng mới.
Cấp phép và Sở hữu trí tuệ: Tính mở có thể liên quan đến việc sử dụng các giấy
phép nguồn mở cho phép chia sẻ, sửa đổi và phân phối lại mã nguồn của hệ thống.
Điều này thúc đẩy tính minh bạch, đổi mới và phát triển dựa vào cộng đồng.
Tích hợp với các hệ thống hiện có: Một hệ thống phân tán mở phải có khả năng
tích hợp với cơ sở hạ tầng, công nghệ và hệ thống cũ hiện có. Điều này đặc biệt
quan trọng trong môi trường doanh nghiệp nơi khả năng tương tác với các hệ thống
đã được thiết lập là rất quan trọng.
Tính trung lập của nhà cung cấp: Các hệ thống phân tán mở nhằm mục đích tránh
sự khóa chặt của nhà cung cấp, trong đó người dùng phụ thuộc vào sản phẩm hoặc
dịch vụ của một nhà cung cấp duy nhất. Điều này cho phép người dùng có sự linh
hoạt và lựa chọn hơn trong việc lựa chọn và thay đổi các thành phần khi cần thiết.
Bảo mật và tin cậy: Tính mở không có nghĩa là hy sinh tính bảo mật. Điều quan
trọng là các hệ thống phân tán mở phải có cơ chế bảo mật mạnh mẽ, với các quy
trình minh bạch để giải quyết các lỗ hổng và đảm bảo tính toàn vẹn và bảo mật của dữ liệu.
Nhìn chung, tính mở trong các hệ thống phân tán thúc đẩy cách tiếp cận hợp tác và
toàn diện để phát triển công nghệ. Nó trao quyền cho người dùng, thúc đẩy sự đổi lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
mới và tạo ra một hệ sinh thái sôi động gồm các công cụ và dịch vụ có thể phát
triển để đáp ứng nhu cầu đa dạng của người dùng và ứng dụng. Cách tiếp cận này
là công cụ định hình sự thành công của nhiều công nghệ mà chúng ta sử dụng ngày nay.
Khả năng mở rộng hệ thống
Khả năng mở rộng trong các hệ thống phân tán đề cập đến khả năng của hệ thống
trong việc xử lý khối lượng công việc hoặc tải ngày càng tăng khi được bổ sung
nhiều tài nguyên hơn, ví dụ như máy chủ, mà không ảnh hưởng tiêu cực đến hiệu
suất. Đây là một yếu tố quan trọng cần cân nhắc khi thiết kế và xây dựng các hệ
thống phân tán, vì nó cho phép chúng phát triển và thích ứng với những nhu cầu thay đổi.
Có hai loại khả năng mở rộng chính:
Khả năng mở rộng theo chiều dọc: Khả năng mở rộng theo chiều dọc, còn được
gọi là mở rộng quy mô, liên quan đến việc bổ sung thêm nhiều tài nguyên (ví dụ
như CPU, bộ nhớ hoặc bộ lưu trữ) vào một máy hoặc nút trong hệ thống. Cách tiếp
cận này có những hạn chế vì bạn chỉ có thể mở rộng quy mô cho một máy duy nhất
trước khi đạt đến giới hạn phần cứng. Nó thường được sử dụng cho các ứng dụng
yêu cầu sức mạnh tính toán cao nhưng có thể không phù hợp để xử lý số lượng lớn
người dùng hoặc yêu cầu đồng thời.
Khả năng mở rộng theo chiều ngang: Khả năng mở rộng theo chiều ngang, còn
được gọi là mở rộng quy mô, liên quan đến việc thêm nhiều máy hoặc nút hơn vào
hệ thống phân tán. Cách tiếp cận này cho phép khả năng mở rộng hầu như không
giới hạn vì bạn có thể tiếp tục bổ sung thêm máy nếu cần. Nó rất phù hợp để xử lý
số lượng lớn người dùng hoặc yêu cầu đồng thời, khiến nó trở thành lựa chọn phổ
biến cho các ứng dụng web, dịch vụ đám mây và các hệ thống khác có nhu cầu cao. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Một số khái niệm và kỹ thuật quan trọng liên quan đến khả năng mở rộng trong hệ
thống phân tán có thể được kể đến như:
Cân bằng tải: Cân bằng tải phân phối các yêu cầu hoặc tác vụ đến trên nhiều máy
chủ hoặc nút để đảm bảo rằng không có máy nào bị quá tải. Có nhiều thuật toán
khác nhau để cân bằng tải, bao gồm thuật toán quay vòng, thuật toán ít kết nối nhất
và hàm băm IP, cùng nhiều thuật toán khác.
Phân vùng/Sharding: Phân vùng bao gồm việc chia một tập dữ liệu hoặc khối lượng
công việc lớn thành các phần nhỏ hơn, dễ quản lý hơn để có thể phân phối trên
nhiều nút. Phân mảnh là một dạng phân vùng cụ thể trong đó dữ liệu được phân
chia dựa trên một tiêu chí cụ thể (ví dụ: theo ID người dùng, khu vực địa lý). Phân
vùng giúp phân phối tải và cải thiện hiệu suất bằng cách cho phép xử lý song song.
Nhân bản: Sao chép liên quan đến việc tạo bản sao của dữ liệu hoặc dịch vụ trên
nhiều nút để cải thiện khả năng chịu lỗi và tính khả dụng. Nó cũng có thể được sử
dụng để phân phối khối lượng công việc đọc nhiều, cho phép nhiều nút phục vụ
các yêu cầu đọc cùng một lúc.
Bộ nhớ đệm: Bộ nhớ đệm liên quan đến việc lưu trữ dữ liệu được truy cập thường
xuyên trong bộ nhớ hoặc lớp lưu trữ truy cập nhanh để giảm nhu cầu tìm nạp dữ
liệu đó từ bộ lưu trữ chậm hơn hoặc các nút từ xa. Bộ nhớ đệm có thể cải thiện
đáng kể thời gian phản hồi của hệ thống, đặc biệt đối với khối lượng công việc đọc
nhiều. Mô hình nhất quán: Các hệ thống phân tán khác nhau có thể áp dụng các
mô hình nhất quán khác nhau, chẳng hạn như tính nhất quán mạnh mẽ, tính nhất
quán cuối cùng hoặc tính nhất quán nhân quả, có thể ảnh hưởng đến cách dữ liệu
được sao chép và phân phối.
Xử lý sự cố: Hệ thống phân tán phải được thiết kế để xử lý lỗi một cách khéo léo.
Điều này bao gồm các cơ chế phát hiện và khôi phục sau lỗi nút cũng như đảm bảo
độ bền của dữ liệu.
Tự động mở rộng quy mô: Tự động mở rộng quy mô là một kỹ thuật được sử dụng
trong môi trường đám mây cho phép tài nguyên được tự động thêm hoặc xóa dựa
trên các điều kiện được xác định trước, chẳng hạn như tải tăng. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Giám sát và đo lường: Việc giám sát và thu thập số liệu phù hợp là rất quan trọng
để hiểu được hiệu suất hệ thống và mức sử dụng công suất. Thông tin này rất cần
thiết để đưa ra quyết định sáng suốt về việc mở rộng quy mô.
Tóm lại, việc thiết kế một hệ thống phân tán có thể mở rộng đòi hỏi phải xem xét
cẩn thận các yếu tố như cân bằng tải, phân vùng, sao chép, bộ nhớ đệm và khả năng
chịu lỗi. Bằng cách sử dụng các kỹ thuật này, các nhà phát triển có thể xây dựng
các hệ thống có thể phát triển để đáp ứng nhu cầu ngày càng tăng trong khi vẫn
duy trì hiệu suất và độ tin cậy tốt.
1.4 Kiến trúc Hệ phân tán
Chúng tôi bắt đầu thảo luận về kiến trúc bằng cách trước tiên xem xét cách tổ chức
logic của một hệ thống phân tán thành các thành phần phần mềm, còn được gọi là
kiến trúc phần mềm của nó. Nghiên cứu về kiến trúc phần mềm đã trưởng thành
đáng kể và hiện nay người ta thường chấp nhận rằng việc thiết kế hoặc áp dụng
kiến trúc là rất quan trọng cho sự phát triển thành công của các hệ thống phần mềm lớn.
Đối với cuộc thảo luận của chúng ta, khái niệm về phong cách kiến trúc là quan
trọng. Kiểu như vậy được hình thành dựa trên các thành phần, cách các thành phần
được kết nối với nhau, dữ liệu trao đổi giữa các thành phần và cuối cùng là cách
các thành phần này được cấu hình chung trong một hệ thống. Một thành phần là
một đơn vị mô-đun với các giao diện được yêu cầu và cung cấp được xác định rõ
ràng và có thể thay thế được trong môi trường của nó. Điều quan trọng là một bộ
phận có thể được thay thế, đặc biệt là trong khi hệ thống vẫn tiếp tục hoạt động.
Điều này là do thường không phải là một lựa chọn để tắt hệ thống để bảo trì. Tốt
nhất, chỉ một phần của nó có thể tạm thời không hoạt động. Việc thay thế một thành
phần chỉ có thể được thực hiện nếu các giao diện của nó vẫn còn nguyên. Trong
thực tế, chúng tôi thấy rằng việc thay thế hoặc cập nhật một thành phần có nghĩa
là một phần của hệ thống (chẳng hạn như máy chủ), chạy bản cập nhật thường
xuyên và chuyển sang các thành phần được làm mới sau khi quá trình cài đặt của lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
chúng hoàn tất. Các biện pháp đặc biệt có thể cần được thực hiện khi một phần của
hệ thống phân tán cần được khởi động lại để các bản cập nhật có hiệu lực. Các biện
pháp như vậy có thể bao gồm việc có các chế độ dự phòng được nhân rộng để đảm
nhiệm trong khi quá trình khởi động lại một phần đang diễn ra.
Một khái niệm khó nắm bắt hơn một chút là khái niệm về trình kết nối, thường
được mô tả như một cơ chế làm trung gian cho việc giao tiếp, điều phối hoặc hợp
tác giữa các thành phần. Ví dụ: một trình kết nối có thể được hình thành bởi các
phương tiện cho các cuộc gọi thủ tục (từ xa), truyền tin nhắn hoặc truyền dữ liệu.
Nói cách khác, trình kết nối cho phép luồng điều khiển và dữ liệu giữa các thành phần.
Bằng cách sử dụng các thành phần và đầu nối, chúng ta có thể tạo ra nhiều cấu hình
khác nhau, do đó, được phân loại thành các kiểu kiến trúc. Một số kiểu cho đến
nay đã được xác định, trong đó những kiểu quan trọng nhất đối với hệ thống phân tán là: • Kiến trúc phân lớp
• Kiến trúc hướng dịch vụ
• Cấu trúc xuất bản-đăng ký
1.4.1 Kiến trúc phân lớp
Ý tưởng cơ bản cho kiểu phân lớp rất đơn giản: các thành phần được tổ chức theo
kiểu phân lớp trong đó một thành phần ở lớp Lj có thể gọi xuống một thành phần
ở lớp cấp thấp hơn Li (với i < j) và thường mong đợi phản hồi. Chỉ trong những
trường hợp đặc biệt, lệnh gọi nâng cấp mới được thực hiện đối với thành phần cấp cao hơn.
Một kiến trúc phân lớp được biết đến rộng rãi và được áp dụng rộng rãi là kiến trúc
các ngăn xếp giao thức truyền thông.
Trong ngăn xếp giao thức truyền thông, mỗi lớp thực hiện một hoặc một số dịch
vụ truyền thông cho phép dữ liệu được gửi từ đích đến một hoặc một số mục tiêu.
Để đạt được mục đích này, mỗi lớp cung cấp một giao diện chỉ định các chức năng
có thể được gọi. Về nguyên tắc, giao diện sẽ ẩn hoàn toàn việc triển khai thực tế lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
của một dịch vụ. Một khái niệm quan trọng khác trong trường hợp giao tiếp là giao
thức (giao tiếp), mô tả các quy tắc mà các bên sẽ tuân theo để trao đổi thông tin.
Điều quan trọng là phải hiểu sự khác biệt giữa dịch vụ được cung cấp bởi một lớp,
giao diện mà dịch vụ đó được cung cấp và giao thức mà một lớp thực hiện để thiết lập giao tiếp.
Để làm rõ sự khác biệt này, hãy xem xét một dịch vụ đáng tin cậy, hướng đến kết
nối, được cung cấp bởi nhiều hệ thống truyền thông. Trong trường hợp này, trước
tiên một bên giao tiếp cần thiết lập kết nối với một bên khác trước khi cả hai có thể
gửi và nhận tin nhắn. Đáng tin cậy có nghĩa là sẽ đưa ra những đảm bảo chắc chắn
rằng các tin nhắn đã gửi thực sự sẽ được chuyển đến phía bên kia, ngay cả khi có
nguy cơ cao là các tin nhắn có thể bị mất (ví dụ như có thể xảy ra khi sử dụng
phương tiện không dây). Ngoài ra, các dịch vụ như vậy thường đảm bảo rằng các
tin nhắn được gửi theo đúng thứ tự như khi chúng được gửi.
Loại dịch vụ này được thực hiện trên Internet bằng Giao thức điều khiển truyền
dẫn (TCP). Giao thức chỉ định những tin nhắn nào sẽ được trao đổi để thiết lập
hoặc ngắt kết nối, những gì cần phải làm để duy trì thứ tự của dữ liệu được truyền
và cả hai bên cần làm gì để phát hiện và sửa dữ liệu bị mất trong quá trình truyền.
Dịch vụ này được cung cấp dưới dạng một giao diện lập trình tương đối đơn giản,
bao gồm các cuộc gọi để thiết lập kết nối, gửi và nhận tin nhắn cũng như ngắt kết
nối lại. Trên thực tế, có nhiều giao diện khác nhau, thường phụ thuộc vào hệ điều
hành hoặc ngôn ngữ lập trình được sử dụng. Tương tự như vậy, có nhiều cách triển
khai giao thức và giao diện của nó.
1.4.2 Kiến trúc hướng dịch vụ
Mặc dù phong cách kiến trúc phân lớp rất phổ biến nhưng một trong những nhược
điểm chính của nó là sự phụ thuộc mạnh mẽ giữa các lớp khác nhau. Những ví dụ
điển hình trong đó những sự phụ thuộc tiềm ẩn này đã được xem xét cẩn thận được
tìm thấy trong việc thiết kế các ngăn xếp giao thức truyền thông. Các ví dụ xấu bao
gồm các ứng dụng về cơ bản được thiết kế và phát triển dưới dạng các thành phần
hiện có mà không quan tâm nhiều đến tính ổn định của giao diện hoặc bản thân các lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
thành phần đó, chứ chưa nói đến sự chồng chéo về chức năng giữa các thành phần khác nhau.
Sự phụ thuộc trực tiếp như vậy vào các thành phần cụ thể đã dẫn tới một phong
cách kiến trúc phản ánh một tổ chức lỏng lẻo hơn thành một tập hợp các thực thể
riêng biệt, độc lập. Mỗi thực thể đóng gói một dịch vụ. Cho dù chúng được gọi là
dịch vụ, đối tượng hay vi dịch vụ, chúng đều có điểm chung là dịch vụ được thực
thi dưới dạng một tiến trình (hoặc luồng) riêng biệt. Tất nhiên, việc chạy các thực
thể riêng biệt không nhất thiết làm giảm mức độ phụ thuộc so với kiểu kiến trúc phân lớp.
1.4.3 Kiến trúc xuất bản-đăng ký
Khi các hệ thống tiếp tục phát triển và các quy trình có thể tham gia hoặc rời bỏ dễ
dàng hơn, điều quan trọng là phải có một kiến trúc trong đó sự phụ thuộc giữa các
quy trình trở nên lỏng lẻo nhất có thể. Một lớp lớn các hệ thống phân tán đã áp
dụng một kiến trúc trong đó có sự tách biệt rõ ràng giữa xử lý và phối hợp. Ý tưởng
là xem hệ thống như một tập hợp các quy trình vận hành tự động. Trong mô hình
này, sự phối hợp bao gồm sự giao tiếp và hợp tác giữa các quy trình. Nó tạo thành
chất keo gắn kết các hoạt động được thực hiện bởi các quy trình thành một tổng thể.
Khi các quá trình được kết hợp theo thời gian và tham chiếu, sự phối hợp diễn ra
trực tiếp, được gọi là phối hợp trực tiếp. Sự ghép nối tham chiếu thường xuất hiện
dưới dạng tham chiếu rõ ràng trong giao tiếp. Ví dụ: một quy trình chỉ có thể giao
tiếp nếu nó biết tên hoặc mã định danh của các quy trình khác mà nó muốn trao đổi
thông tin. Khớp nối tạm thời có nghĩa là cả hai quá trình đang giao tiếp sẽ phải
được thiết lập và chạy. Trong cuộc sống thực, nói chuyện qua điện thoại di động
(và giả sử rằng điện thoại di động chỉ có một chủ sở hữu) là một ví dụ về giao tiếp trực tiếp.
Một kiểu phối hợp khác xảy ra khi các tiến trình được tách rời tạm thời nhưng được
ghép nối tham chiếu, mà chúng ta gọi là phối hợp hộp thư. Trong trường hợp này, lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
không cần thiết phải có hai quá trình giao tiếp hoạt động cùng lúc để quá trình giao
tiếp diễn ra. Thay vào đó, giao tiếp diễn ra bằng cách đặt các tin nhắn vào hộp thư
(có thể dùng chung). Bởi vì cần phải xác định địa chỉ rõ ràng cho hộp thư sẽ chứa
các tin nhắn được trao đổi nên cần có sự kết hợp tham chiếu.
Sự kết hợp của các hệ thống được tách rời tham chiếu và được ghép theo thời gian
tạo thành nhóm các mô hình để phối hợp dựa trên sự kiện. Trong các hệ thống tách
rời tham chiếu, các tiến trình không biết rõ ràng về nhau. Điều duy nhất mà một
quy trình có thể làm là xuất bản một thông báo mô tả sự xuất hiện của một sự kiện
(ví dụ: nó muốn điều phối các hoạt động hoặc nó vừa tạo ra một số kết quả thú vị).
Giả sử rằng các thông báo có đủ loại và đủ loại, các quy trình có thể đăng ký một
loại thông báo cụ thể. Trong mô hình điều phối dựa trên sự kiện lý tưởng, thông
báo đã xuất bản sẽ được gửi chính xác đến những quy trình đã đăng ký thông báo
đó. Tuy nhiên, thông thường yêu cầu người đăng ký phải luôn hoạt động tại thời
điểm thông báo được xuất bản. Một mô hình phối hợp nổi tiếng là sự kết hợp của
các quy trình được tách rời theo thời gian và tham chiếu, dẫn đến cái được gọi là
không gian dữ liệu dùng chung. Ý tưởng chính là các tiến trình giao tiếp hoàn toàn
thông qua các bộ dữ liệu, là các bản ghi dữ liệu có cấu trúc bao gồm một số trường,
rất giống với một hàng trong bảng cơ sở dữ liệu. Các tiến trình có thể đặt bất kỳ
loại bộ dữ liệu nào vào không gian dữ liệu được chia sẻ. Để truy xuất một bộ dữ
liệu, một quy trình sẽ cung cấp một mẫu tìm kiếm phù hợp với các bộ dữ liệu đó.
Bất kỳ bộ nào khớp đều được trả về.
Do đó, không gian dữ liệu dùng chung được coi là thực hiện cơ chế tìm kiếm kết
hợp cho các bộ dữ liệu. Khi một quy trình muốn trích xuất một bộ dữ liệu từ không
gian dữ liệu, nó sẽ chỉ định (một số) giá trị của các trường mà nó quan tâm. Bất kỳ
bộ dữ liệu nào phù hợp với đặc tả đó sẽ bị xóa khỏi không gian dữ liệu và được chuyển đến quy trình. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
1.5 Kiến trúc phần mềm và kiến trúc hệ thống
Hệ phân tán là một hệ thống phức tạp, bao gồm nhiều thành phần nhỏ hơn hoạt
động cùng nhau để đạt được mục tiêu chung. Để quản lý sự phức tạp này, hệ phân
tán cần được tổ chức một cách hợp lý.
Hệ phân tán có các thành phần phần mềm tạo thành hệ thống. Kiến trúc phần mềm
cho chúng ta biết cách các thành phần phần mềm này được tổ chức và làm thế nào
chúng giao tiếp với nhau, hay các kiểu dữ liệu trao đổi là gì. Điều này giống như
việc xây dựng một ngôi nhà, nơi bạn cần biết cách sắp xếp các phòng, cửa ra vào
và cửa sổ để tạo ra một ngôi nhà hoàn chỉnh.
Việc thực hiện của hệ phân tán là việc đặt các thành phần này vào một máy tính
thật. Đây giống như việc chuyển ngôi nhà đã thiết kế vào một khu đất thực tế. Thực
thể cuối cùng của kiến trúc phần mềm (sau khi đã hoàn thiện việc sắp xếp các thành
phần với nhau) được gọi là kiến trúc hệ thống.
Kiến trúc hệ thống là cách thức sắp xếp cài đặt các thầnh phần trong kiến trúc phân
mềm lên các thiết bị vật lý như máy tính, máy chủ và các thiết bị kết nối khác. Nói
cách khác, nếu kiến trúc phần mềm là bản thiết kế của ngôi nhà, thì kiến trúc hệ
thống là ngôi nhà đã hoàn thiện, với tất cả các yếu tố vật lý đã được đặt vào đúng vị trí.
Quá trình từ việc thiết kế kiến trúc phần mềm đến việc triển khai kiến trúc hệ thống
là một quá trình phức tạp và đòi hỏi sự hiểu biết sâu sắc về cả hai lĩnh vực. Tuy
nhiên, khi được thực hiện đúng, nó có thể dẫn đến việc tạo ra một hệ phân tán hiệu
quả và linh hoạt, có khả năng đáp ứng nhu cầu của người dùng và thích ứng với
các thay đổi trong công nghệ và yêu cầu kinh doanh.
1.5.1 Kiến trúc phần mềm lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Kiến trúc phân tầng TẦNG N TẦNG N -1 Luồng yêu cầuLuồng trả về TẦNG 2 TẦNG 1
Hình 1.1: Kiến trúc phân tầng
Trong kiến trúc phân tầng, các thành phần thường được tổ chức theo từng tầng, với
mỗi tầng có sự ràng buộc chặt chẽ với nhau. Điều này giúp tạo ra một cấu trúc rõ
ràng và dễ quản lý cho hệ thống.
Tầng trên sẽ gọi các thành phần của tầng dưới liền kề. Điều này giống như việc
một người quản lý sẽ chỉ đạo những người làm việc dưới quyền mình. Mỗi tầng
trong hệ thống đều có trách nhiệm riêng và chỉ tương tác với tầng liền kề.
Khi có yêu cầu, thông tin sẽ được chuyển từ tầng trên xuống tầng dưới. Đây giống
như việc một người quản lý gửi yêu cầu công việc cho nhân viên của mình. Nhân
viên sau đó sẽ thực hiện công việc và gửi kết quả trở lại cho người quản lý.
Kết quả sau cùng sẽ được trả về từ tầng dưới lên tầng trên. Đây giống như việc
nhân viên hoàn thành công việc và báo cáo kết quả cho người quản lý.
Qua đó, ta thấy rằng việc tổ chức các thành phần theo từng tầng trong kiến trúc
phân tầng không chỉ giúp quản lý hiệu quả hơn mà còn giúp nâng cao khả năng mở
rộng và bảo dưỡng của hệ thống.
Hiệu năng của hệ thống phụ thuộc vào số lượng tầng và cách thiết kế các thành
phần trong mỗi tầng. Nếu số lượng tầng quá ít, hệ thống sẽ khó mở rộng và bảo trì.
Nếu số lượng tầng quá nhiều, hệ thống sẽ bị chậm và phức tạp. Do đó, việc lựa
chọn số lượng tầng phù hợp là rất quan trọng. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Số lượng tầng càng nhiều thì tính chuyên môn hóa càng cao. Điều này có nghĩa là
mỗi tầng sẽ có nhiệm vụ rõ ràng và không can thiệp vào các tầng khác. Điều này
giúp cho việc phát triển và kiểm thử hệ thống được dễ dàng và hiệu quả hơn.
Kiến trúc hướng đối tượng Đối tượng Đối tượng Đối tượng Gọi thủ tục Đối tượng Đối tượng
Hình 1.2. Kiến trúc hướng đối tượng
Kiến trúc hướng đối tượng là một cách tổ chức hệ thống phần mềm theo các đối
tượng, mỗi đối tượng có thuộc tính và phương thức riêng. Các đối tượng có thể kế
thừa, đa hình, và bao đóng các tính năng của chúng. Kiến trúc hướng đối tượng
giúp cho việc tái sử dụng, mở rộng, và bảo trì mã nguồn dễ dàng hơn.
Trong kiến trúc hướng đối tượng thì các đối tượng không nhất thiết phải nằm trên
cùng một máy tính trong hệ phân tán mà có thể ở trong các máy tính khác nhau.
Các đối tượng có thể giao tiếp với nhau thông qua lời gọi thủ tục từ xa (remote
procedure call - RPC), là một cơ chế cho phép một chương trình gọi một chương
trình khác ở xa như thể chúng ở cùng một máy.
Kiến trúc dựa trên đối tượng có ràng buộc lỏng hơn so với kiến trúc phân tầng. Các
đối tượng trong kiến trúc này có thể tương đối độc lập, dễ dàng thay đổi, nâng cấp,
và tái sử dụng. Kiến trúc này cũng có thể cải thiện hiệu năng của hệ thống bằng
cách phân bổ các đối tượng ở các vị trí khác nhau để giảm thiểu chi phí giao tiếp.
Kiến trúc này phù hợp với các hệ thống thời gian thực, điều khiển, hoặc yêu cầu tính linh hoạt cao. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Tuy nhiên, kiến trúc dựa trên đối tượng phân tán cũng có một số nhược điểm. Một
trong số đó là khó khăn trong việc xác định các đối tượng, giao diện, và quan hệ
giữa chúng. Một nhược điểm khác là khi một đối tượng gọi một đối tượng khác ở
xa, nó không biết được rằng đối tượng bị gọi có sẵn hay không, hoặc có xảy ra lỗi
gì trong quá trình giao tiếp hay không. Điều này có thể dẫn đến việc đối tượng gọi
bị phong tỏa (block) hoặc bỏ qua (ignore) lời gọi. Ngoài ra, khi chờ thực hiện yêu
cầu từ xa, đối tượng gọi không thể làm được công việc khác, làm giảm hiệu quả của hệ thống.
Kiến trúc hướng sự kiện Thành phần Thành phần Phát hành sự kiện Đăng ký sự kiện Kênh sự kiện Đăng ký sự kiện Thành phần
Hình 1.3. Kiến trúc hướng sự kiện
Kiến trúc hướng sự kiện là một mô hình kiến trúc phần mềm trong đó các tiến trình
trao đổi thông tin dựa trên việc phát hành các sự kiện. Trong mô hình này, các sự
kiện chứa các thông tin cần trao đổi và có thể kích hoạt các thao tác trong các tiến
trình. Các tiến trình trong kiến trúc hướng sự kiện không giao tiếp trực tiếp với
nhau, mà thay vào đó, chúng phát hành và lắng nghe các sự kiện. Khi một sự kiện
được phát hành, chỉ những tiến trình đã đăng ký nhận sự kiện đó mới nhận được
thông tin. Điều này giúp giảm bớt sự phụ thuộc giữa các tiến trình và tăng khả năng
mở rộng của hệ thống. Một trong những lợi ích lớn nhất của kiến trúc hướng sự
kiện là mức độ ràng buộc giữa các tiến trình thấp. Điều này có nghĩa là mỗi tiến
trình có thể hoạt động độc lập và không cần biết về sự tồn tại của các tiến trình
khác. Điều này giúp cho việc phát triển và bảo dưỡng hệ thống dễ dàng hơn. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Ngoài ra, trong kiến trúc hướng sự kiện, đối tượng gọi không bị phong tỏa khi chờ
đợi một lời gọi thủ tục hoàn thành. Thay vào đó, nó có thể tiếp tục xử lý công việc
khác và sau đó xử lý kết quả của lời gọi thủ tục khi kết quả sẵn sàng.
Tuy nhiên, kiến trúc hướng sự kiện cũng có nhược điểm của riêng nó. Việc xác
định và quản lý các sự kiện có thể trở nên phức tạp, đặc biệt là trong các hệ thống
lớn với nhiều tiến trình. Ngoài ra, việc xử lý các sự kiện không đồng bộ có thể gây
ra khó khăn trong việc gỡ lỗi và kiểm tra.
Kiến trúc hướng dữ liệu Thành phần Thành phần Phát hành sự kiện Đăng ký sự kiện Kho dữ liệu dùng chung
Hình 1.4. Kiến trúc hướng dữ liệu
Kiến trúc hướng dữ liệu là một mô hình kiến trúc phần mềm trong đó dữ liệu đóng
vai trò trung tâm. Trong kiến trúc này, các tiến trình hoạt động dựa trên dữ liệu,
thay vì dựa trên sự kiện hoặc đối tượng như trong các mô hình khác.
Một đặc điểm quan trọng của các mô hình kiến trúc trước, như kiến trúc phân tầng
hay kiến trúc hướng sự kiện, là lượng dữ liệu được gửi và nhận giữa các tiến trình
không nên quá lớn. Nếu lượng dữ liệu quá lớn, nó có thể chiếm hết băng thông
đường truyền và ảnh hưởng đến hiệu suất của hệ thống. Để giải quyết vấn đề này,
kiến trúc hướng dữ liệu tập trung vào việc quản lý và xử lý dữ liệu một cách hiệu quả.
Trong kiến trúc hướng dữ liệu, bên gửi và bên nhận không có ràng buộc chặt chẽ
với nhau. Bên gửi có thể gửi dữ liệu khi bên nhận không hoạt động, và ngược lại,
bên nhận có thể nhận dữ liệu khi bên gửi không hoạt động. Điều này giúp tăng
cường khả năng chịu lỗi và linh hoạt của hệ thống. lOMoAR cPSD| 59421307
Các hệ thống phân tán và Ứng dụng - Tài liệu đọc
Một ví dụ điển hình cho kiến trúc hướng dữ liệu là hệ thống thư điện tử. Khi bạn
gửi một email, bạn không cần biết người nhận có đang online hay không. Email
của bạn sẽ được lưu trong máy chủ và sẽ được gửi đến người nhận khi họ kết nối
với máy chủ. Sau khi gửi email, bạn có thể tắt máy tính của mình mà không ảnh
hưởng đến việc người nhận nhận được email.
Tuy nhiên, kiến trúc hướng dữ liệu cũng có nhược điểm của riêng nó. Việc xác định
và quản lý dữ liệu có thể trở nên phức tạp, đặc biệt là trong các hệ thống lớn với
nhiều loại dữ liệu khác nhau. Ngoài ra, việc xử lý dữ liệu không đồng bộ có thể
gây ra khó khăn trong việc gỡ lỗi và kiểm tra.
Kiến trúc microservices
Kiến trúc microservices là một kiến trúc phần mềm đặc biệt, trong đó ứng dụng
được xây dựng dựa trên số lượng nhỏ các dịch vụ (services), mỗi dịch vụ chạy trên
tiến trình riêng và hoàn toàn triển khai độc lập được. Mỗi dịch vụ trong kiến trúc
microservices thường tương ứng với một chức năng cụ thể và có thể được phát
triển bởi các nhóm độc lập với nhau. Dưới đây là một số ưu điểm của kiến trúc microservices:
Đơn giản triển khai: Mỗi dịch vụ có thể được triển khai, cập nhật, mở rộng và
quản lý độc lập, giúp tăng tốc quá trình phát triển và triển khai.
Đơn giản để hiểu: Vì mỗi dịch vụ tương ứng với một chức năng kinh doanh cụ
thể, nên việc hiểu và phát triển từng dịch vụ trở nên dễ dàng hơn.
Tái sử dụng: Các dịch vụ có thể được tái sử dụng trong nhiều ứng dụng khác nhau,
giúp tiết kiệm thời gian và nguồn lực.
Nhanh chóng cách ly thành phần hỏng: Khi một dịch vụ gặp sự cố, nó có thể
được cách ly mà không ảnh hưởng đến các dịch vụ khác trong hệ thống.
Giảm thiểu nguy cơ khi thực hiện thay đổi: Vì mỗi dịch vụ có thể được quản lý
độc lập, nên việc thực hiện các thay đổi (như cập nhật phiên bản, thay đổi công
nghệ) trở nên ít rủi ro hơn.