Trường Đại học Bách khoa – Đại học Đà Nẵng
Khoa Khoa học Cơng nghệ Tiên tiến
LOOSE COUPLING
GSVHD
NHĨM 3
Đà Nẵng, 11 tháng 10 năm 2021
PGS.TS. Võ Trung Hùng
1.
2.
3.
4.
5.
6.
Lê Thanh Phương
Đỗ Phương Thảo
Huỳnh Thế Quang
Nguyễn Diệu Quỳnh
Đặng Đức Thành
Lê Nhật Tân
I
NỘI DUNG
Giới thiệu
II
III
Nhu cầu về khả năng chịu lỗi
IV
Xử lý với Loose Coupling
V
Kết luận
Các hình thức của Loose Coupling
I
GIỚI THIỆU
• Khả năng mở rộng và khả năng chịu lỗi là chìa khóa cho khả năng bảo trì của
các hệ thống
• Một mục tiêu quan trọng khác là giảm thiểu tác động của các sửa đổi và lỗi trên
toàn bộ hệ thống nói chung.
Vì vậy, Losse coupling là một khái niệm chính trong SOA
1
II
NHU CẦU VỀ KHẢ NĂNG CHỊU LỖI
• Thường sẽ khơng có đủ thời gian để tạo ra các thiết kế hệ thống
được xây dựng kỹ lưỡng và mạnh mẽ.
• Nếu chúng ta không đủ nhanh, đủ linh hoạt và đủ rẻ, thì sẽ sớm bị loại khỏi thị
trường.
Do đó, bạn cần các giải pháp nhanh chóng, linh hoạt và rẻ.
• Tuy nhiên, các giải pháp nhanh và rẻ khơng thể được thiết kế tốt và mạnh mẽ.
Dẫn đến thường xuyên xãy ra lỗi và sự cố.
Vì vậy, hệ thống phải có khả năng chịu lỗi cao
2
II
NHU CẦU VỀ KHẢ NĂNG CHỊU LỖI
Theo [ITSecCity02]:
• Sự cố hệ thống đặt vé máy bay có thể mất 100.000 đơ la một giờ
• Sự cố hệ thống thẻ tín dụng có thể mất 300.000 đơ la một giờ
• Sự cố giao dịch chứng khốn có thể mất 8 triệu đô la một giờ
Như những số liệu này cho thấy, khả năng chịu lỗi là chìa khóa cho các hệ
thống phân tán lớn
Khi sự cố xảy ra, điều quan trọng là phải giảm thiểu ảnh hưởng và hậu quả của
chúng
3
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
• Loose coupling là khái niệm thường được sử dụng để giải quyết
các yêu cầu về khả năng mở rộng, tính linh hoạt và khả năng chịu
lỗi.
• Mục đích của loose coupling là để giảm thiểu sự phụ thuộc.
• Loose coupling là một nguyên tắc, không phải là một công cụ
cũng không phải là một danh sách kiểm tra.
4
III
5
CÁC HÌNH THỨC CỦA LOOSE COUPLING
Tight coupling
Loose coupling
Physical connections
Point-to-point
Via mediator
Communication style
Synchronous
Asynchronous
Data model
Common complex types
Simple common types only
Type system
Strong
Weak
Interaction pattern
Navigate through complex object
trees
Data-centric, self-contained message
Control of process logic
Central control
Distributed control
Binding
Statically
Dynamically
Platform
Strong platform dependencies
Platform independent
Transactionality
2PC (two-phase commit)
Compensation
Deployment
Simultaneous
At different times
Versioning
Explicit upgrades
Implicit upgrades
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
1. Giao tiếp bất đồng bộ
• Ưu điểm là các hệ thống trao đổi thơng điệp khơng cần phải trực
tuyến cùng một lúc. Ngồi ra, nếu cần trả lời, thời gian trả lời dài
sẽ không cản trở người tiêu dùng dịch vụ.
• Hạn chế là logic của người tiêu dùng dịch vụ phức tạp hơn nhiều.
6
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
2. Các kiểu dữ liệu khơng đồng nhất
• Lập trình hướng đối tượng là xu hướng chủ đạo
• Mơ hình BOM (Business Object Model) đã trở thành một mục tiêu chung
Tuy nhiên, cách tiếp cận này là công thức gây ra thảm họa cho các hệ thống
lớn
7
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
2. Các kiểu dữ liệu khơng đồng nhất
• Lý do đầu tiên của thảm họa là do tổ chức
Quan điểm và mối quan tâm của các hệ thống khác nhau quá khác nhau.
Bởi vì các hệ thống phân tán lớn thường có các chủ sở hữu khác nhau, rất
khó để đạt được các thỏa thuận.
• Giả sử chúng ta có một giải pháp có một BOM chung với các kiểu
dữ liệu hài hoà với nhau. Nhưng chúng ta sẽ gặp vấn đề là: Những
hệ thống khác nhau sẽ cải tiến khác nhau
• Việc duy trì đồng bộ tất cả các hệ thống đơn giản là quá tốn kém
về thời gian và tiền bạc
8
Cái giá bỏ ra để được sự hài hoà dữ liệu trở nên quá cao
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
2. Các kiểu dữ liệu khơng đồng nhất
• Ưu điểm là các hệ thống có thể sửa đổi kiểu dữ liệu của chúng mà
không ảnh hưởng trực tiếp đến các hệ thống khác
• Hạn chế là bạn phải ánh xạ các kiểu dữ liệu từ hệ thống này sang
hệ thống khác.
9
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
3. Người trung gian
• Định nghĩa một đối tượng gói gọn cách một tập hợp các đối tượng tương
tác
• Mediator thúc đẩy sự khớp nối lỏng lẻo (loose coupling) bằng cách ngăn
không cho các đối tượng đề cập đến nhau một cách rõ ràng và nó cho
phép bạn thay đổi sự tương tác của họ một cách độc lập
10
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
3. Người trung gian
Có 2 loại
• Loại đầu tiên: Bạn cần biết điểm cuối chính xác cho cuộc gọi dịch vụ của
bạn trước khi bạn gửi nó. Nghĩa là, bạn vẫn có các kết nối điểm-điểm,
nhưng với sự trợ giúp của những người trung gian này, nó sẽ gửi các cuộc
gọi dịch vụ của mình đến các địa chỉ khác nhau
11
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
3. Người trung gian
• Loại thứ hai: Chọn điểm cuối phù hợp cho một yêu cầu sau khi người tiêu
dùng gửi nó. Trong trường hợp này, người tiêu dùng gửi yêu cầu đến một
tên tượng trưng và cơ sở hạ tầng (mạng, phần mềm trung gian, ESB) định
tuyến cuộc gọi đến hệ thống thích hợp theo các quy tắc định tuyến thông
minh.
12
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
3. Người trung gian
Lợi ích
• Giảm khớp nối giữa các component.
• Tái sử dụng các component dễ dàng hơn.
• Đơn giản hóa cách giao tiếp giữa các đối tượng. Một mediator sẽ
thay thế mối quan hệ nhiều-nhiều (many-to-many) giữa các
component bằng quan hệ một-nhiều (one-to-many) giữa một
mediator với các component.
• Quản lý tập trung, giúp làm rõ các component tương tác trong hệ
thống như thế nào trong hệ thống.
13
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
4. Kiểm tra loại yếu
• Ngôn ngữ strong typing như Java: "abc" + 3 >>> Báo lỗi
• Ngơn ngữ weak typing như Javascript: let a = "abc" + 123 >>> "abc123"
• Ngơn ngữ strong typing thường sẽ tường minh và kiểm sốt lỗi tốt hơn
• Tuy nhiên việc kiểm tra kiểu quá chặt chẽ khiến hệ thống khó mở rộng và tốn thời
gian nên SOA kết hợp với ESB (Enterprise Service Bus) giúp quản lý dữ liệu một
cách thống nhất, tích hợp các service riêng lẽ thành một hệ thống
14
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
5. Ràng buộc
• Giảm thiểu các ràng buộc giữa các modules , cho phép ghép nối chúng một cách
đơn giản và linh hoạt …
• Có thể xác minh các ràng buộc này trước thời gian biên dịch hoặc xảy ra trong thời
gian chạy
15
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
6. Phụ thuộc nền tảng
• Giải pháp độc lập các nền tảng sẽ được ưu tiên hơn
• Mỗi phần sẽ chỉ giải quyết độc lập, không ảnh hưởng đến nhau, giúp cho khả năng
chịu lỗi của phần mềm tốt hơn.
16
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
7. Các mẫu tương tác
• Một trong những thiết kế đặc trưng để tường minh, đồng bộ dữ liệu là OOP, tuy
nhiên việc ánh xạ dữ liệu từ các nền tảng sẽ là vấn đề lớn
• Việc duy trì và đồng bộ các dữ liệu trên các nền tảng thực sự rất tốn thời gian và
tiền bạc
17
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
8. Đền bù
• Là một dạng của loose coupling
• Ưu điểm của nó là các bản cập nhật hệ thống không cần phải thực hiện đồng bộ
(một số chương trình có thể ngoại tuyến khi cập nhật)
• Hạn chế là phải cung cấp và gọi các dịch vụ rõ ràng để hoàn nguyên các dịch vụ
hoặc chương trình trước đó để xử lý lỗi thủ công
18
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
9. Kiểm sốt logic quy trình
• Các quyết định kiểm sốt q trình cũng có thể dẫn đến các hình thức khớp nối
khác nhau.
• Việc có một thành phần trung tâm kiểm sốt tồn bộ logic quy trình sẽ tạo ra một
nút cổ chai vì mỗi hệ thống liên quan phải kết nối với nó
• Sự thất bại của một thành phần trung tâm như vậy sẽ dừng tồn bộ q trình.
19
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
9. Kiểm sốt logic quy trình
• Khi kiểm sốt phi tập trung hoặc phân tán (nơi mỗi thành phần thực hiện cơng
việc của mình và biết thành phần nào sẽ tiếp tục sau đó), bạn sẽ tránh được tắc
nghẽn và nếu một số hệ thống bị lỗi, những hệ thống khác vẫn có thể tiếp tục
hoạt động
20
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
10. Triển khai
• Cho dù bạn yêu cầu các bản cập nhật hệ thống được triển khai đồng thời hay tại
các thời điểm khác nhau, đều liên quan đến việc ghép nối.
• Tất nhiên, các hệ thống được ràng buộc chặt chẽ hơn với nhau nếu chúng được
yêu cầu cập nhật đồng bộ
• Tuy nhiên, cách tiếp cận kết hợp lỏng lẻo hơn của việc cập nhật vào các thời
điểm khác nhau dẫn đến một nhược điểm rất quan trọng: nhu cầu di chuyển, dẫn
đến việc tạo phiên bản
21
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
11. Phiên bản
• Nếu một hệ thống cung cấp các loại dữ liệu nhất định được người tiêu dùng sử
dụng, bạn sẽ gặp sự cố khi nhà cung cấp thêm các thuộc tính mới.
• Nếu nhà cung cấp giới thiệu phiên bản loại mới, người tiêu dùng sẽ phải nâng
cấp rõ ràng lên loại mới này; nếu không, nhà cung cấp sẽ phải hỗ trợ cả hai loại.
• Mặt khác, nếu nhà cung cấp chỉ thêm thuộc tính vào loại hiện có, điều này có thể
gây ra các vấn đề tương thích nhị phân và yêu cầu người tiêu dùng biên dịch lại
mã của nó hoặc sử dụng một thư viện khác.
22
III
CÁC HÌNH THỨC CỦA LOOSE COUPLING
11. Phiên bản
• Với hình thức lập phiên bản kiểu dữ liệu được kết hợp lỏng lẻo hơn, người tiêu
dùng sẽ không phải làm bất cứ điều gì miễn là các sửa đổi tương thích ngược.
23