Kiểu Cổng đa năng như USB dùng cho Enterprise Service Bus: Phần 1: Vấn đề với các ESB hiện nay

Tìm hiểu về các chức năng cơ bản của các ESB hiện nay và một số vấn đề với các ESB đang lưu hành

Trong phần 1 của loạt bài này, trước hết bạn sẽ tìm hiểu về các chức năng cơ bản của Enterprise Service Buses (ESB - Bus dịch vụ doanh nghiệp) hiện nay. Trong phần 1 này, bạn cũng sẽ tìm hiểu một số khó khăn về sử dụng các ESB hiện nay. Trong các phần sau của loạt bài này, bạn sẽ tìm hiểu khái niệm mới về kiểu các Cổng đa năng (Universal Ports) cho ESB. Các Cổng đa năng cung cấp giải pháp cho nhiều vấn đề mà những người dùng ESB hiện nay đang trải nghiệm. Một Cổng đa năng hoạt động tương tự như cổng USB của máy tính, mà nó nối các loại thiết bị khác nhau để nối tới máy tính. Theo cách tương tự, có thể sử dụng một Cổng đa năng để kết nối bất kỳ ứng dụng nào với ESB và, một cách gián tiếp, với các ứng dụng khác. Các ứng dụng này có thể sử dụng các dạng dịch vụ khác nhau để trưng ra một số hoặc tất cả chức năng của chúng mà vẫn sử dụng một kiểu cổng duy nhất.

Dr. Waseem Roshen, Kiến trúc sư CNTT, IBM  

Ảnh của Tiến Sĩ Waseem RoshenTiến sĩ Waseem Roshen có bằng tiến sĩ của Đại học Bang Ohio, Columbus, Ohio (Mỹ) và đã có hơn 18 năm kinh nghiệm thực tế trong lĩnh vực Công nghệ thông tin (CNTT). Hiện nay Tiến sĩ Roshen là một kiến trúc sư CNTT trong Trung tâm Công nghệ xuất sắc và Kiến trúc doanh nghiệp tại Tập đoàn IBM. Ông có nhiều kinh nghiệm với điện toán phân tán, bao gồm Kiến trúc hướng dịch vụ (SOA). Ngoài ra, ông có chuyên môn về phát triển tùy chỉnh, kiến trúc tích hợp và J2EE (bây giờ được gọi là JEE). Mối quan tâm hiện nay của ông là các dịch vụ web và SOA, Các máy tính lượng tử và điện toán đám mây. Tiến sĩ Roshen có hơn 62 ấn phẩm và 37 bằng sáng chế và là một thành viên của IEEE và Hiệp hội máy tính IEEE. Ông là tác giả duy nhất của cuốn sách: Tích hợp doanh nghiệp dựa trên SOA: Một hướng dẫn từng bước để tích hợp ứng dụng dựa trên các dịch vụ.



26 12 2012

Giới thiệu

Trong một Kiến trúc hướng dịch vụ (SOA), một ESB là một thành phần cơ sở hạ tầng có tính quyết định và quan trọng. Một ESB được sử dụng để gián tiếp kết nối các ứng dụng có sử dụng các dạng dịch vụ khác nhau như thể hiện trong Hình 1. Các dạng dịch vụ khác nhau này bao gồm các dịch vụ web, các dịch vụ RESTful, các dịch vụ không đồng bộ như là các dịch vụ sử dụng MQ, các dịch vụ dựa trên CORBA, các dịch vụ dựa trên DCOM và RMI của Java. Các dịch vụ này sử dụng giao thức truyền thông và các dạng thông báo khác nhau. Ví dụ các dịch vụ web sử dụng HTTP làm giao thức truyền thông và SOAP làm kiểu định dạng thông báo, trong khi các dịch vụ không đồng bộ có thể sử dụng MQ làm giao thức truyền thông và XML làm định dạng thông báo.

ESB hiện nay cung cấp một số chức năng cốt lõi để nối các ứng dụng có sử dụng các dạng dịch vụ khác nhau. Tuy nhiên, trong những ESB đang lưu hành này, mỗi ứng dụng nối với ESB bằng cách sử dụng một kiểu cổng cụ thể như thể hiện trong Hình 1. Kiểu cổng được một ứng dụng cụ thể sử dụng được xác định bởi kiểu giao thức truyền thông và kiểu định dạng thông báo mà ứng dụng đó sử dụng. Có một số vấn đề liên quan đến việc sử dụng các kiểu cổng cụ thể này của các ứng dụng. Bạn sẽ tìm hiểu về những vấn đề này và những bất tiện trong phần 1 của loạt bài này.

Kết nối các ứng dụng thông qua ESB bằng cách sử dụng các kiểu cổng cụ thể
Kết nối các ứng dụng thông qua một ESB

Chúng ta bắt đầu phần tiếp theo của bài này bằng cách trước tiên đưa ra một giới thiệu về ESB bằng việc nêu lên một số các vấn đề vốn có trong các kết nối điểm-điểm (point-to-point) giữa các ứng dụng và cách sử dụng một ESB giúp giải quyết các vấn đề này. Tiếp theo, trong ba phần của bài này, bạn sẽ tìm hiểu về các vấn đề khác nhau liên quan đến việc sử dụng các kiểu của các cổng khác nhau bằng các ứng dụng kết nối khác nhau trong ESB hiện nay. Phần cuối cùng của bài này sẽ có một vài nhận xét kết luận.

Các chức năng cốt lõi của ESB

Mục đích của phần này là đưa ra một giới thiệu về một ESB bằng cách mô tả tóm tắt ba chức năng cốt lõi và những vấn đề liên quan đến các ứng dụng đang kết nối với các dịch vụ đa dạng bằng cách sử dụng cách tiếp cận các kết nối điểm-điểm.

Khả năng mở rộng quy mô và định tuyến kết nối

Hãy xem xét một công ty cỡ trung bình cần phải tích hợp sáu ứng dụng. Các kết nối cần thiết để nối sáu ứng dụng này được hiển thị dưới dạng lược đồ trong Hình 2.

Các kết nối của sáu ứng dụng khi sử dụng cách tiếp cận tích hợp điểm-điểm
Kết nối các ứng dụng theo cách tiếp cận điểm-điểm

Bạn có thể nhận thấy rằng số lượng các kết nối cần thiết trong trường hợp này là 15. Con số này bằng số của các cặp các ứng dụng khác nhau trong lược đồ tích hợp. Tương tự như vậy, có thể biết rằng trong trường hợp của mười ứng dụng, số lượng các kết nối cần thiết sẽ là 45. Như vậy, chúng ta có thể kết luận khi số lượng các ứng dụng tăng thêm, số lượng các kết nối cần thiết cũng tăng lên nhanh chóng theo cách không tuyến tính. Điều này được gọi là một vấn đề búi tóc (hairball) vì nó có thể làm nghẽn mạng. Trên thực tế, có thể thấy rõ rằng nếu một doanh nghiệp có N ứng dụng được tích hợp, số lượng kết nối cần thiết theo cách tiếp cận điểm-điểm là

N(N-1)/2

Điều này là dễ hiểu bởi vì số lượng các cặp các ứng dụng riêng là N(N-1)/2. Do đó, chúng ta có thể kết luận rằng lược đồ tích hợp điểm-điểm không phù hợp với việc tích hợp một doanh nghiệp lớn và cần tìm ra một giải pháp khác có khả năng mở rộng quy mô tốt hơn.

ESB cung cấp một giải pháp tuyệt vời cho vấn đề mở rộng quy mô kết nối và do đó thích hợp với các doanh nghiệp từ trung bình đến lớn, cần tích hợp một số lượng lớn các ứng dụng. Trong phong cách tương tác ESB, các ứng dụng không tương tác trực tiếp với nhau. Thay vào đó, các ứng dụng kết nối với bus và bus cung cấp phương tiện cho các kết nối giữa các ứng dụng. Sự tương tác gián tiếp này được thể hiện trong Hình 1, trong đó cho thấy sáu ứng dụng tương tác với nhau thông qua việc sử dụng ESB. Điều quan trọng nhất cần lưu ý trong Hình 1 là số lượng các kết nối cần thiết chỉ là sáu. Về cơ bản, con số này ít hơn số lượng các kết nối cần thiết cho sáu ứng dụng trong lược đồ điểm-điểm (đó là 15). Một điều quan trọng khác cần lưu ý từ con số này là số lượng các kết nối cần thiết bằng số lượng các ứng dụng đang được tích hợp. Vì vậy, nếu chúng ta đã có 10 ứng dụng chúng ta chỉ cần mười kết nối. Số lượng các kết nối này là rất nhỏ so với số lượng các kết nối cần thiết trong cách tiếp cận điểm-điểm (đó là 45).

Một ESB đạt được khả năng để kết nối gián tiếp các ứng dụng bằng cách cung cấp định tuyến dựa trên nội dung và bối cảnh. Vì vậy, ứng dụng yêu cầu không cần phải biết địa chỉ của ứng dụng đích hoặc thậm chí cả ứng dụng đang cung cấp dịch vụ.

Không khớp về giao thức và Chuyển đổi giao thức

Vấn đề không khớp về giao thức truyền thông phát sinh do trong một doanh nghiệp lớn các ứng dụng khác nhau thường sử dụng các giao thức khác nhau để giao tiếp. Nói cách khác, trong thế giới thực xảy ra một sự gia tăng nhanh của các giao thức này, bao gồm cả HTTP, HTTPS, JRMP, IIOP và JMS. Do sự gia tăng này, đôi khi một sự không khớp về giao thức sẽ xảy ra giữa ứng dụng của người tiêu dùng dịch vụ và ứng dụng của nhà cung cấp dịch vụ. Vì vậy, không có một phương tiện nào để chuyển đổi một giao thức truyền thông sang một giao thức truyền thông khác, ứng dụng của người tiêu dùng dịch vụ sẽ không có khả năng gọi dịch vụ do ứng dụng của nhà cung cấp dịch vụ cung cấp. Vấn đề này được thể hiện dưới dạng lược đồ trong Hình 3.

Vấn đề Không khớp về giao thức
Vấn đề Không khớp về giao thức

Vì thế, một chức năng cốt lõi khác cần được đưa vào trong một ESB là một phương tiện chuyển đổi giao thức, có thể dùng nó để chuyển dịch một giao thức này sang một giao thức khác. Với phương tiện chuyển đổi này, các ứng dụng đang sử dụng các giao thức khác nhau có thể tương tác với nhau. Điều quan trọng cần chỉ ra là ESB thương mại hiện nay đã hỗ trợ chuyển đổi giao thức. Ví dụ, điều hoàn toàn bình thường là chuyển đổi từ HTTP, được sử dụng để trao đổi thông báo đồng bộ, sang các thông báo không đồng bộ MQ. Với mục đích này, một ID (Trình định danh) tương quan được sử dụng để liên kết các thông báo MQ yêu cầu và đáp ứng.

Chuyển đổi và Không khớp thông báo/định dạng dữ liệu

Một vấn đề đa dạng hơn là vấn đề không khớp định dạng thông báo/dữ liệu. Vấn đề này đề cập đến thực tế là đôi khi định dạng dữ liệu do người dùng dịch vụ cung cấp và định dạng dữ liệu theo yêu cầu của ứng dụng của nhà cung cấp dịch vụ không hoàn toàn khớp nhau. Điều này ngăn cản các ứng dụng tương tác với nhau như được hiển thị dưới dạng lược đồ trong Hình 4.

Vấn đề Không khớp định dạng dữ liệu
Tóm tắt quá trình

Vì vậy, một chức năng cốt lõi khác cần được một ESB cung cấp là chuyển đổi dữ liệu hoặc thông báo. Hầu hết các ESB thương mại có sẵn cung cấp chức năng này lại đang dùng các kỹ thuật khác nhau. Ví dụ, có thể sử dụng các bản Định kiểu XML để chuyển đổi giữa các dạng XML khác nhau bao gồm cả SOAP. Khi chức năng này được kết hợp với hai chức năng ESB khác, các ứng dụng dễ dàng có thể kết nối và tương tác với nhau, ngay cả khi các giao diện và giao thức của chúng không hoàn toàn khớp nhau.

Các chức năng khác

Ngoài việc đáp ứng ba yêu cầu chức năng như vậy, một ESB cũng thực hiện các dịch vụ để đáp ứng các yêu cầu không theo chức năng như hiệu suất và độ tin cậy, kiểm toán và bảo mật. Hơn nữa, nhiều sản phẩm ESB thương mại cung cấp các dịch vụ tùy chọn khác như làm phong phú thêm dữ liệu, phân phối các thông báo, tương quan và giám sát.

Những yêu cầu chức năng và không chức năng này có thể được đáp ứng bằng một sản phẩm hoặc một nhóm sản phẩm duy nhất. Nói cách khác, về cơ bản ESB là một mẫu không nhất thiết phải được thực hiện như là một sản phẩm đơn lẻ.

Các vấn đề với ESB Hiện nay

Trong ESB hiện nay, mỗi ứng dụng nối với ESB bằng cách sử dụng một kiểu cổng cụ thể như thể hiện trong Hình 1. Kiểu cổng được xác định bởi kiểu dịch vụ do một ứng dụng sử dụng để trưng ra chức năng của nó. Ví dụ, một ứng dụng, trưng ra chức năng của nó thông qua một dịch vụ web, phải sử dụng một kiểu cổng phục vụ cho HTTP làm giao thức truyền thông và SOAP làm định dạng thông báo. Nói cách khác, một ứng dụng cụ thể phải kết nối với ESB thông qua một kiểu cổng cụ thể, với kiểu cổng được xác định bằng giao thức truyền thông và định dạng thông báo được ứng dụng sử dụng. Phương pháp này của các ứng dụng đang kết nối thông qua một kiểu cổng cụ thể là mất công và bất tiện vì nhiều lý do. Một số trong những lý do này là:

  • Nhiều lần, do các yêu cầu hoặc môi trường mà thời gian chạy bị thay đổi, một ứng dụng cần chuyển đổi giao thức truyền thông. Tuy nhiên, điều này cũng đòi hỏi một sự thay đổi về kiểu cổng ở bên phía ESB và gần như chắc chắn sẽ yêu cầu xây dựng một kiểu cổng khác. Điều này rõ ràng cần phải có thời gian và tài nguyên.
  • Một tình trạng phổ biến là một ứng dụng muốn sử dụng nhiều giao thức để trưng ra các chức năng khác nhau ở đâu. Đây thường là trường hợp dùng cho các ứng dụng COBOL của máy tính lớn, ở đó một ứng dụng cụ thể trưng ra một số chức năng của nó bằng cách sử dụng Các dịch vụ Web, đồng thời; nó trưng ra một tập hợp các chức năng khác thông qua việc sử dụng một giao thức thông báo như MQ. Một lần nữa, việc này đòi hỏi phải xây dựng các kiểu cổng mới ở đầu ESB để phục vụ cho cả hai kiểu giao thức, nên rất bất tiện vì nó đòi hỏi cả thời gian lẫn tài nguyên.
  • Trong ESB hiện nay, rất khó để phát triển việc sử dụng ESB tới các giao thức truyền thông mới được tạo thành. Điều này là do nó yêu cầu những thay đổi trên cả hai đầu ứng dụng và đầu ESB. Về phía ESB, nó đòi hỏi phải phát triển kiểu cổng mới hoàn toàn.
  • Vì mỗi ứng dụng phải kết nối với ESB thông qua một kiểu cổng cụ thể, nên phải mất khá nhiều nỗ lực để cấu hình ESB cho việc sử dụng của một ứng dụng. Những nỗ lực này có thể bao gồm việc xây dựng một kiểu cổng mới, triển khai nó trong một ESB và cấu hình ESB để sử dụng cổng cụ thể. Tất cả điều này làm cho khó kết nối số lượng lớn các ứng dụng qua việc sử dụng ESB và do đó dẫn đến một vấn đề về khả năng mở rộng quy mô.
  • Ngoài ra, vì mỗi cổng phải được triển khai và cấu hình một cách riêng biệt, nên rất khó để duy trì và cập nhật một ESB.

Kết luận

Trong bài này, bạn đã tìm hiểu về một số vấn đề về việc tích hợp các ứng dụng sử dụng dạng khác nhau của các dịch vụ SOA và các chức năng cốt lõi của ESB hiện nay giải quyết những vấn đề này như thế nào. Bạn cũng đã biết rằng có các vấn đề bổ sung liên quan đến việc sử dụng các kiểu cổng khác nhau trong ESB hiện nay. Những vấn đề này chưa được ESB hiện tại giải quyết.

Trong bài tiếp theo, để khắc phục các kiếm khuyết của ESB hiện tại, bạn sẽ tìm hiểu về một kiểu ESB mới. Kiểu ESB mới này sẽ sử dụng một kiểu Cổng đa năng duy nhất, có thể phục vụ cho hầu hết hoặc tất cả các kiểu ứng dụng có sử dụng các kiểu dịch vụ khác nhau để trưng ra một số hoặc tất cả các chức năng của chúng. Điều này sẽ loại bỏ hoặc làm giảm đáng kể sự cần thiết phải phát triển và triển khai kiểu cổng mới cho mỗi kiểu ứng dụng mới. Kiểu Cổng đa năng mới sẽ dẫn đến nhiều lợi ích bao gồm việc sử dụng lại mã lớn hơn nhiều. Những lợi ích của việc sử dụng kiểu Cổng đa năng sẽ được nói thêm ở bài sau.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=SOA và dịch vụ Web
ArticleID=853414
ArticleTitle=Kiểu Cổng đa năng như USB dùng cho Enterprise Service Bus: Phần 1: Vấn đề với các ESB hiện nay
publish-date=12262012