ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ---------------------------------------- BÁO CÁO MÔN HỌCKiến trúc hướng dịch vụTÌM HIỂU...Giảng viên hướng dẫn: .. Võ Đình Hiếu Nhóm 12Hà Nội, tháng 11 năm 2015Table of ContentsI. Giới thiệu về Enterprise Service Bus 31. Mở đầu 32. ESB hứa hẹn điều gì? 33. Nguyên tắc chính của ESB 44. Các đặc tính của ESB 45. Các thành phần chính của ESB. 56. Lợi ích và bất lợi của ESB 66.1 Lợi ích chính của ESB 66.2 Bất lợi chính của ESB 6II. Spring Intergration 71. Tổng quan 72. Đặc điểm chính 73. Kiến trúc 94. Những thành phần chính 10a. Thông điệp (Message) 10b. Kênh thông điệp (Message channel) 11c. Điểm đầu cuối của thông điệp 115. So sánh với các công cụ khác 156. Những điểm cần lưu ý khi sử dụng 15I. Giới thiệu về Enterprise Service Bus1. Mở đầuCùng với sự phát triển của doanh nghiệp, rất nhiều các ứng dụng được tạo mới, tùy biến hoặc mua về để phục vụ các quy trình nghiệp vụ. Các ứng dụng này cần được liên kết và trao đổi thông tin với nhau. Tuy nhiên, chúng thường không có cùng định dạng dữ liệu hay không có chung chuẩn giao tiếp. Vì vậy, một nhu cầu mới nảy sinh là tích hợp các ứng dụng lại thành một cơ sở hạ tầng phân cấp. Đã có những giải pháp để giải quyết vấn đề này như tích hợp point-to-point. Tuy nhiên nó vẫn tồn tại những vấn đề đáng kể. Một giải pháp mới được đưa ra là sử dụng ESB. Trong bài báo cáo này, chúng tôi sẽ trình bày những nội dung cơ bản của ESB và trình bày một ESB cụ thể là Spring Integration.2. ESB hứa hẹn điều gì?ESB hứa hẹn xây dựng SOA bằng cách tích hợp tất cả các loại ứng dụng đơn lẻ vào một cơ sở hạ tầng phân cấp được gọi là service bus. Nói chung, ESB dựa trên ý tưởng từ EAI , đặc biệt trong việc định tuyến và chuyển đổi thông điệp. Sự khác nhau lớn nhất khi so sánh với các giải pháp EAI trước đó là các dự án tích hợp được tiến hành theo một chiến lược lâu dài, cho tất cả các loại ứng dụng giống như business service vào service bus.Về mặt kỹ thuật, sự khác nhau chủ yếu giữa ESB và các giải pháp EAI trước đó là nó thay thế tất cả các kết nối trực tiếp giữa các ứng dụng thông qua kênh truyền ảo, đáng tin cậy, an toàn và có thể quản lý được. Đối với point-to–point, các ứng dụng bị phụ thuộc chặt chẽ vào nhau. Ứng dụng được tích hợp phải biết rõ ứng dụng đích có các loại phương thức nào, giao thức và định dạng dữ liệu ra sao. Thông qua các kênh ảo được ESB sử dụng, ứng dụng có thể được tách riêng, dẫn đến sự tương tác không bị phụ thuộc vào nhau. Để cho phép chuẩn hóa tin nhắn trao đổi giữa các dịch vụ doanh nghiệp khác nhau, ESB sử dụng XML như là định dạng dữ liệu và SOAP như là giao thức trao đổi thông điệp. ESB giống như trung tâm giao tiếp trong kiến trúc hướng dịch vụ (SOA). Nó chuyển các yêu cầu tới các loại thông điệp phù hợp và định tuyến cho chúng tới những nơi cung cấp thích hợp. Hình 1 cho ta cái nhìn tổng quát về kiến trúc của ESB. Hình 1: Kiến trúc của ESB3. Nguyên tắc chính của ESBKiến trúc ESB có một số nguyên tắc quan trọng cho phép sự linh hoạt và khả năng mở rộng. Trọng tâm là để tách riêng các hệ thống với nhau khi cho phép chúng giao tiếp trong một cách phù hợp, có thể quản lý được.• Khai niệm “bus” tách riêng các ứng dụng với nhau. Điều này đạt được khi sử dụng message server giống như JMS hay AMQP.• Dữ liệu được vận chuyển trên bus có định dạng canonical và gần như luôn luôn là XML.• Có adapter giữa các ứng dụng và bus sắp xếp dữ liệu giữa hai bên.• Adapter có trách nhiệm nói chuyện với các ứng dụng phụ trợ và chuyển đổi dữ liệu từ định dạng ứng dụng sang định dạng bus. Adapter cũng thực hiện một loạt các hoạt động khác như quản lý giao dịch định tuyến thông điệp, bảo mật, giám sát, xử lý lỗi,…• ESB là stateless; state được nhúng vào trong các thông điệp vận chuyển trên bus.• Định dạng canonical là định dạng thông điệp nhất quán cho thông điệp trên bus và mọi ứng dụng trên bus có thể giao tiếp với nhau.4. Các đặc tính của ESB• Phân tán – loại bỏ những ràng buộc về triển khai hệ thống.• Dựa trên việc trao đổi message – tăng sự liên kết yếu giữa các ứng dụng. Các ứng dụng không bị phụ thuộc nhiều vào nhau trong khi thực thi.• Ổn định – để thỏa mãn những yêu cầu về thực thi nghiệp vụ• Không cần biết về hệ điều hành và ngôn ngữ chương trình , ví dụ như, nó không chỉ cho phép tương tác giữa các ứng dụng Java hay .NET.• Sử dụng XML như là ngôn ngữ giao tiếp chuẩn.
• Hỗ trợ các chuẩn của dịch vụ web
• Adapters để hỗ trợ việc tích hợp với các hệ thống kế thừa.
• Mô hình bảo mật chuẩn cho phép xác thực và sử dụng kiểm toán.
5. Các thành phần chính của ESB.
Thành phần chính của kiến trúc ESB gồm MOM (Message-oriented middleware), service container và management facility.
MOM đơn giản là một mạng lưới phân phối các message server. Nó được gọi là xương sống của ESB. Nó cho phép thiết lập kênh ảo đáng tin cậy, an toàn, quản lý được và gửi thông điệp qua chúng.
Một service container quản lý ứng dụng nội bộ hoặc cung cấp quyền truy cập tới một ứng dụng bên ngoài thông qua một adapter phù hợp. Adapter cung cấp sự truy cập cho tất cả các loại ứng dụng. Service container quản lý các dịch vụ sẵn có như là các dịch vụ nghiệp vụ. Nó cũng kết nối các dịch vụ nghiệp vụ này vào kênh ảo cụ thể và cho phép chúng gửi và nhận thông điệp trên MOM. Nhờ có service container thông minh và MOM phân tán cao, ESB có tính chất phân cấp.
Trong kiến trúc ESB, một số các dịch vụ đặc biệt được đặt mặc định. Giữa chúng là các dịch vụ định tuyến và xử lý XML. Các dịch vụ tích hợp được quản lý bởi các service container và kết nối với các kênh truyền ảo.
MOM và service container cần phải được cài đặt. Vì vậy, ESB có quản lý các thành phần (management facility) mạnh mẽ với MOM và tất cả các service container được kết nối. Management facility cho biết tất cả các dịch vụ nghiệp vụ, kênh truyền ảo và cho phép cấu hình, giám sát chúng.
Hình 2: Các thành phần chính của ESB và mối quan hệ giữa chúng
6. Lợi ích và bất lợi của ESB
6.1 Lợi ích chính của ESB
• Thích nghi nhanh và rẻ hơn với hệ thống đang tồn tại
• Tăng sự mềm dẻo; dễ dàng hơn cho việc thay đổi như là thay đổi yêu cầu.
• Dựa trên các chuẩn
• Mở rộng từ giải pháp point –to-point để triển khai rộng rãi cho các doanh nghiệp (Bus phân phối)
• Định nghĩa trước các loại dịch vụ sẵn sàng cho người dùng
• Thêm cấu hình chứ không phải tích hợp mã hóa
• Không có các rules-engine trung tâm, không có môi giới trung tâm
6.2 Bất lợi chính của ESB
• Thường đòi hỏi mô hình thông điệp doanh nghiệp, kết quả là thêm chi phí quản lý. Những khó khăn tiềm năng khi tích hợp nhiều hệ thống tạp nham để cộng tác thông qua các tiêu chuẩn thông điệp
• Yêu cầu sự quản lý liên tục các phiên bản thông điệp để đảm bảo lợi ích dự kiến của loose coupling. Sự quản lý không chính xác, không đầy đủ hoặc không cần thiết của phiên bản thông điệp có thể dẫn đến sự phụ thuộc chặt chẽ thay vì mục đích là đạt được loose coupling.
• Đòi hỏi phần cứng nhiều hơn là các thông điệp point –to-point đơn giản.
• Kỹ năng phân tích trung gian cần để cấu hình, quản lý và thực hiện ESB.
• Tăng độ trễ gây ra bởi việc các thông điệp phải đi qua thêm các lớp của ESB, đặc biệt khi so sánh với giao tiếp qua mô hình điểm- điểm. Độ trễ tăng lên một phần cũng là do thêm phần xử lý tài liệu XML (ESB thường sử dụng XML là ngôn ngữ giao tiếp).
II. Spring Intergration
1. Tổng quan
Spring Integration là một thành phần mới được bổ sung vào Spring Portfolio, cho phép các tính năng như các kênh dịch vụ doanh nghiệp (Enterprise service bus) có thể được tạo và quản lý trong Spring framework.
Đây là một giải pháp nhằm mục đích nâng cao năng suất, đơn giản hóa quá trình phát triển, và cung cấp một nền tảng vững chắc mà từ đó bạn có thể giải quyết các vấn đề phức tạp. Nó cung cấp một mô hình nhẹ, không xâm lấn và đã được khai báo để xây dựng các ứng dụng hướng thông điệp. Spring integration bao gồm một bộ công cụ gồm các phần tử tích hợp thông dụng và các adapter. Với những công cụ này các nhà phát triển có thể xây dựng các ứng dụng mà theo nghĩa đen thay đổi cách doanh nghiệp của họ xử lý các nghiệp vụ.
2. Đặc điểm chính
Một trong những ý tưởng chính của Spring là cơ chế kiểm soát ngược - Inversion Of Control(IOC).
Theo nghĩa rộng điều này có nghĩa là framework đảm nhiệm vai trò thay cho cho các thành phần được quản lý trong ngữ cảnh của nó. Các thành phần sẽ trở lên đơn giản hơn khi chúng được giải phóng khỏi các vai trò. Ví dụ, sử dụng dependency injection giúp chúng ta loại bỏ hard-code khi sử dụng các thành phần phụ thuộc, và khiến cho các thành phần của ứng dụng giao tiếp, mở rộng dễ dàng và dễ bảo trì.
Spring intergration hỗ trợ kiến trúc hướng thông điệp - message-driven architectures.
Kiến trúc hướng thông điệp là một hướng tiếp cận trong mô hình clien/server. Trong đó các client (ví dụ trình duyệt web) gửi các yêu cầu dịch vụ dưới dạng thông điệp đã
đang được dịch, vui lòng đợi..