Kiến trúc của hệ thống thông tin phân tán và ứng dụng Web. Quản lý dịch vụ cơ sở hạ tầng. Tiêu chuẩn quản lý dịch vụ web

Dịch vụ web- một từ mới trong công nghệ hệ thống phân tán. Sự chỉ rõ Môi trường mạng mở (MỘT) Tập đoàn Sun Microsystems và Sáng kiến. Net của Microsoft cung cấp cơ sở hạ tầng để viết và triển khai các dịch vụ Web. TRONG Hiện nay Có một số định nghĩa về dịch vụ Web. Dịch vụ Web có thể là bất kỳ ứng dụng nào có quyền truy cập vào Web, chẳng hạn như một trang Web có nội dung động. Trong hơn theo nghĩa hẹp Dịch vụ web là một ứng dụng cung cấp giao diện mở, thích hợp để sử dụng bởi các ứng dụng khác trên Web. Đặc tả ONE Sun yêu cầu các dịch vụ Web có thể truy cập được qua HTTP và các giao thức Web khác, để cho phép trao đổi thông tin qua các tin nhắn XML và có thể tìm kiếm được thông qua những dịch vụ đặc biệt- dịch vụ tìm kiếm. Một giao thức đặc biệt đã được phát triển để truy cập vào các dịch vụ Web - Giao thức truy cập đối tượng đơn giản (SOAP), giới thiệu khả năng tương tác dựa trên XML cho nhiều dịch vụ Web. Các dịch vụ web đặc biệt hấp dẫn vì chúng có thể cung cấp mức độ tương thích cao giữa các hệ thống khác nhau.

Một dịch vụ Web giả định, được thiết kế theo kiến ​​trúc ONE của Sun, có thể có dạng mà cơ quan đăng ký dịch vụ xuất bản Mô tả trang web-Dịch vụ dưới dạng tài liệu .

Tiềm năng to lớn của các dịch vụ Web không được xác định bởi công nghệ được sử dụng để tạo ra chúng. HTTP, XML và các giao thức khác được các dịch vụ Web sử dụng không phải là mới. Khả năng tương tác và khả năng mở rộng của các dịch vụ Web có nghĩa là các nhà phát triển có thể nhanh chóng xây dựng các ứng dụng lớn hơn và các dịch vụ Web lớn hơn từ các dịch vụ Web nhỏ hơn. Đặc tả Môi trường mạng mở của Sun mô tả một kiến ​​trúc để tạo dịch vụ web thông minh.Các dịch vụ Web thông minh tận dụng một môi trường hoạt động chung. Bằng cách chia sẻ bối cảnh, các dịch vụ Web thông minh có thể thực hiện xác thực tiêu chuẩn cho các giao dịch tài chính, đưa ra các khuyến nghị và hướng dẫn dựa trên vị trí địa lý của các công ty tham gia giao dịch. kinh doanh điện tử.

Để tạo ra một ứng dụng là dịch vụ Web, cần phải áp dụng một số công nghệ.

Mối quan hệ giữa các công nghệ này được trình bày theo quy ước trong Hình 2. 10.1.


Cơm. 10.1.

Trên thực tế, dịch vụ Web là một trong những lựa chọn triển khai kiến trúc thành phần, trong đó ứng dụng được coi là tập hợp các thành phần tương tác với nhau. Như đã nói nhiều lần, sự tương tác giữa các thành phần chạy trên các nền tảng khác nhau khá phức tạp. nhiệm vụ khó khănĐặc biệt, đòi hỏi phải phát triển giao thức truyền thông, có tính đến các tính năng truyền dữ liệu giữa các nền tảng khác nhau. Một trong những ý tưởng chính làm nền tảng cho công nghệ dịch vụ Web đang được xem xét là việc loại bỏ hệ nhị phân. giao thức truyền thông. Các thông báo được trao đổi giữa các thành phần hệ thống bằng cách truyền các thông báo XML. Vì thông báo XML là tệp văn bản nên giao thức truyền tải có thể rất khác nhau - tin nhắn XML có thể được truyền qua các giao thức HTTP, SMTP, FTP và việc sử dụng các giao thức truyền tải khác nhau là minh bạch đối với các ứng dụng. Như đã đề cập, giao thức cho phép các dịch vụ Web tương tác được gọi là XÀ BÔNG (Giao thức truy cập đối tượng đơn giản). Nó được định nghĩa dựa trên XML. XÀ BÔNGđảm bảo sự tương tác của các hệ thống phân tán, bất kể mô hình đối tượng hoặc nền tảng được sử dụng. Dữ liệu bên trong XÀ BÔNGđược truyền dưới dạng tài liệu XML có định dạng đặc biệt. XÀ BÔNG không áp đặt bất kỳ giao thức vận chuyển cụ thể nào. Tuy nhiên, trong các ứng dụng thực tế, việc truyền tải thường được thực hiện XÀ BÔNG-tin nhắn của Giao thức HTTP. Người ta cũng thường sử dụng SMTP, FTP và thậm chí cả TCP “thuần túy” làm giao thức truyền tải. Vì thế, XÀ BÔNGđịnh nghĩa một cơ chế để các dịch vụ Web có thể gọi các chức năng của nhau. Theo một nghĩa nào đó, hoạt động của giao thức này gợi nhớ đến một cuộc gọi thủ tục từ xa - người gọi biết tên của dịch vụ Web, tên phương thức của nó, các tham số mà phương thức đó chấp nhận và chính thức hóa cuộc gọi đến phương thức này dưới dạng XÀ BÔNG-tin nhắn và gửi nó đến dịch vụ Web.

Tuy nhiên, cách tiếp cận được mô tả chỉ phù hợp nếu “chữ ký” của các phương thức mà dịch vụ Web triển khai được biết trước. Nhưng nếu điều này không xảy ra thì sao? Để giải quyết vấn đề này, mô hình dịch vụ Web đã giới thiệu lớp bổ sung- Lớp mô tả các giao diện dịch vụ. Lớp này được trình bày dưới dạng mô tả WSDL.

Theo định nghĩa của W3C, " WSDL - định dạng XMLđể mô tả dịch vụ mạng như một tập hợp các hoạt động hữu hạn hoạt động bằng cách sử dụng các thông điệp chứa thông tin hướng tài liệu hoặc hướng thủ tục." Tài liệu WSDL mô tả đầy đủ giao diện dịch vụ Web với thế giới bên ngoài. Nó cung cấp thông tin về các dịch vụ có thể nhận được bằng cách sử dụng các phương thức dịch vụ và cách truy cập các phương thức này. Do đó, nếu chữ ký phương thức của một dịch vụ Web không được biết chính xác (ví dụ: nó đã thay đổi theo thời gian), dịch vụ Web mục tiêu có thể được truy vấn WSDL-description - tập tin chứa thông tin này.

Lớp công nghệ tiếp theo là dịch vụ Mô tả, khám phá và tích hợp phổ quát (UDDI).Công nghệ này liên quan đến việc duy trì sổ đăng ký các dịch vụ Web. Bằng cách kết nối với sổ đăng ký này, người tiêu dùng có thể tìm thấy các dịch vụ Web phù hợp nhất với nhu cầu của họ. Công nghệ UDDI cho phép tìm kiếm và xuất bản dịch vụ cần thiết và những thao tác này có thể được thực hiện bởi một người hoặc bởi một dịch vụ Web khác hoặc một chương trình máy khách đặc biệt. UDDI, đến lượt nó, cũng là một dịch vụ Web.

Vì vậy, các dịch vụ Web là một triển khai khác của hệ thống phần mềm trung gian. Tính năng đặc biệt công nghệ này độc lập với phần mềm được sử dụng và phần cứng, cũng như việc sử dụng rộng rãi tiêu chuẩn mở(chẳng hạn như XML) và các giao thức truyền thông tiêu chuẩn.

Hiện nay, các dịch vụ Web là một công nghệ được quảng bá rất tích cực và được định vị như một phương tiện để giải quyết một số vấn đề.

Cần lưu ý rằng bằng cách sử dụng chúng, cái gọi là ứng dụng “tiêu chuẩn” cũng có thể được xây dựng, trong đó phần máy chủ được thiết kế như một dịch vụ Web.

Giao thức truy cập đối tượng đơn giản (SOAP)

Giao thức cơ bản đảm bảo sự tương tác trong môi trường dịch vụ Web là

“ NGHIÊN CỨU VÀ PHÁT TRIỂN CÁC PHƯƠNG PHÁP XÂY DỰNG HỆ THỐNG CAD-CAE PHÂN PHỐI DỰA TRÊN CÔNG NGHỆ…”

Là một bản thảo

Anisimov Denis Andreevich

NGHIÊN CỨU VÀ PHÁT TRIỂN PHƯƠNG PHÁP XÂY DỰNG

HỆ THỐNG PHÂN PHỐI TỰ ĐỘNG

THIẾT KẾ DỰA TRÊN CÔNG NGHỆ DỊCH VỤ WEB

Chuyên ngành: 05.13.12 – Thiết kế hệ thống tự động hóa

luận án cho một mức độ học thuật

ứng viên khoa học kỹ thuật

St Petersburg 2013

Công việc được thực hiện tại cơ sở giáo dục chuyên nghiệp ngân sách nhà nước liên bang "Đại học Kỹ thuật Điện bang St. Petersburg "LETI" được đặt theo tên. V. I. Ulyanova (Lenin), Khoa Hệ thống thiết kế hỗ trợ máy tính

Giám đốc khoa học– Tiến sĩ Khoa học Kỹ thuật, Giáo sư Dmitrevich Gennady Daniilovich

Đối thủ chính thức:

Tiến sĩ Khoa học Kỹ thuật, Giáo sư, Đại học Kỹ thuật Điện bang St. Petersburg "LETI" được đặt theo tên. TRONG VA.

Ulyanova (Lenin), Bộ môn Hệ thống điều khiển và xử lý thông tin tự động Kutuzov Oleg Ivanovich Ứng viên khoa học kỹ thuật, Công ty cổ phần mở "Quan tâm"

"HỘI NGHIÊN CỨU VÀ SẢN XUẤT" AURORA ",


Trưởng phòng thí nghiệm Pakhomenkov Yury Mikhailovich

Tổ chức lãnh đạo: Cơ quan giáo dục ngân sách nhà nước liên bang về giáo dục chuyên nghiệp cao hơn "Quốc gia St. Petersburg đại học nghiên cứu công nghệ thông tin, cơ học và quang học"

Việc bảo vệ luận án sẽ diễn ra vào lúc 16h30 ngày 23 tháng 5 năm 2013 tại cuộc họp của hội đồng luận án D212.238.02 của Đại học Kỹ thuật Điện bang St. Petersburg "LETI" mang tên. TRONG VA.

Ulyanova (Lenin) tại địa chỉ: 197376, St. Petersburg, st. Giáo sư Popova, số 5.

Luận án có thể được tìm thấy trong thư viện của Đại học Kỹ thuật Bang St. Petersburg. Bản tóm tắt đã được gửi “___” __________ năm 2013.

Thư ký khoa học của Hội đồng luận văn D212.238.02 N. M. Safyannikov

MÔ TẢ CHUNG CÔNG VIỆC

Mức độ liên quan nghiên cứu Việc áp dụng rộng rãi các hệ thống thiết kế có sự trợ giúp của máy tính vào việc thực hành các vấn đề kỹ thuật bị hạn chế đáng kể do chi phí cao của phần mềm được cấp phép. Cùng với đó, việc tạo ra hệ thống CAD của riêng bạn gắn liền với việc tiêu tốn rất nhiều nguồn lực và không thể thực hiện được trong thời gian ngắn, vì việc phát triển hệ thống CAD hiện đại đòi hỏi hàng trăm năm công. Vấn đề còn phức tạp hơn bởi thực tế là trong các tình huống vận hành thực tế, các hệ thống CAD tích hợp đa chức năng được sử dụng, theo quy luật, cực kỳ kém hiệu quả, vì khi giải quyết nhiệm vụ cụ thể Trong thành phần chính của các hệ thống này, không quá 10-20% phần mềm dành riêng cho từng bộ phận thường được sử dụng.

Giải pháp cho vấn đề cấp bách này có thể là sự phân quyền của kiến ​​trúc CAD thông qua việc chuyển đổi sang các hệ thống thiết kế phân tán được xây dựng trên cơ sở các công nghệ Internet triển khai nhiệm vụ giao tiếp và trao đổi thông tin giữa các ứng dụng.

Bất kể như vậy ứng dụng được quản lý tự chủ và có thể tương tác với nhau trong quá trình thực hiện một nhiệm vụ chung.

Các giao thức công nghệ Internet cung cấp cơ sở đáng tin cậy để liên kết các hệ thống con và không yêu cầu sử dụng phối hợp các tài nguyên nằm trong các nút mạng khác nhau, giúp đơn giản hóa đáng kể quá trình xây dựng và vận hành hệ thống CAD phân tán. Yêu cầu chính đối với khả năng thực hiện như vậy hệ thống phân phối là tính nhất quán của các giao diện mà qua đó các hệ thống con riêng lẻ được kết nối. Nếu yêu cầu này được đáp ứng, các thành phần CAD phân phối riêng lẻ có thể được tạo bởi các nhà phát triển khác nhau và được duy trì ở các địa điểm khác nhau, từ đó chúng sẽ được phân phối (có thể trên cơ sở thương mại) tới khách hàng.

Phương pháp hiệu quả nhất để kết hợp các hệ thống con thành một ứng dụng phân tán cần được tổ chức xem xét cuộc gọi từ xa các thủ tục dựa trên kiến ​​trúc hướng dịch vụ sử dụng các dịch vụ web. Tích hợp dựa trên các dịch vụ web trong quá trình phát triển hệ thống CAD phi tập trung cho phép bạn chuyển sang mô tả giao diện và tương tác dựa trên XML, cung cấp khả năng sửa đổi và phát triển phần mềm được xây dựng trong khi vẫn duy trì giao diện đã chọn. Điều này cho phép, do sự liên kết lỏng lẻo của các hệ thống con riêng lẻ, đảm bảo sự tương tác giữa các dịch vụ trên nền tảng tùy ý và điều chỉnh các ứng dụng hiện có để thay đổi điều kiện thiết kế.

Gánh nặng chính của việc thực hiện các hoạt động tính toán với kiến ​​trúc như vậy rơi vào các dịch vụ web giải quyết tất cả các vấn đề về mô hình hóa hệ thống đang được thiết kế; các ứng dụng khách chỉ được giao các chức năng đơn giản nhất là chuẩn bị dữ liệu và hiển thị kết quả mô hình hóa.

Khi phát triển phần mềm CAD sử dụng dịch vụ web, có thể sử dụng các dịch vụ sau: các loại sau ứng dụng khách:

ứng dụng loại bảng điều khiển, ứng dụng loại cửa sổ và ứng dụng web.

Một đặc điểm của ứng dụng console là không có GUI tuy nhiên, việc sử dụng chúng có thể hữu ích khi triển khai các hệ thống CAD đơn giản cho máy tính bỏ túi có diện tích màn hình nhỏ.

Các ứng dụng cửa sổ cung cấp khả năng triển khai đồ họa tốt nhất có thể và phù hợp nhất để phát triển các hệ thống phân tán dựa trên các dịch vụ web. Đối với bất kỳ dịch vụ web nào, có thể xây dựng một số ứng dụng khách với các cách triển khai tương tác hộp thoại khác nhau.

Các ứng dụng web cung cấp khả năng đặt tất cả phần mềm CAD của bạn hoàn toàn trực tuyến. Ưu điểm của việc áp dụng cấu trúc này là truy cập mởĐối với việc sử dụng CAD phân tán thông qua bất kỳ loại trình duyệt nào, nhược điểm của loại ứng dụng này là tăng thời gian cần thiết để mô tả các thành phần của hệ thống được thiết kế do phải chờ phản hồi ở các bước nhập dữ liệu riêng lẻ.

Đối với bất kỳ loại ứng dụng khách nào, các dịch vụ web đều được gọi theo cùng một cách và đối với mỗi dịch vụ web, có thể sử dụng bất kỳ cách nào để triển khai các ứng dụng khách được viết bằng các ngôn ngữ khác nhau. Nếu cần thiết, các ứng dụng khách như vậy có thể được sửa đổi dễ dàng để phù hợp với các điều kiện thiết kế thay đổi và dịch vụ web cũng có thể được mở rộng để bao gồm các phương pháp bổ sung.

Mục tiêu của công việc và mục tiêu chính của nghiên cứu Luận án này tập trung nghiên cứu và phát triển các phương pháp xây dựng hệ thống CAD phân tán độc lập với nền tảng sử dụng dịch vụ web. Để triển khai cụ thể, nhiệm vụ phát triển hệ thống tự động hóa phân tán cho thiết kế mạch đã được chọn.

Để đạt được mục tiêu này, cần giải quyết các nhiệm vụ sau:

1. Phát triển phương pháp chung để xây dựng, thử nghiệm ngoại tuyến và triển khai trên máy chủ dịch vụ web Java đã chọn.

2. Thực hiện nghiên cứu phương pháp phổ biến xây dựng phần mềm dịch vụ web Java cho hệ thống tự động hóa thiết kế mạch phân tán.

3. Nghiên cứu và phát triển phương pháp xây dựng dịch vụ web Java sử dụng công nghệ nén dữ liệu.

4. Tiến hành nghiên cứu và phát triển một phương pháp chung để xây dựng mẫu cho các ứng dụng khách thuộc loại bảng điều khiển và cửa sổ, cũng như các ứng dụng web khách.

5. Phát triển phương pháp triển khai chức năng của các dịch vụ web và ứng dụng khách trong môi trường không đồng nhất.

Phương pháp nghiên cứu Khi thực hiện nhiệm vụ được giao trong luận án, những kiến ​​thức cơ bản được sử dụng lý thuyết tổng quát CAD, lý thuyết về hệ thống mô hình hóa, nguyên tắc cơ bản của lý thuyết ma trận và đồ thị.

Độ tin cậy của kết quả khoa học được xác nhận bằng các quy định cơ bản của lý thuyết chung về CAD, lý thuyết mô hình hóa, tính chính xác của bộ máy toán học được sử dụng và kết quả thu được từ việc thử nghiệm phần mềm được tạo ra cho các dịch vụ web và ứng dụng khách.

Kết quả khoa học mới

1. Đề xuất kiến ​​trúc hướng dịch vụ cho CAD phân tán sử dụng dịch vụ web.

2. Một phương pháp chung đã được phát triển để triển khai, thử nghiệm ngoại tuyến và triển khai các dịch vụ web Java trên máy chủ CAD phân tán.

3. Nghiên cứu và phát triển các phương pháp xây dựng phần mềm dịch vụ web Java nhằm giải quyết các bài toán thiết kế mạch điện tử điển hình.

5. Một phương pháp chung để xây dựng các ứng dụng console và window client, cũng như các ứng dụng web client, đã được phát triển.

6. Một phương pháp đã được phát triển để triển khai phần mềm CAD phân tán nhằm tổ chức tương tác trong môi trường không đồng nhất của dịch vụ web và ứng dụng khách.

Quy định cơ bảnđệ trình để bào chữa

1. Kiến trúc CAD định hướng dịch vụ phân tán dựa trên các dịch vụ web.

2. Phương pháp chung để thiết kế từ dưới lên các dịch vụ web Java

3. Phương pháp triển khai phần mềm dịch vụ web Java dựa trên nén dữ liệu.

Giá trị thực tiễn

1. Cấu trúc CAD phân tán được đề xuất cung cấp khả năng tổ chức tương tác giữa các dịch vụ web khác nhau trên nền tảng đã chọn và điều chỉnh các ứng dụng để thay đổi điều kiện thiết kế.

2. Thư viện tích hợp các chức năng phụ trợ dựa trên nén dữ liệu giúp tăng hiệu quả tạo phần mềm dịch vụ web Java cho các hệ thống tự động hóa thiết kế mạch

3. Xây dựng phương pháp thực hiện tương tác client-serverđảm bảo hoạt động của các hệ thống CAD phân tán trong môi trường không đồng nhất.

4. Phần mềm của hệ thống tự động hóa phân tán được phát triển để thiết kế mạch chứa một hạt nhân bất biến để tổ chức cả giai đoạn ký hiệu và số của các chương trình Java, hạt nhân này có thể được sử dụng làm cơ sở để xây dựng hệ thống thiết kế cho nhiều đối tượng.

Triển khai và triển khai kết quả Hệ thống CAD phân tán được phát triển trong luận án sử dụng dịch vụ web được triển khai bằng Java sử dụng nền tảng WTP (Web Tools Platform). Kết quả thực tế là một hệ thống CAD thiết kế mạch phân tán độc lập với nền tảng, thực hiện mô hình hóa đa biến các mạch phi tuyến ở chế độ tĩnh, ở chế độ động, để tính toán các đặc tính tần số và cũng cung cấp tính toán độ nhạy của hàm truyền và độ nhạy của chế độ tĩnh. các biến đến các biến thể tham số.

Kết quả của luận án được sử dụng trong nghiên cứu ngân sách nhà nước với đề tài “Phát triển mô hình và phương pháp phân tích, tổng hợp hệ thống hỗ trợ quyết định thông minh để quản lý các đối tượng phân tán phức tạp” (kế hoạch môn học mã CAD-47 của Trường Đại học Kinh tế bang St. Petersburg) 2011) và đề tài “Cơ sở toán học và logic của việc xây dựng môi trường xây dựng các thiết bị ảo” (kế hoạch đề tài mã CAD-49 SPbGETU 2012) Kết quả của luận án được ứng dụng vào thực tiễn kỹ thuật của công ty khoa học sản xuất “Modem” và được sử dụng trong quá trình đào tạo của khoa CAD của Đại học Kỹ thuật Bang St. Petersburg để nghiên cứu phương pháp xây dựng phần mềm cho hệ thống tự động hóa thiết kế mạch nhằm chuẩn bị cho chương trình cử nhân và thạc sĩ về "Tin học và Khoa học Máy tính".

Phê duyệt công việc Những nội dung chính của luận án đã được báo cáo và thảo luận tại các hội thảo sau:

1. Hội nghị các nhà khoa học trẻ “Định hướng và điều khiển giao thông” lần thứ 9 – St. Petersburg;

2. Hội thảo quốc tế lần thứ 5 “Chế tạo công cụ trong sinh thái và an toàn con người” – St. Petersburg, SUAI;

3. XIII, XIV, XVII hội nghị quốc tế « Giáo dục hiện đại: nội dung, công nghệ, chất lượng.” – St. Petersburg, Đại học Kỹ thuật Điện St. Petersburg;

4. Hội nghị khoa học kỹ thuật lần thứ 60, 61, 63 của đội ngũ giảng viên SETU.

Ấn phẩm Nội dung lý luận và thực tiễn chính của luận án đã được công bố trên 16 bài báo khoa học, trong đó có 4 bài báo trên các ấn phẩm bình duyệt hàng đầu được đề xuất đưa vào danh sách hiện hành của Ủy ban chứng thực cấp cao, 1 giấy chứng nhận đăng ký chính thức chương trình máy tính được đăng ký với Dịch vụ Liên bang. về sở hữu trí tuệ, bằng sáng chế và nhãn hiệu.

Cấu trúc và phạm vi của luận án Luận án gồm phần mở đầu, 4 chương nội dung chính, phần kết luận và thư mục gồm 69 nguồn. Tác phẩm được trình bày trên 154 trang văn bản, gồm 21 hình và một bảng.

Trong phần giới thiệuđưa ra lời giải thích về sự liên quan của chủ đề luận án, các mục tiêu nghiên cứu được xây dựng và danh sách các nhiệm vụ cần giải quyết trong công việc được đưa ra.

Trong chương đầu tiên các vấn đề về xây dựng kiến ​​trúc của các ứng dụng phân tán được xem xét, quyết định cấu trúc chung, các chức năng được thực hiện và mối quan hệ của các thành phần riêng lẻ của hệ thống.

Nó cho thấy rằng kiến ​​trúc của một ứng dụng phân tán bao gồm cả các khía cạnh cấu trúc và hành vi của nó, cũng như các quy tắc tích hợp và sử dụng, chức năng, tính linh hoạt, độ tin cậy, hiệu suất, khả năng sử dụng lại, các hạn chế về công nghệ và các vấn đề về giao diện người dùng. Nhiệm vụ chính của việc tích hợp các ứng dụng tự trị (các hệ thống con) vào một ứng dụng phân tán là cung cấp kết nối chức năng, cung cấp các tương tác cần thiết với sự phụ thuộc tối thiểu giữa các hệ thống con.

Công trình luận án cho thấy cơ chế như vậy được cung cấp hiệu quả nhất khi sử dụng kiến ​​trúc dựa trên sự tương tác giữa các hệ thống con sử dụng các lệnh gọi thủ tục từ xa, được sử dụng để trao đổi dữ liệu và thực hiện một số hành động nhất định. Trong trường hợp một ứng dụng cần truy xuất hoặc thay đổi bất kỳ thông tin nào được duy trì bởi một ứng dụng khác, nó sẽ truy cập thông tin đó thông qua lệnh gọi hàm.

Để xây dựng hệ thống CAD phân tán, luận án đề xuất sử dụng kiến ​​trúc hướng dịch vụ (SOA) dựa trên cấu trúc phần mềm module và các giao diện được chuẩn hóa. SOA sử dụng sự thống nhất của cơ bản Quy trình hoạt động, nguyên tắc sử dụng lặp lại các yếu tố chức năng, tổ chức dựa trên nền tảng tích hợp. Mặc dù kiến ​​trúc SOA không được liên kết với bất kỳ công nghệ gọi thủ tục từ xa cụ thể nào, các hệ thống con phần mềm được thiết kế theo SOA thường được triển khai dưới dạng tập hợp các dịch vụ web được liên kết bằng các giao thức cơ bản (SOAP, WSDL).

Các hệ thống dựa trên kiến ​​trúc hướng dịch vụ thuộc lớp hệ thống đa tác nhân (MAS), được hình thành bởi một số tác nhân thông minh tương tác để đảm bảo quyền tự chủ, tính đại diện hạn chế và phân cấp của các hệ thống con riêng lẻ của hệ thống điện toán thông tin phân tán.

Các dịch vụ web dựa trên tiêu chuẩn XML và cho phép người dùng tương tác với các công cụ hệ thống bên ngoài qua Internet, là các thành phần được liên kết lỏng lẻo của hệ thống phần mềm có sẵn để sử dụng thông qua các giao thức Internet. Công trình luận án cho thấy rằng trong quá trình triển khai thực tế các hệ thống CAD phân tán sử dụng dịch vụ web, cần đặc biệt chú ý đến việc phân chia chính xác trách nhiệm chức năng được giao cho ứng dụng khách chính và dịch vụ web tương tác với ứng dụng này.

Phương pháp cụ thể để triển khai các dịch vụ web phụ thuộc đáng kể vào ngôn ngữ lập trình đã chọn. Công việc cho thấy rằng nên ưu tiên khi chọn ngôn ngữ lập trình để xây dựng các dịch vụ web cho ngôn ngữ Java, ngôn ngữ này đảm bảo đầy đủ nhất tính độc lập nền tảng của các giải pháp được triển khai. Một yếu tố quan trọng ủng hộ sự lựa chọn này cũng là sự sẵn có của công cụ hỗ trợ mạnh mẽ để phát triển các ứng dụng dựa trên web bằng Java, được cung cấp bởi môi trường WTP (Nền tảng công cụ web).

Luận án đã tiến hành phân tích so sánh hai phương pháp chính để xây dựng các dịch vụ web Java - từ dưới lên (Từ dưới lên), khi lớp Java của dịch vụ web được tạo lần đầu tiên và sau đó một tài liệu WSDL được tạo dựa trên nó, và từ trên xuống (Từ trên xuống), khi tài liệu WSDL được yêu cầu được tạo lần đầu tiên và sau đó mã triển khai dịch vụ web được tạo dựa trên tài liệu đó. Dựa trên đánh giá so sánh, người ta thấy rằng việc thiết kế các dịch vụ web nên được thực hiện bằng phương pháp từ dưới lên, vì trong trường hợp này, tài liệu WSDL được hình thành dựa trên một lớp Java được tạo trước, lớp này mô tả tất cả các tham số được truyền tới phương thức dịch vụ web và các giá trị được trả về bởi phương thức này. Trong trường hợp này, tất cả thông tin có sẵn trong lớp Java sẽ tự động được chuyển đổi thành tài liệu WSDL tương ứng, nội dung của tài liệu này tương ứng chính xác với cấu trúc cơ bản của đặc tả WSDL và các đặc điểm chính của phương thức dịch vụ web được gọi, đảm bảo tính hoàn chỉnh độ tin cậy của thông tin chứa trong tài liệu WSDL.

Để có thể triển khai thực tế việc thiết kế các dịch vụ web bằng phương pháp từ dưới lên, luận án đề xuất một phương pháp xây dựng một dự án web động và lớp Java để triển khai dịch vụ web có trong đó kèm theo mô tả các phương thức được gọi, trong đó, ngoài các phương thức làm việc chính, nhất thiết phải chứa một phương thức phụ không có đối số, trả về một biến chuỗi chứa tất cả thông tin về các phương thức chính đảm bảo hoạt động của dịch vụ web và mô tả các định dạng của các tham số được truyền cũng như dữ liệu được trả về, đảm bảo khả năng tự ghi lại dịch vụ web cũng như khả năng tạo và liên tục cải tiến các ứng dụng khách bất kể nhà phát triển dịch vụ web.

Luận án cung cấp kỹ thuật tổ chức cuộc gọi đến phương thức thông tin dịch vụ web trực tiếp từ môi trường phát triển ứng dụng Java tích hợp, trong đó, bằng cách sử dụng URL dịch vụ web, bạn có thể truy cập phản hồi Soap của phương thức thông tin và nội dung trả về của nó giá trị.

Trong chương thứ hai Các phương pháp xây dựng các dịch vụ web CAD phân tán được xem xét, với sự trợ giúp của chúng, các mạch phi tuyến được tính toán ở chế độ tĩnh, các hàm mạch của mạch tuyến tính và tuyến tính hóa được tính toán cho miền tần số và các mạch phi tuyến được tính toán ở chế độ động. Ngoài ra, các hệ thống con có trong hệ thống phân tán bao gồm dịch vụ web để tính toán độ nhạy của các chức năng mạch trong miền tần số và dịch vụ web để tính toán độ nhạy của các biến trạng thái ổn định của mạch phi tuyến đối với các biến đổi tham số. Là thành phần của mạch được thiết kế trên cơ sở các dịch vụ web phát triển, bạn có thể sử dụng các thiết bị hai cực loại R, C, L, nguồn điều khiển phụ thuộc tần số tuyến tính, nguồn điều khiển phi tuyến, máy biến áp, bóng bán dẫn lưỡng cực và đơn cực, Mổ nội soi, cũng như các nguồn dòng điện và điện áp chính.

Cơ sở của các phương pháp này là cấu trúc chung của mô tả toán học của hệ thống thiết kế mạch. Luận án đưa ra đánh giá so sánh về các phương pháp khả thi trong việc lựa chọn cơ sở tọa độ để hình thành mô tả mạch tuyến tính hóa, ưu tiên cơ sở mở rộng của thế năng nút. Cần lưu ý rằng cùng với những ưu điểm chắc chắn, một hạn chế đáng kể của cơ sở này là không thể mô tả toán học các thành phần của mạch bằng các phương trình ở dạng ẩn, điều này thường gây khó khăn và đôi khi không thể thực hiện được. công dụng thực tế. Để hiện thực hóa khả năng mô tả các thành phần mạch bằng phương trình ở dạng ẩn, công trình cung cấp một phiên bản sửa đổi của cơ sở mở rộng của điện áp nút, được lấy làm cơ sở để xây dựng phần mềm dịch vụ web.

Khi xem xét các vấn đề liên quan đến việc xây dựng các dịch vụ web cho các bài toán tính toán đặc tính tần số của mạch điện tử, cần lưu ý rằng các bài toán thuộc loại này có thể được chia thành hai nhóm. Nhóm thứ nhất bao gồm các bài toán tính toán mạch tuyến tính, các tham số của các thành phần có giá trị cố định không phụ thuộc trong quá trình giải bài toán vào giá trị tọa độ các điểm làm việc của các thành phần. Nhóm thứ hai liên quan đến việc tính toán các đặc tính tần số của mạch tuyến tính hóa, các tham số của nó phụ thuộc vào tọa độ điểm làm việc của các thành phần và các tọa độ này, cũng như giá trị của các tham số tuyến tính hóa tương ứng, phải là tính toán trước.

Để giải quyết nhóm bài toán đầu tiên về tính toán đặc tính tần số của mạch điện tử khi thực hiện luận văn, dịch vụ web ModService_Java đã được xây dựng. Để có thể làm việc với các số phức khi xây dựng nó, một lớp tùy chỉnh Complex đã được tạo, vì tại thời điểm thực hiện công việc này, lớp như vậy không phải là một phần của các công cụ tiêu chuẩn API Java. Lớp Complex chứa các hàm tạo và hàm trợ giúp để xử lý dữ liệu phức tạp cũng như tất cả các hàm cần thiết để thực hiện các phép toán số học và logic trên số phức, vì Java không có toán tử ghi đè cho các phép toán này. Dịch vụ web nhận được mô tả về các thành phần mạch và chỉ thị tính toán dưới dạng đối số và trả về một mảng mô tả kết quả tính toán các đặc tính tần số.



Để tính toán chế độ dừng của hệ phi tuyến, luận án đề xuất phương pháp tổng quát xây dựng phần mềm cho các dịch vụ web tương ứng, được triển khai khi tạo dịch vụ web StaticService_Java. Dịch vụ web cũng nhận được các đối số mô tả các thành phần mạch và chỉ dẫn tính toán và trả về một mảng mô tả kết quả tính toán các biến cơ sở và tọa độ trạng thái ổn định cho tất cả các thành phần phi tuyến (điốt, bóng bán dẫn lưỡng cực, bóng bán dẫn đơn cực, bộ khuếch đại thuật toán, phi tuyến). nguồn được kiểm soát). Phần tử 0 của mảng trả về được dành riêng để truyền thông tin đến phía máy khách trong trường hợp quá trình tính toán thiếu sự hội tụ, yêu cầu thay đổi chỉ thị tính toán và gọi lại phương thức dịch vụ web.

Luận án xem xét các phương pháp khả thi để phát triển phương pháp xây dựng các dịch vụ web nhằm tính toán các đặc tính tần số của các mạch tuyến tính hóa, các tham số của nó phụ thuộc vào tọa độ các điểm vận hành của các thành phần. Theo kết quả đánh giá so sánh, một lộ trình đã được chọn để xây dựng dịch vụ web dựa trên hệ thống tích hợp, bao gồm phần mềm tuyến tính hóa các thành phần phi tuyến tại các điểm vận hành được tính toán và tính toán tiếp theo các đặc tính tần số của mạch tuyến tính hóa . Công trình này cung cấp một phương pháp chung để giải quyết vấn đề như vậy, việc triển khai phương pháp này được thực hiện trong dịch vụ web StFrqService_Java. Dịch vụ web nhận dưới dạng đối số mô tả về các thành phần phi tuyến và phụ thuộc tần số của mạch, cũng như các chỉ thị tính toán và do hoạt động của nó, một mảng được trả về mô tả kết quả tính toán các đặc tính tần số. Theo cách tương tự như trong tính toán trạng thái ổn định, phần tử 0 của mảng trả về được sử dụng để truyền thông tin đến phía máy khách trong trường hợp quá trình không hội tụ.

Khi phát triển phương pháp xây dựng dịch vụ web để tính toán các chế độ động của hệ phi tuyến, mô tả toán học của mạch trên cơ sở mở rộng đã sửa đổi của điện thế nút được sử dụng, giúp có thể thu được hệ phương trình thuộc loại vi phân đại số ở dạng tổng quát nhất. Việc loại bỏ đạo hàm khỏi các phương trình thành phần được thực hiện trên cơ sở các công thức hiệu chỉnh tuân theo các phương pháp ẩn nhiều bước có bậc cao hơn, trong khi phương pháp Gear bậc hai được sử dụng làm phương pháp chính với khả năng tăng bậc của nó. Các thành phần trong các phương trình mà đạo hàm bị loại trừ là mạng hai cực loại C và L, điốt, máy biến áp, bóng bán dẫn lưỡng cực và đơn cực, bộ khuếch đại hoạt động, cũng như các nguồn được điều khiển phụ thuộc tần số. Để tính toán giá trị của các nguồn tự trị bảo toàn giá trị của các biến tương ứng ở các bước trước, các hàm lấy mẫu phụ dis_cmp được xây dựng cho tất cả các thành phần cmp được liệt kê có thuộc tính phụ thuộc tần số.

Phương pháp đã phát triển đã được triển khai trong quá trình xây dựng dịch vụ web Dyn2Service_Java, dịch vụ này trả về phía máy khách một mảng mô tả kết quả tính toán các đặc tính động.

Trong chương thứ ba Các vấn đề xây dựng dịch vụ web sử dụng phương pháp nén dữ liệu được xem xét. Sự liên quan của những vấn đề này được xác định bởi thực tế là cấu trúc hệ thống thựcđược đặc trưng bởi sự kết nối yếu giữa các thành phần, dẫn đến mô tả toán học của chúng dưới dạng ma trận kiểu thưa thớt, trong đó chỉ một phần nhỏ các phần tử có thông tin có ý nghĩa.

Tình huống này đặt ra nhiệm vụ thay đổi các cách tiếp cận được chấp nhận rộng rãi trong việc hình thành và giải phương trình nhằm tiết kiệm bộ nhớ và tăng hiệu suất, điều này rất quan trọng đối với hoạt động của các hệ thống dựa trên web.

Luận án đã phân tích tính hiệu quả của các phương pháp có thể chuyển đổi dữ liệu thành mảng nhỏ gọn, trên cơ sở đó đưa ra kết luận về tính thích hợp của việc lựa chọn phương pháp dựa trên việc sử dụng nén Sherman và yêu cầu quy trình hai giai đoạn để thực hiện biểu tượng và xử lý dữ liệu số. Một lợi thế đáng kể của quy trình hai giai đoạn được thông qua là việc chia thành hai phần độc lập của giai đoạn ký hiệu và số. Vì hầu hết tất cả các bài toán thiết kế mạch thực đều liên quan đến tính toán đa biến của một mạch có cấu trúc không thay đổi nên giai đoạn ký hiệu chỉ được thực hiện cho mỗi cấu trúc một lần, trong khi giai đoạn số được thực hiện hàng chục, hàng trăm và đôi khi hàng nghìn lần.

Tuy nhiên, quy trình hai giai đoạn được đặc trưng bởi logic khá phức tạp để xây dựng mã chương trình và khi chuyển sang mô tả dựa trên nén dữ liệu, cần phải có một thay đổi đáng kể đối với mô tả đầy đủ về vấn đề đã tạo trước đó.

Luận án nghiên cứu sơ đồ khối thực hiện xử lý dữ liệu hai giai đoạn khi xây dựng ứng dụng Java, theo đó, ở giai đoạn phân tích ký hiệu sẽ hình thành một ma trận chỉ số kiểu số nguyên, trong đó giai đoạn ký hiệu của hệ số LU được hình thành được thực hiện, trong đó các hàng (cột) được sắp xếp để giảm thiểu số lượng các phần tử xuất hiện lại có giá trị khác 0. Ở bước cuối cùng của giai đoạn ký hiệu, các ma trận tọa độ được xây dựng, chứa thông tin về cấu trúc của ma trận chỉ số, do đó ma trận này có thể bị xóa.

Ở giai đoạn số, theo định dạng mô tả đã biết, các ma trận nhỏ gọn được hình thành và hệ số LU số ảo của chúng được thực hiện dựa trên thuật toán được xây dựng trong tác phẩm. Sau khi hoàn thành giai đoạn số hóa hệ số LU, tất cả các biến hệ thống được tính toán và mã hóa lại theo hoán vị của các hàng (cột) được thực hiện ở giai đoạn xử lý ký hiệu. Nhiệm vụ này, theo kỹ thuật phân tích nhân tử LU tổng quát, thường được giải quyết bằng cách di chuyển lùi và tiến qua các hàng của ma trận gốc, nhưng vì không có ma trận hoàn chỉnh khi sử dụng nén dữ liệu nên cả di chuyển tiến và lùi đều được thực hiện bằng cách sử dụng thuật toán đặc biệt, thực hiện các tác vụ này bằng cách sử dụng tính năng nén dữ liệu.

Luận án cho thấy có thể thực hiện hai cách tiếp cận khác nhau để phát triển phần mềm dịch vụ web dựa trên nén dữ liệu. Đầu tiên liên quan đến việc xử lý phần mềm hiện có, dựa trên mô tả toán học hoàn chỉnh dưới dạng ma trận ban đầu với cấu trúc thưa thớt, để xây dựng phương pháp sửa đổi, sử dụng mảng nhỏ gọn. Việc có một nguyên mẫu giúp đơn giản hóa rất nhiều quá trình tạo ra một phương pháp dựa trên việc nén dữ liệu, nhưng để sử dụng hiệu quả nhất vật liệu sẵn có, bạn cần phải có một phương pháp phát triển theo ý mình phiên bản sửa đổi dịch vụ web. Kỹ thuật này được xây dựng trong luận án và trên cơ sở đó tất cả các dịch vụ web được thảo luận ở trên đã được sửa đổi. Kết quả là một khung dịch vụ web chứa hai phương pháp làm việc chính, một phương pháp dựa trên mô tả đầy đủ của mạch được mô hình hóa và phương pháp thứ hai sử dụng công nghệ xử lý dữ liệu nhỏ gọn.

Cách tiếp cận thứ hai được sử dụng trong trường hợp không có nguyên mẫu để phát triển phương pháp dựa trên nén dữ liệu. Trong trường hợp này, cả giai đoạn ký hiệu và số đều được thực hiện trong trường hợp không có mô tả đầy đủ về mạch mô phỏng dưới dạng ma trận thưa thớt, điều này làm phức tạp đáng kể quá trình lập trình. Trong luận án, cách tiếp cận thứ hai được sử dụng để xây dựng các dịch vụ web tính toán độ nhạy của việc truyền mạch và các biến chế độ tĩnh của mạch đối với sự thay đổi các tham số của các thành phần của chúng.

Để tính toán độ nhạy của các đặc tính tần số của các chức năng mạch, dịch vụ web VaryService đã được xây dựng, trong đó có một phương pháp dựa trên sự vi phân của các phương trình và một phương pháp dựa trên các mạch được kết nối.

Dựa trên sự vi phân của các phương trình, phương pháp của dịch vụ web VaryService cho phép bạn tính toán các giá trị độ nhạy vectơ tuyệt đối và tương đối của các hàm mạch cho miền tần số đối với tham số biến đã chọn cho toàn bộ tập hợp các biến cơ bản. Các tham số biến có thể là giá trị điện trở, điện dung hoặc độ tự cảm của mạch hai cực tùy ý loại R, C hoặc L và tham số truyền của các nguồn phụ thuộc tần số được điều khiển như ITUN, INUN, ITUT hoặc INUT.

Phương pháp dịch vụ web VaryService, sử dụng các mạch đính kèm, cho phép bạn tính toán các giá trị của cả độ nhạy vô hướng tuyệt đối và tương đối của các hàm mạch cho miền tần số đối với tất cả các tham số biến có thể có cho giá trị đã chọn của biến được phân tích. Sơ đồ khối phần mềm đề xuất trong luận văn này cho phép sử dụng kết quả hình thành các mảng nhỏ gọn của mạch chính để tính toán mạch kèm theo. Các tham số biến đổi trong phương pháp dựa trên mạch phụ có thể là các tham số tương tự như đối với phương pháp dựa trên vi phân của phương trình.

Để tính toán độ nhạy của các biến xác định chế độ tĩnh của mạch phi tuyến đối với các biến thể trong tham số của chúng, dịch vụ web StVaryService đã được phát triển, dịch vụ này cũng chứa hai phương pháp, một trong số đó dựa trên vi phân của phương trình và phương pháp thứ hai dựa trên phương pháp đính kèm. mạch. Các tham số thay đổi trong cả hai phương pháp có thể là giá trị điện trở và tham số truyền của các nguồn được điều khiển như ITUN, INUN, ITUT hoặc INUT.

Thuật toán tính độ nhạy tuyệt đối của các biến cơ bản của chế độ đứng yên bằng phương pháp vi phân phương trình cung cấp khả năng phân biệt phương trình phi tuyến của mạch bằng các biến cơ bản và tham số biến, giúp thu được phương trình độ nhạy , giải pháp xác định độ nhạy vectơ mong muốn của các biến của chế độ đứng yên.

Việc thực hiện phương pháp trong thực tế dựa trên việc vi phân các phương trình của các thành phần khác nhau sử dụng kết quả tính toán các biến cơ bản của chế độ dừng của mạch phi tuyến.

Thuật toán của phương pháp tính toán độ nhạy vô hướng của các biến chế độ tĩnh bằng cách sử dụng mạch liền kề cung cấp cho việc tính toán các biến cơ bản của chế độ tĩnh của mạch chính và tính toán các biến cơ bản của mạch kết nối tuyến tính hóa, được thực hiện trên cơ sở các mảng nhỏ gọn được tạo ra trước đó cho mạch chính. Kết quả của phương pháp thứ hai là một mảng các giá trị độ nhạy tuyệt đối và tương đối của biến mạch đã chọn cho tất cả các tham số thành phần biến.

Chương thứ tư thảo luận về các phương pháp xây dựng các ứng dụng khách tùy chỉnh cung cấp sự tương tác với các dịch vụ web, sau khi được xây dựng bằng công cụ phát triển ứng dụng Java, chúng phải được triển khai trên máy chủ CAD phân tán. Để triển khai một dịch vụ web, bạn cần biết các đặc điểm chính của nó, bao gồm tên dịch vụ, tên lớp, tên phương thức và loại tài liệu WSDL.

Thông tin liên quan về các dịch vụ web được phát triển và mô tả ở trên cho hệ thống thiết kế mạch phân tán được đưa ra trong luận án và trong các phương thức thông tin có tên getInf, được bao gồm trong tất cả các dịch vụ web đã phát triển. Bài báo đề xuất một kỹ thuật đơn giản để triển khai trực tiếp các dịch vụ web trên máy chủ và thảo luận về những cách có thể nhập tệp WSDL vào phía máy khách. Dựa trên phân tích so sánh, công trình cho thấy tính chính xác của hoạt động phân phối tệp WSDL từ dịch vụ web từ xa đến ứng dụng khách có thể được đảm bảo hiệu quả nhất bằng cách sử dụng công cụ Web Services Explorer và trình tự tối ưu nhất để nhập tệp Tệp WSDL vào khuôn khổ ban đầu của ứng dụng khách được thiết lập.

Khi tệp WSDL đã được gửi đến dự án ứng dụng khách, việc chuyển đổi tiếp theo khung dự án ban đầu thành một ứng dụng khách hoàn chỉnh được đề xuất thực hiện theo hai giai đoạn. Giai đoạn đầu tiên của quá trình chuyển đổi này là tạo đối tượng proxy trong khung dự án ban đầu và giai đoạn thứ hai là hình thành các lớp chứa các phương thức hỗ trợ chức năng của đối tượng proxy và sự tương tác của dịch vụ từ xa với ứng dụng khách. Việc triển khai giai đoạn đầu tiên bao gồm việc bổ sung cho dự án các nhà khai thác tạo đối tượng proxy; giai đoạn thứ hai được thực hiện bằng cách sử dụng công cụ Dịch vụ Web của nền tảng WTP. cách hiệu quả công dụng được nêu trong luận văn.

Việc hoàn thiện khung dự án ban đầu thành một ứng dụng khách hoàn chỉnh có thể được thực hiện theo nhiều cách khác nhaucác loại khác nhauứng dụng này. Cách đơn giản nhất để chạy các ứng dụng khách là thiết kế chúng dựa trên các ứng dụng console không có giao diện đồ họa. Công trình đề xuất một cách khái quát sơ đồ cấu trúc triển khai ứng dụng bảng điều khiển CAD phân tán để tính toán các mạch điện tử, ứng dụng này có thể được sử dụng cho bất kỳ dịch vụ web nào mặc dù có nhiều giải pháp cụ thể khả thi.

Trong quá trình thực hiện luận án, các ứng dụng bảng điều khiển máy khách đã được triển khai cho tất cả các dịch vụ web CAD phân tán ở trên. Các tệp nguồn của chúng có thể được phân phối bằng các phương tiện tiêu chuẩn qua Internet tới máy khách và được sử dụng cả hai để xây dựng phiên bản đơn giản nhất của ứng dụng bảng điều khiển để tương tác với các dịch vụ CAD phân tán và như hướng dẫn phương phápđể phát triển các ứng dụng cửa sổ tốt hơn.

Các ứng dụng máy khách có cửa sổ cung cấp những cơ hội lớn nhất để hoạt động trong CAD phân tán, vì chúng giúp tận dụng tối đa các yếu tố đồ họa. Đối với dịch vụ web này, bạn có thể xây dựng các phiên bản khác nhau của ứng dụng khách với nhiều cách khác nhau để tổ chức đối thoại với người dùng và hiển thị kết quả tính toán. Công việc đã thiết lập một bộ công cụ hộp thoại tối thiểu để đảm bảo sự tương tác đầy đủ với dịch vụ. Một bộ như vậy chứa một menu cửa sổ và một bộ những hộp thoạiđể nhập dữ liệu và hiển thị kết quả tính toán cũng như quản lý các chỉ dẫn tính toán.

Luận án đề xuất phương pháp xây dựng ứng dụng web client, trên cơ sở phát triển các mẫu trang JSP thực hiện chức năng chọn và di chuyển đến các trang khác, nhập một tập biến nhất định và di chuyển đến trang chủ, nhập theo chu kỳ một tập hợp các biến nhất định để chuyển sang trang tiếp theo theo giá trị của các biến này, gọi dịch vụ web được yêu cầu và xuất ra kết quả công việc của nó. Việc sử dụng các ứng dụng web của máy khách cho phép bạn đặt toàn bộ mã chương trình của hệ thống phân tán trên mạng và tùy thuộc vào phương pháp đặt máy khách và ứng dụng máy chủ, dịch vụ có thể được gọi từ một hoặc một số trang web.

Một tính năng tích cực của kiến ​​trúc này là khả năng tổ chức quyền truy cập vào CAD phân tán thông qua trình duyệt web tùy ý mà không cần xây dựng ứng dụng khách của riêng bạn; nhược điểm của phương pháp tổ chức CAD phân tán này là sự gia tăng không thể tránh khỏi trong khoảng thời gian cần thiết để mô tả; các thành phần của hệ thống trong quá trình tương tác tương tác.

Luận án xây dựng phương pháp tổ chức quá trình triển khai ứng dụng khách, mục đích là đảm bảo khả năng khởi chạy ứng dụng khách bằng các công cụ trên toàn hệ thống mà không cần sử dụng công cụ phát triển ứng dụng, trong khi cho cả ứng dụng khách kiểu console và cho các ứng dụng khách kiểu cửa sổ, việc khởi chạy phải được thực hiện thông qua dòng lệnh và đối với các ứng dụng web - từ trình duyệt. Thông tin về vị trí của dịch vụ web được truyền qua một đối tượng lớp proxy, trước tiên đối tượng này phải được định cấu hình theo URL thích hợp.

Công việc lưu ý rằng khi triển khai một ứng dụng bảng điều khiển, trang mã dự án trước tiên phải được thay đổi, do đó cần phải chuyển từ trang mã trong đó văn bản Cyrillic được hiển thị trong tất cả các hệ thống công cụ tích hợp làm việc với mã Java sang trang mã trong đó văn bản Cyrillic sẽ được hiển thị bình thường trong cửa sổ dòng lệnh.

Luận án cho thấy khi sử dụng các ứng dụng web máy khách, tùy thuộc vào cấu trúc giao tiếp được lựa chọn giữa máy khách và máy chủ, thông tin về vị trí của dịch vụ web có thể được truyền tải cả thông qua đối tượng lớp proxy và thông qua URL được nhập từ trình duyệt. Các phương pháp tương tác tương ứng của khách hàng với dịch vụ khi thực hiện các nhiệm vụ chức năng của họ đối với cấu trúc giao tiếp đã chọn cũng được thảo luận trong công việc.

Tiêu chuẩn hóa SOAP cung cấp khả năng kết nối các ứng dụng được ghép nối lỏng lẻo bất kể nền tảng triển khai của chúng, cho phép hoạt động hiệu quả và sử dụng tối ưu một loạt các tài nguyên không đồng nhất, liên kết lỏng lẻo trong các ứng dụng phân tán. Luận án cung cấp một phương pháp chung để xây dựng phần mềm tương tác giữa đối tượng lớp proxy của ứng dụng trong môi trường .NET với dịch vụ trong môi trường Java/J2EE. Dựa trên phương pháp này, việc tổ chức tương tác giữa các dịch vụ web Java đã phát triển và các ứng dụng khách Windows được xây dựng trong môi trường .NET dựa trên ngôn ngữ C# đã được triển khai.

Khả năng vận hành CAD phân tán trong môi trường không đồng nhất mở rộng đáng kể phạm vi ứng dụng của nó.

Bị giam giữ những kết quả khoa học và thực tiễn chủ yếu thu được trên cơ sở nghiên cứu của luận án được xây dựng.

Kêt quả chung cuộc công việc

1. Kiến trúc dành cho CAD định hướng dịch vụ phân tán dựa trên các dịch vụ web đã được phát triển, đặc trưng bởi cấu trúc phi tập trung, tính độc lập của nền tảng và khả năng thực hiện hiện đại hóa liên tục các hệ thống con riêng lẻ để điều chỉnh các đặc tính của chúng với các điều kiện thiết kế thay đổi.

2. Một phương pháp chung đã được triển khai để xây dựng các dịch vụ web Java và các tài liệu WSDL tương ứng bằng phương pháp từ dưới lên, cũng như phân phối chúng đến máy chủ CAD phân tán sau khi thử nghiệm ngoại tuyến trong môi trường phát triển.

3. Một phương pháp đã được phát triển để xây dựng phần mềm dịch vụ web Java nhằm giải quyết các vấn đề mô hình hóa điển hình hệ thống liên tục trong thiết kế tự động các mạch điện tử.

4. Một thư viện các chức năng phụ trợ đã được xây dựng để triển khai phần mềm dịch vụ web Java dựa trên nén dữ liệu.

5. Một phương pháp chung để xây dựng các mẫu cho ứng dụng console và window client cho hệ thống tự động hóa thiết kế mạch phân tán đã được phát triển và việc tổ chức hoạt động của hệ thống CAD phân tán với các ứng dụng web của máy khách đã được triển khai.

6. Một phương pháp đã được phát triển để xây dựng các hệ thống CAD phân tán nhằm đảm bảo sự tương tác giữa các dịch vụ web Java và ứng dụng khách thuộc bất kỳ loại nào trong môi trường không đồng nhất.

1. Anisimov D.A. Xây dựng hệ thống thiết kế có sự hỗ trợ của máy tính dựa trên các dịch vụ Web [Văn bản] / Anisimov D.A. Gridin V.N., Dmitrevich G.D. // Tự động hóa trong công nghiệp – 2011. – Số 1 – trang 9-12.

2. Anisimov D.A. Xây dựng hệ thống thiết kế có sự trợ giúp của máy tính dựa trên công nghệ Web [Văn bản] / Gridin V.N., Dmitrevich G.D., Anisimov D.A. // Công nghệ thông tin - 2011. - Số 5. – trang 23-27.

3. Anisimov D.A. Xây dựng dịch vụ web cho hệ thống tự động hóa thiết kế mạch [Văn bản] / Gridin V.N., Dmitrevich G.D., Anisimov D.A // Công nghệ thông tin và hệ thống máy tính - 2012. - Số 4. – P. 79-84.

4. Anisimov D.A. Phương pháp xây dựng hệ thống tự động hóa thiết kế mạch dựa trên dịch vụ web [Text] / Anisimov D.A // Tin tức của Đại học Kỹ thuật Điện St. Petersburg "LETI" - 2012. - Số 10. – St. Petersburg: Nhà xuất bản Đại học Kỹ thuật Điện St. Petersburg “LETI”, – trang 56-61.

5. Anisimov D.A. Truy cập vào tài nguyên Web trong hệ thống điều khiển và điều hướng CAD [Văn bản] / Laristov D.A., Anisimov D.A. // Con quay hồi chuyển và điều hướng. 2007. Số 2. –P. 106.

Kiến trúc hệ thống thông tin phân tán và ứng dụng Web

Hệ thống phân phối là một tập hợp độc lập máy tính, xuất hiện với người dùng dưới dạng một hệ thống thống nhất duy nhất. Mặc dù thực tế là tất cả các máy tính đều có khả năng tự động hóa nhưng đối với người dùng, chúng dường như là một hệ thống duy nhất.

Các đặc điểm chính của hệ thống phân tán:

1. Sự khác biệt giữa các máy tính và phương thức liên lạc giữa chúng bị ẩn khỏi người dùng. Điều tương tự cũng áp dụng cho việc tổ chức bên ngoài của các hệ thống phân tán.

2. Người dùng và ứng dụng trải nghiệm trải nghiệm nhất quán trên các hệ thống phân tán, bất kể họ tương tác ở đâu và khi nào.

Các hệ thống phân tán cũng phải tương đối dễ mở rộng hoặc mở rộng quy mô. Đặc điểm này là hệ quả trực tiếp của việc có các máy tính độc lập, nhưng đồng thời không cho biết các máy tính này thực sự được kết hợp thành một hệ thống như thế nào.

Để duy trì cái nhìn thống nhất về hệ thống, các hệ thống phân tán thường bao gồm một lớp phần mềm bổ sung nằm giữa cấp cao nhất, nơi người dùng và ứng dụng cư trú và cấp độ thấp hơn, bao gồm các hệ điều hành (Hình 1.11).

Theo đó, một hệ thống phân tán như vậy thường được gọi là hệ thống cấp trung gian (middleware). Lưu ý rằng lớp trung gian được phân bổ giữa nhiều máy tính.

Các đặc điểm hoạt động của hệ thống phân tán bao gồm:

· Khả dụng số lượng lớn các đối tượng;

· Độ trễ thực hiện yêu cầu (ví dụ: nếu các cuộc gọi cục bộ yêu cầu khoảng vài trăm nano giây thì các yêu cầu tới một đối tượng trong hệ thống phân tán yêu cầu từ 0,1 đến 10 ms);

· một số đồ vật có thể không được sử dụng trong thời gian dài;

· Các thành phần phân tán được thực thi song song, dẫn đến cần phải phối hợp thực thi;

· Các yêu cầu trong hệ thống phân tán có khả năng thất bại cao;

· tăng yêu cầu an toàn.

Do độ trễ tăng lên, các giao diện trong hệ thống phân tán phải được thiết kế để giảm thời gian thực hiện truy vấn. Điều này có thể đạt được bằng cách giảm tần suất truy cập cũng như mở rộng các chức năng được thực hiện.

Để khắc phục lỗi, khách hàng được yêu cầu kiểm tra xem các yêu cầu có được máy chủ thực thi hay không. Bảo mật trong các ứng dụng phân tán có thể được tăng lên bằng cách giám sát các phiên giao tiếp (xác thực, ủy quyền, mã hóa dữ liệu).

Kiến trúc của các ứng dụng Web (Dịch vụ web) được sử dụng rộng rãi hiện nay. Dịch vụ web là một ứng dụng có thể truy cập qua Internet. Nó cung cấp các dịch vụ có hình thức không phụ thuộc vào nhà cung cấp dịch vụ vì nó sử dụng nền tảng điều hành phổ quát và định dạng phổ quát dữ liệu (XML). Các dịch vụ web dựa trên các tiêu chuẩn xác định định dạng và ngôn ngữ của các yêu cầu cũng như các giao thức tìm kiếm các dịch vụ này trên Internet. Sơ đồ truy cập cơ sở dữ liệu qua Internet được hiển thị trong Hình 1.12.


Hình 1.12 – Sơ đồ truy cập vào máy chủ DBMS qua Internet

Hiện tại có ba công nghệ khác nhau, hỗ trợ khái niệm hệ thống đối tượng phân tán: EJB, DCOM CORBA.

Ý tưởng chính đằng sau sự phát triển của công nghệ EJB ( Đậu Java doanh nghiệp) - tạo cơ sở hạ tầng cho các thành phần để có thể dễ dàng chèn và xóa chúng khỏi máy chủ, từ đó tăng hoặc giảm chức năng của máy chủ. Các thành phần EJB là các lớp Java và có thể chạy trên bất kỳ máy chủ tương thích EJB nào, thậm chí không cần biên dịch lại. Mục tiêu chính của công nghệ EJB là:

1. Giúp nhà phát triển tạo ứng dụng dễ dàng hơn bằng cách giảm bớt nhu cầu triển khai các dịch vụ như giao dịch, luồng, tải, v.v. ngay từ đầu. Nhà phát triển có thể tập trung chú ý vào việc mô tả logic của ứng dụng, chuyển đổi nhiệm vụ lưu trữ. , truyền tải và bảo mật dữ liệu tới hệ thống EJB .

2. Mô tả các cấu trúc chính của hệ thống EJB và các giao diện tương tác giữa các thành phần của nó.

3. Giải phóng nhà phát triển khỏi việc triển khai các đối tượng EJB do có một trình tạo mã đặc biệt.

Nhờ mô hình Java được sử dụng, EJB là một cách tương đối đơn giản và nhanh chóng để tạo ra các hệ thống phân tán.

Công nghệ DCOM ( Mô hình đối tượng thành phần phân tán) là kiến ​​trúc phần mềm được phát triển bởi Microsoft để phân phối ứng dụng trên nhiều máy tính trên mạng. Thành phần phần mềm một máy tính có thể sử dụng DCOM để chuyển tin nhắn đến một thành phần trên máy tính khác. DCOM tự động thiết lập kết nối, truyền tin nhắn và trả về phản hồi từ thành phần từ xa. Khả năng kết nối các thành phần của DCOM cho phép Microsoft cung cấp cho Windows một số khả năng bổ sung, đặc biệt là việc triển khai Máy chủ giao dịch Microsoft, chịu trách nhiệm thực hiện các giao dịch cơ sở dữ liệu qua Internet.

Hãy gọi dịch vụ một tài nguyên thực hiện chức năng kinh doanh và có các thuộc tính sau:

    có thể tái sử dụng;

    được xác định bởi một hoặc nhiều giao diện độc lập với công nghệ rõ ràng;

    được kết nối lỏng lẻo với các tài nguyên tương tự khác và có thể được gọi thông qua các giao thức truyền thông cho phép các tài nguyên tương tác với nhau.

Dịch vụ web được gọi là hệ thống phần mềm được xác định bởi chuỗi URI, có giao diện và ràng buộc được xác định và mô tả bởi XML. Mô tả của hệ thống phần mềm này có thể được tìm thấy bởi các hệ thống phần mềm khác có thể tương tác với nó theo mô tả này thông qua các thông báo dựa trên XML được truyền bằng giao thức Internet.

1.1 Khái niệm cơ bản về dịch vụ web

Dịch vụ web là một kiến ​​trúc mới đầy hứa hẹn cung cấp một cấp độ phân phối mới. Thay vì phát triển hoặc mua các thành phần và nhúng chúng vào IS, người ta đề xuất mua thời gian vận hành của chúng và hình thành một hệ thống phần mềm thực hiện các lệnh gọi phương thức từ các thành phần được sở hữu và hỗ trợ bởi các nhà cung cấp độc lập. Nhờ vào Dịch vụ web các chức năng của bất kỳ chương trình nào trên mạng đều có thể được cung cấp qua Internet. Ví dụ đơn giản nhất Dịch vụ web- hệ thống Hộ chiếu TRÊN Hotmail, cho phép bạn tạo xác thực người dùng trên trang web của riêng bạn.

Các dịch vụ web dựa trên các công nghệ phổ quát sau:

    TCP/IPgiao thức phổ quát, được hiểu bởi tất cả các thiết bị mạng, từ máy tính lớn đến điện thoại di động và PDA;

    HTMLngôn ngữ phổ quátđánh dấu được sử dụng để hiển thị thông tin trên thiết bị của người dùng;

    XML(Ngôn ngữ đánh dấu mở rộng) – một ngôn ngữ phổ quát để làm việc với bất kỳ loại dữ liệu nào.

Tính linh hoạt của các công nghệ này là cơ sở để hiểu các dịch vụ web. Chúng chỉ dựa trên các công nghệ được chấp nhận rộng rãi, mở và chính thức trung lập với nhà cung cấp. Chỉ thông qua điều này, lợi thế chính của dịch vụ web mới có thể đạt được như một khái niệm để xây dựng IS phân tán - tính phổ quát của chúng, tức là khả năng được sử dụng cho mọi hệ điều hành, ngôn ngữ lập trình, máy chủ ứng dụng, v.v.

Như vậy, các dịch vụ web giải quyết được vấn đề ban đầu - vấn đề tích hợp các ứng dụng có tính chất khác nhau và xây dựng IS phân tán. Đây là điểm khác biệt cơ bản chính giữa các dịch vụ web và các dịch vụ trước đó.

Dịch vụ web - Cái này ứng dụng XML, liên kết dữ liệu với các chương trình, đối tượng, cơ sở dữ liệu hoặc toàn bộ giao dịch kinh doanh. Các tài liệu XML được định dạng dưới dạng thông báo được trao đổi giữa dịch vụ web và chương trình. Các tiêu chuẩn dịch vụ web xác định định dạng của các tin nhắn đó, giao diện mà tin nhắn được gửi đến, các quy tắc ràng buộc nội dung tin nhắn với ứng dụng triển khai dịch vụ và ngược lại, cũng như các cơ chế xuất bản và tìm kiếm giao diện.

XML(Tiếng AnheX có thể kéo căng M hòm thư L ngôn ngữ- có thể mở rộng ngôn ngữ đánh dấu; phát âm là [ x-em-el]). Khuyến khích Hiệp hội World Wide Web(W3C). Đặc tả XML mô tả các tài liệu XML và mô tả một phần hành vi của bộ xử lý XML (các chương trình đọc tài liệu XML và cung cấp quyền truy cập vào nội dung của chúng). XML được thiết kế như một ngôn ngữ có hình thức đơn giản cú pháp, thuận tiện cho việc sự sáng tạo và các chương trình xử lý tài liệu, đồng thời thuận tiện cho con người đọc và tạo tài liệu, nhấn mạnh việc tập trung sử dụng trên Internet. Ngôn ngữ này được gọi là có thể mở rộng vì nó không sửa lỗi đánh dấu được sử dụng trong tài liệu: nhà phát triển có thể tự do tạo đánh dấu theo nhu cầu của một miền cụ thể, chỉ bị giới hạn bởi các quy tắc cú pháp của ngôn ngữ. Sự kết hợp của cú pháp hình thức đơn giản, thân thiện với con người, khả năng mở rộng và dựa trên mã hóa bảng mã Unicode trình bày nội dung của tài liệu dẫn đến sử dụng rộng rãi cả bản thân XML và nhiều ngôn ngữ chuyên biệt phái sinh dựa trên XML trong nhiều loại phần mềm.

Ứng dụng XML tiêu chuẩn

XML có thể được sử dụng cho nhiều mục đích hơn là chỉ mô tả một tài liệu. Một cá nhân, công ty hoặc ủy ban tiêu chuẩn có thể xác định tập hợp các phần tử XML và cấu trúc tài liệu cần thiết để sử dụng cho một loại tài liệu cụ thể. Một tập hợp các phần tử và mô tả cấu trúc tài liệu tương tự được gọi là ứng dụng XML hoặc Từ điển XML. Ví dụ: một tổ chức có thể xác định một ứng dụng XML để tạo tài liệu mô tả cấu trúc phân tử, bản trình bày đa phương tiện hoặc chứa đồ họa vector.

Dịch vụ web có thể được sử dụng trong nhiều ứng dụng. Bất kể dịch vụ web chạy từ máy tính để bàn hay máy tính xách tay của khách hàng, chúng đều có thể được sử dụng để truy cập các ứng dụng Internet như đặt hàng trước hoặc theo dõi đơn hàng.

Dịch vụ web phù hợp với Tích hợp B2B (doanh nghiệp với doanh nghiệp),đóng các ứng dụng được thực hiện bởi các tổ chức khác nhau vào một quy trình sản xuất. Dịch vụ web cũng có thể giải quyết vấn đề rộng hơn về tích hợp ứng dụng doanh nghiệp (Tích hợp ứng dụng doanh nghiệp, EAI), liên kết nhiều ứng dụng từ doanh nghiệp này với nhiều ứng dụng khác. Trong tất cả các trường hợp này, công nghệ dịch vụ web là “chất keo” kết nối các phần mềm khác nhau.

Như có thể thấy từ hình. 1, Dịch vụ web là một trình bao bọc cung cấp cách tương tác tiêu chuẩn với các môi trường phần mềm ứng dụng như hệ thống quản lý cơ sở dữ liệu (DBMS), .NET, J2EE (Nền tảng Java2, Phiên bản doanh nghiệp), CORBA (Kiến trúc môi giới yêu cầu đối tượng chung),đại lý gói hoạch định nguồn lực doanh nghiệp ( Lập kế hoạch nguồn lực doanh nghiệp (ERP), môi giới tích hợp, v.v.

Hình.1. Dịch vụ web tương tác với các hệ thống ứng dụng

Giao diện dịch vụ web được lấy từ môi trường mạng thông báo XML tiêu chuẩn, biến đổi dữ liệu XML thành một định dạng mà một ứng dụng cụ thể có thể hiểu được hệ thống phần mềm và gửi tin nhắn phản hồi (tin nhắn phản hồi là tùy chọn). Triển khai phần mềm các dịch vụ web (phần mềm cơ sở, Mức độ thấp hơn) có thể được tạo bằng bất kỳ ngôn ngữ lập trình nào sử dụng bất kỳ hệ điều hành và bất kỳ phần mềm trung gian nào ( phần mềm trung gian).

Một ví dụ đơn giản: tìm kiếm thông tin

Hiện nay, hầu hết các dịch vụ đều được gọi qua Internet bằng cách nhập dữ liệu vào biểu mẫu HTML và gửi dữ liệu này đến dịch vụ bằng cách thêm nó vào chuỗi Bộ định vị tài nguyên thống nhất ( Bộ định vị tài nguyên thống nhất, URL):

http://www.google.com/search?q=Skate+boots&btnG=Google+Search

Ví dụ này minh họa tính đơn giản của tương tác trên web (chẳng hạn như tìm kiếm, mua cổ phiếu hoặc yêu cầu chỉ đường lái xe) trong đó các thông số và từ khóa được nhúng trực tiếp vào URL. TRONG trong trường hợp này một yêu cầu tìm kiếm đơn giản về giày trượt ván (giày có giày trượt) được hiển thị trong chuỗi truy vấn tới công cụ tìm kiếm Google. Từ khóa tìm kiếm đại diện cho dịch vụ sẽ được truy cập và tham số Skate+boots là chuỗi tìm kiếm được nhập vào biểu mẫu HTML trên trang web Google. Tìm kiếm của Google sẽ chuyển yêu cầu này tới các công cụ tìm kiếm khác nhau, các công cụ này sẽ trả về danh sách URL cho các trang khớp với tham số tìm kiếm Skate+boots. Phương pháp tìm kiếm trên Internet không hiệu quả này hoàn toàn dựa trên việc khớp chuỗi văn bản đã chỉ định với các chuỗi được lập chỉ mục. Các trang HTML.

XML - Cách tốt nhất gửi dữ liệu. XML cung cấp những lợi thế đáng kể khi truyền dữ liệu qua Internet. Bây giờ truy vấn trước đó có thể được biểu diễn dưới dạng tài liệu XML:

xmlns:s="www.xmlbus.com/SearchService">

Giày trượt băng

bốt

kích thước 7,5

Gửi yêu cầu theo mẫu tài liệu XML có những ưu điểm sau: khả năng xác định kiểu và cấu trúc dữ liệu, tính linh hoạt và khả năng mở rộng cao hơn. XML có thể biểu thị dữ liệu có cấu trúc hoặc dữ liệu thuộc một loại cụ thể (ví dụ: có thể chấp nhận chỉ định giá trị của trường kích thước dưới dạng chuỗi số hoặc dưới dạng số dấu phẩy động) và chứa nhiều thông tin hơn mức URL cho phép.

Ví dụ này được trình bày dưới dạng thông báo SOAP (Giao thức truy cập đối tượng đơn giản), một dạng trao đổi thông báo XML tiêu chuẩn là một trong những công nghệ làm nền tảng cho các dịch vụ web. Trong thông báo SOAP, tên của dịch vụ được yêu cầu và các tham số đầu vào được biểu diễn dưới dạng các phần tử XML riêng biệt. Ví dụ này cũng minh họa việc sử dụng các không gian tên XML (xmlns:), một thành phần quan trọng khác của dịch vụ web. Do tài liệu XML hỗ trợ nhiều loại dữ liệu, cấu trúc phức tạp và tổng hợp lược đồ nên các công nghệ dịch vụ web hiện đại mang lại những lợi thế đáng kể so với các khả năng hiện có để truy cập các ứng dụng phần mềm thông qua HTML và URL.

Phần mềm nguồn mở đã trở thành nền tảng cốt lõi trong việc tạo ra một số trang web lớn nhất thế giới. Với sự phát triển của các trang web này, các hướng dẫn và phương pháp thực hành tốt nhất cho kiến ​​trúc của chúng đã xuất hiện. Chương này nhằm mục đích đề cập đến một số vấn đề chính cần xem xét khi thiết kế các trang web lớn, cũng như một số thành phần cơ bản được sử dụng để đạt được các mục tiêu này.

Trọng tâm của chương này là phân tích các hệ thống dựa trên web, mặc dù một số tài liệu có thể được ngoại suy sang các hệ thống phân tán khác.

1.1 Nguyên tắc xây dựng hệ thống web phân tán

Chính xác thì việc tạo và quản lý một trang web hoặc ứng dụng có thể mở rộng có ý nghĩa gì? Ở mức độ nguyên thủy, điều này chỉ đơn giản là kết nối người dùng với tài nguyên từ xa thông qua mạng Internet. Và các tài nguyên hoặc quyền truy cập vào các tài nguyên này, được phân phối trên nhiều máy chủ và là liên kết đảm bảo khả năng mở rộng của trang web.

Giống như hầu hết mọi thứ trong cuộc sống, thời gian dành trước để lập kế hoạch xây dựng dịch vụ web có thể hữu ích sau này; Hiểu một số cân nhắc và đánh đổi đằng sau các trang web lớn có thể mang lại quyết định thông minh hơn khi xây dựng các trang web nhỏ hơn. Dưới đây là một số nguyên tắc chính ảnh hưởng đến việc thiết kế hệ thống web quy mô lớn:

  • Khả dụng: Thời gian hoạt động của trang web rất quan trọng đối với danh tiếng và chức năng của nhiều công ty. Đối với một số nhà bán lẻ trực tuyến lớn hơn, việc không có mặt dù chỉ trong vài phút có thể khiến doanh thu bị mất hàng nghìn hoặc hàng triệu đô la. Do đó, việc phát triển hệ thống của họ để luôn sẵn sàng và có khả năng phục hồi trước thất bại vừa là yêu cầu cơ bản về kinh doanh vừa là yêu cầu công nghệ. Tính sẵn sàng cao trong các hệ thống phân tán đòi hỏi phải xem xét cẩn thận tính dư thừa của các thành phần chính, khôi phục nhanh sau khi hệ thống bị lỗi một phần và khả năng bị giảm dần khi có vấn đề phát sinh.
  • Hiệu suất: Hiệu suất trang web đã trở thành một thước đo quan trọng đối với hầu hết các trang web. Tốc độ trang web tác động đến trải nghiệm và sự hài lòng của người dùng, cũng như thứ hạng của công cụ tìm kiếm—một yếu tố ảnh hưởng trực tiếp đến tỷ lệ giữ chân người xem và doanh thu. Do đó, điều quan trọng là tạo ra một hệ thống được tối ưu hóa để phản hồi nhanh và độ trễ thấp.
  • Độ tin cậy: hệ thống phải đáng tin cậy sao cho một yêu cầu dữ liệu nhất định sẽ trả về dữ liệu đã chỉ định một cách nhất quán. Trong trường hợp thay đổi hoặc cập nhật dữ liệu, yêu cầu tương tự sẽ trả về dữ liệu mới. Người dùng cần biết rằng nếu nội dung nào đó được ghi lại hoặc lưu trữ trong hệ thống, họ có thể tin tưởng rằng nội dung đó sẽ được giữ nguyên để truy xuất sau này.
  • Khả năng mở rộng: Khi nói đến bất kỳ hệ thống phân tán lớn nào, kích thước chỉ là một mục trong danh sách cần được xem xét. Điều quan trọng không kém là những nỗ lực tăng thông lượng để xử lý khối lượng công việc lớn, thường được gọi là khả năng mở rộng hệ thống. Khả năng mở rộng có thể đề cập đến các thông số khác nhau của hệ thống: lượng lưu lượng truy cập bổ sung mà hệ thống có thể xử lý, mức độ dễ dàng bổ sung dung lượng lưu trữ hoặc số lượng giao dịch khác có thể được xử lý.
  • Khả năng kiểm soát: Thiết kế một hệ thống dễ vận hành là một yếu tố quan trọng khác. Khả năng quản lý hệ thống tương đương với khả năng mở rộng các hoạt động “bảo trì” và “cập nhật”. Để đảm bảo khả năng quản lý, cần xem xét tính dễ chẩn đoán và hiểu các vấn đề mới nổi, tính dễ cập nhật hoặc sửa đổi và tính dễ sử dụng của hệ thống. (Nghĩa là, nó có hoạt động như mong đợi mà không có lỗi hoặc ngoại lệ không?)
  • Giá: Chi phí là một yếu tố quan trọng. Điều này rõ ràng có thể bao gồm chi phí phần cứng và phần mềm, nhưng điều quan trọng là phải xem xét các khía cạnh khác cần thiết để triển khai và bảo trì hệ thống. Lượng thời gian cần thiết của nhà phát triển để xây dựng hệ thống, lượng nỗ lực vận hành cần thiết để thiết lập và chạy hệ thống và thậm chí cả mức độ đào tạo phù hợp đều phải được cung cấp. Chi phí thể hiện tổng chi phí sở hữu.

Mỗi nguyên tắc này cung cấp cơ sở cho việc ra quyết định trong việc thiết kế kiến ​​trúc web phân tán. Tuy nhiên, họ cũng có thể xung đột với nhau vì việc đạt được mục tiêu của một người sẽ phải trả giá bằng việc bỏ bê người kia. Một ví dụ đơn giản: việc chọn chỉ thêm nhiều máy chủ làm giải pháp hiệu suất (khả năng mở rộng) có thể làm tăng chi phí quản lý (bạn phải chạy thêm một máy chủ) và chi phí mua máy chủ.

Khi phát triển bất kỳ loại ứng dụng web nào, điều quan trọng là phải xem xét các nguyên tắc chính này, ngay cả khi cần xác nhận rằng dự án có thể hy sinh một hoặc nhiều nguyên tắc trong số đó.

1.2 Cơ bản

Khi xem xét kiến ​​trúc hệ thống, có một số vấn đề cần được giải quyết, chẳng hạn như thành phần nào đáng sử dụng, chúng khớp với nhau như thế nào và có thể thực hiện những đánh đổi nào. Đầu tư tiền vào việc mở rộng quy mô mà không có nhu cầu rõ ràng không phải là một quyết định kinh doanh thông minh. Tuy nhiên, việc suy tính trước trong việc lập kế hoạch có thể tiết kiệm đáng kể thời gian và nguồn lực trong tương lai.

Phần này tập trung vào một số yếu tố cơ bản quan trọng đối với hầu hết các ứng dụng web lớn: Dịch vụ,
, sự phân chia, Và xử lý sự cố. Mỗi yếu tố này đều liên quan đến sự lựa chọn và đánh đổi, đặc biệt trong bối cảnh các nguyên tắc được mô tả ở phần trước. Để làm rõ, hãy đưa ra một ví dụ.

Ví dụ: Ứng dụng lưu trữ hình ảnh

Có lẽ bạn đã từng đăng hình ảnh trực tuyến trước đây. Đối với các trang web lớn lưu trữ và phân phối nhiều hình ảnh, có những thách thức trong việc tạo ra kiến ​​trúc có độ tin cậy cao, hiệu quả về mặt chi phí và có độ trễ phản hồi thấp (truy xuất nhanh).

Hãy tưởng tượng một hệ thống nơi người dùng có khả năng tải hình ảnh của họ lên máy chủ trung tâm và nơi có thể yêu cầu hình ảnh thông qua liên kết trang web hoặc API, tương tự như Flickr hoặc Picasa. Để đơn giản hóa mô tả, hãy giả sử rằng ứng dụng này có hai nhiệm vụ chính: khả năng tải (ghi) hình ảnh lên máy chủ và yêu cầu hình ảnh. Tất nhiên, tải hiệu quả là tiêu chí quan trọng tuy nhiên, ưu tiên phân phối nhanh chóng theo yêu cầu của người dùng (ví dụ: hình ảnh có thể được yêu cầu hiển thị trên một trang web hoặc bởi một ứng dụng khác). Chức năng này tương tự như những gì máy chủ web hoặc máy chủ biên của Mạng phân phối nội dung (CDN) có thể cung cấp. Máy chủ CDN thường lưu trữ các đối tượng dữ liệu ở nhiều vị trí, do đó đưa chúng đến gần hơn về mặt địa lý/vật lý với người dùng, dẫn đến hiệu suất được cải thiện.

Các khía cạnh quan trọng khác của hệ thống:

  • Số lượng hình ảnh được lưu trữ có thể không giới hạn, do đó khả năng mở rộng lưu trữ phải được xem xét từ quan điểm này.
  • Phải có độ trễ thấp cho việc tải xuống/yêu cầu hình ảnh.
  • Nếu người dùng tải hình ảnh lên máy chủ, dữ liệu của nó phải luôn được giữ nguyên và có thể truy cập được.
  • Hệ thống phải dễ bảo trì (khả năng quản lý).
  • Vì việc lưu trữ hình ảnh không tạo ra nhiều lợi nhuận nên hệ thống phải tiết kiệm chi phí.

Một vấn đề tiềm ẩn khác với thiết kế này là máy chủ web như Apache hoặc lighttpd thường có giới hạn trên về số lượng kết nối đồng thời mà nó có thể phục vụ (mặc định là khoảng 500, nhưng có thể cao hơn nhiều) và với lưu lượng truy cập cao. , bản ghi có thể nhanh chóng sử dụng hết giới hạn này. Vì các lần đọc có thể không đồng bộ hoặc tận dụng các tối ưu hóa hiệu suất khác như nén gzip hoặc phân đoạn, máy chủ web có thể chuyển đổi các lần đọc nguồn cấp dữ liệu nhanh hơn và chuyển đổi giữa các máy khách trong khi phục vụ nhiều yêu cầu hơn số lượng kết nối tối đa (với Apache And Số lớn nhất kết nối được đặt thành 500, hoàn toàn có thể phục vụ vài nghìn yêu cầu đọc mỗi giây). Mặt khác, các bản ghi có xu hướng giữ kết nối mở trong toàn bộ thời gian tải xuống. Do đó, việc truyền tệp 1 MB đến máy chủ có thể mất hơn 1 giây trên hầu hết các mạng gia đình, dẫn đến máy chủ web chỉ có thể xử lý 500 mục nhập đồng thời này.


Hình 1.2: Phân tách Đọc/Ghi

Dự đoán vấn đề tiềm ẩn này cho thấy cần phải tách việc đọc và ghi hình ảnh thành các dịch vụ độc lập, được hiển thị trong . Điều này sẽ cho phép chúng tôi không chỉ mở rộng quy mô từng dịch vụ một cách riêng lẻ (vì có khả năng là chúng tôi sẽ luôn đọc nhiều hơn ghi) mà còn có thể nhận biết được những gì đang xảy ra trong mỗi dịch vụ. Cuối cùng, nó sẽ phân biệt các vấn đề có thể phát sinh trong tương lai, giúp chẩn đoán và đánh giá vấn đề truy cập đọc chậm dễ dàng hơn.

Ưu điểm của phương pháp này là chúng ta có thể giải quyết các vấn đề độc lập với nhau - mà không phải lo lắng về việc ghi và truy xuất hình ảnh mới trong cùng một ngữ cảnh. Cả hai dịch vụ này vẫn sử dụng kho hình ảnh chung, nhưng bằng cách sử dụng các kỹ thuật dành riêng cho dịch vụ, chúng có thể tối ưu hóa hiệu suất của chính mình (ví dụ: bằng cách xếp hàng yêu cầu hoặc lưu vào bộ nhớ đệm). hình ảnh phổ biến- điều này sẽ được thảo luận chi tiết hơn sau). Từ cả góc độ dịch vụ và chi phí, mỗi dịch vụ có thể được mở rộng quy mô một cách độc lập nếu cần. Và đây là một điều tích cực, vì việc kết hợp và trộn lẫn chúng có thể vô tình ảnh hưởng đến hiệu suất của chúng, như trong tình huống được mô tả ở trên.

Tất nhiên, mô hình trên sẽ hoạt động tối ưu nếu có hai điểm cuối khác nhau (trên thực tế, mô hình này rất giống với một số cách triển khai của các nhà cung cấp lưu trữ đám mây và Mạng phân phối nội dung). Có nhiều cách để giải quyết những vấn đề như vậy và trong mỗi trường hợp đều có thể tìm ra sự thỏa hiệp.

Ví dụ: Flickr giải quyết vấn đề đọc-ghi này bằng cách phân bổ người dùng giữa các mô-đun khác nhau để mỗi mô-đun chỉ có thể phục vụ một số lượng người dùng hạn chế. người dùng nhất định và khi số lượng người dùng tăng lên, nhiều nhóm sẽ được thêm vào cụm (xem phần trình bày chia tỷ lệ Flickr,
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-trình bày-file.html). Trong ví dụ đầu tiên, việc chia tỷ lệ phần cứng dựa trên tải sử dụng thực tế sẽ dễ dàng hơn (số lần đọc và ghi trên toàn bộ hệ thống), trong khi Flickr chia tỷ lệ dựa trên cơ sở người dùng (tuy nhiên, điều này giả định mức sử dụng như nhau giữa những người dùng, do đó dung lượng cần phải được lên kế hoạch theo hàng tồn kho). Trước đây, việc không có sẵn hoặc có sự cố với một trong các dịch vụ sẽ làm hỏng chức năng của toàn bộ hệ thống (ví dụ: không ai có thể ghi tệp), khi đó việc không có sẵn một trong các mô-đun Flickr sẽ chỉ ảnh hưởng đến những người dùng được liên kết với nó. Trong ví dụ đầu tiên, việc thực hiện các thao tác trên toàn bộ tập dữ liệu sẽ dễ dàng hơn - ví dụ: cập nhật dịch vụ ghi để bao gồm siêu dữ liệu mới hoặc tìm kiếm tất cả siêu dữ liệu hình ảnh - trong khi với kiến ​​trúc Flickr, mỗi mô-đun phải được cập nhật hoặc tìm kiếm ( hoặc dịch vụ tìm kiếm phải được tạo để sắp xếp siêu dữ liệu thực sự dành cho mục đích này).

Đối với các hệ thống này, không có thuốc chữa bách bệnh, nhưng bạn phải luôn tiến hành theo các nguyên tắc được mô tả ở đầu chương này: xác định nhu cầu của hệ thống (tải đọc hoặc ghi hoặc cả hai, mức độ song song, truy vấn trên tập dữ liệu, phạm vi, sắp xếp, v.v.), tiến hành kiểm tra điểm chuẩn so sánh của các lựa chọn thay thế khác nhau, hiểu các điều kiện lỗi hệ thống tiềm ẩn và phát triển một kế hoạch toàn diện nếu xảy ra lỗi.

Để xử lý lỗi một cách khéo léo, kiến ​​trúc web phải có tính dự phòng trong các dịch vụ và dữ liệu của nó. Ví dụ: nếu chỉ có một bản sao của tệp được lưu trữ trên một máy chủ, việc mất máy chủ đó đồng nghĩa với việc mất tệp. Khắc nghiệt tình huống tương tự có thể được mô tả tích cực và thường có thể tránh được bằng cách tạo nhiều bản sao hoặc bản sao lưu.

Nguyên tắc tương tự này cũng áp dụng cho các dịch vụ. Bạn có thể bảo vệ khỏi lỗi nút đơn bằng cách cung cấp một phần chức năng không thể thiếu cho ứng dụng để đảm bảo rằng nhiều bản sao hoặc phiên bản của nó có thể chạy đồng thời.

Tạo sự dư thừa trong hệ thống cho phép bạn loại bỏ điểm yếu và cung cấp chức năng sao lưu hoặc dự phòng trong trường hợp khẩn cấp. Ví dụ: nếu có hai phiên bản của cùng một dịch vụ đang chạy trong sản xuất và một trong số chúng bị lỗi hoàn toàn hoặc một phần thì hệ thống có thể khắc phục lỗi bằng cách chuyển sang bản sao làm việc.
Việc chuyển đổi có thể diễn ra tự động hoặc yêu cầu can thiệp thủ công.

.

Khác vai trò quan trọng dự phòng dịch vụ - tạo kiến trúc không cung cấp khả năng chia sẻ tài nguyên. Với kiến ​​trúc này, mỗi nút có thể hoạt động độc lập và hơn nữa, trong trường hợp không có “bộ não” trung tâm quản lý trạng thái hoặc điều phối hành động của các nút khác. Nó thúc đẩy khả năng mở rộng vì việc thêm các nút mới không yêu cầu điều kiện đặc biệt hoặc kiến ​​thức. Quan trọng nhất, các hệ thống này không có điểm hỏng hóc nghiêm trọng, khiến chúng có khả năng phục hồi tốt hơn trước khi hư hỏng.

.

Ví dụ: trong ứng dụng máy chủ hình ảnh của chúng tôi, tất cả các hình ảnh sẽ có bản sao dự phòng ở đâu đó trong một phần cứng khác (lý tưởng là ở một vị trí địa lý khác trong trường hợp xảy ra thảm họa như động đất hoặc hỏa hoạn ở trung tâm dữ liệu) và các dịch vụ việc truy cập vào các hình ảnh sẽ dư thừa, vì tất cả chúng đều có khả năng phục vụ các yêu cầu. (Cm. .)
Trong tương lai, cân bằng tải là một cách tuyệt vời để thực hiện điều này, nhưng bạn có thể tìm hiểu thêm ở bên dưới.


Hình 1.3: Ứng dụng lưu trữ hình ảnh dự phòng

Phân đoạn

Các tập dữ liệu có thể lớn đến mức không thể chứa chúng trên một máy chủ. Nó cũng có thể xảy ra rằng các hoạt động tính toán yêu cầu quá lớn tài nguyên máy tính, làm giảm năng suất và làm sự gia tăng cần thiết quyền lực. Trong mọi trường hợp, bạn có hai tùy chọn: chia tỷ lệ dọc hoặc ngang.

Chia tỷ lệ theo chiều dọc liên quan đến việc thêm nhiều tài nguyên hơn vào một máy chủ. Vì vậy, đối với một tập dữ liệu rất lớn, điều này có nghĩa là thêm nhiều hơn (hoặc nhiều hơn) ổ cứng và do đó toàn bộ tập dữ liệu có thể được lưu trữ trên một máy chủ. Trong trường hợp hoạt động điện toán, điều này có nghĩa là chuyển việc tính toán sang máy chủ lớn hơn có CPU nhanh hơn hoặc nhiều bộ nhớ hơn. Trong mọi trường hợp, việc chia tỷ lệ theo chiều dọc được thực hiện để tạo ra một tài nguyên hệ thống máy tính duy nhất có khả năng xử lý dữ liệu bổ sung.

Mặt khác, việc chia tỷ lệ theo chiều ngang liên quan đến việc thêm nhiều nút hơn. Trong trường hợp tập dữ liệu lớn, điều này có nghĩa là thêm máy chủ thứ hai để lưu trữ một phần trong tổng khối lượng dữ liệu và đối với tài nguyên máy tính, điều này có nghĩa là phân chia công việc hoặc tải cho một số nút bổ sung. Để tận dụng tối đa tiềm năng chia tỷ lệ ngang, nó phải được triển khai như một nguyên tắc nội bộ của việc phát triển kiến ​​trúc hệ thống. Mặt khác, việc thay đổi và tách biệt bối cảnh cần thiết cho việc chia tỷ lệ theo chiều ngang có thể gặp vấn đề.

Phương pháp chia tỷ lệ theo chiều ngang phổ biến nhất là chia dịch vụ thành các phân đoạn hoặc mô-đun. Chúng có thể được phân phối theo cách mà mỗi tập logic chức năng sẽ hoạt động riêng biệt. Điều này có thể được thực hiện theo ranh giới địa lý hoặc các tiêu chí khác như người dùng trả tiền và không trả tiền. Ưu điểm của các chương trình này là chúng cung cấp dịch vụ hoặc kho dữ liệu với chức năng nâng cao.

Trong ví dụ về máy chủ hình ảnh của chúng tôi, có thể máy chủ tệp duy nhất được sử dụng để lưu trữ hình ảnh có thể được thay thế bằng nhiều máy chủ tệp, mỗi máy chủ chứa tập hợp hình ảnh duy nhất của riêng nó. (Xem.) Kiến trúc này sẽ cho phép hệ thống lấp đầy từng máy chủ tệp bằng hình ảnh, thêm các máy chủ bổ sung khi nó đầy. không gian đĩa. Thiết kế sẽ yêu cầu sơ đồ đặt tên liên kết tên của tệp hình ảnh với máy chủ chứa nó. Tên hình ảnh có thể được tạo từ sơ đồ băm nhất quán gắn với máy chủ. Hoặc cách khác, mỗi hình ảnh có thể có một ID gia tăng, điều này sẽ cho phép dịch vụ phân phối, khi yêu cầu một hình ảnh, chỉ xử lý phạm vi ID được liên kết với mỗi máy chủ (dưới dạng chỉ mục).


Hình 1.4: Ứng dụng lưu trữ hình ảnh có tính dự phòng và phân đoạn

Tất nhiên, có những khó khăn trong việc phân phối dữ liệu hoặc chức năng trên nhiều máy chủ. Một trong vấn đề then chốt - vị trí dữ liệu; trong các hệ thống phân tán, dữ liệu càng gần điểm vận hành hoặc tính toán thì hiệu suất tốt hơn hệ thống. Do đó, việc phân phối dữ liệu trên nhiều máy chủ tiềm ẩn nhiều vấn đề, vì dữ liệu có thể cần thiết vào bất kỳ lúc nào, có nguy cơ dữ liệu đó không có sẵn tại địa điểm được yêu cầu, máy chủ sẽ phải thực hiện việc truy xuất thông tin cần thiết một cách tốn kém. mạng lưới.

Một vấn đề tiềm ẩn khác phát sinh ở dạng
sự không nhất quán (không nhất quán).Khi dịch vụ khác nhauđọc từ và ghi vào tài nguyên được chia sẻ, có thể là dịch vụ hoặc kho lưu trữ dữ liệu khác, có thể xảy ra tình trạng dồn đuổi - trong đó một số dữ liệu được cho là được cập nhật lên trạng thái mới nhất, nhưng thực tế lại được đọc trước khi được cập nhật - trong đó trường hợp dữ liệu không nhất quán. Ví dụ: trong trường hợp lưu trữ hình ảnh, tình trạng chủng tộc có thể xảy ra nếu một khách hàng gửi yêu cầu cập nhật hình ảnh của một con chó, thay đổi tiêu đề "Chó" thành "Gizmo", trong khi một khách hàng khác đang đọc hình ảnh. Trong tình huống như vậy, không rõ khách hàng thứ hai sẽ nhận được danh hiệu nào, "Dog" hay "Gizmo".

.

Tất nhiên, có một số trở ngại liên quan đến việc phân đoạn dữ liệu, nhưng việc phân đoạn cho phép bạn tách biệt từng vấn đề với những vấn đề khác: theo dữ liệu, theo tải, theo kiểu sử dụng, v.v. thành các khối được quản lý. Điều này có thể giúp tăng khả năng mở rộng và quản lý, nhưng vẫn có rủi ro. Có nhiều cách để giảm thiểu rủi ro và xử lý thất bại; tuy nhiên, để ngắn gọn, chúng không được đề cập trong chương này. Nếu bạn muốn biết thêm thông tin về chủ đề này, bạn nên xem bài đăng trên blog về khả năng chịu lỗi và giám sát.

1.3. Xây dựng các khối để truy cập dữ liệu nhanh và có thể mở rộng

Sau khi xem xét một số nguyên tắc cơ bản trong phát triển hệ thống phân tán, bây giờ chúng ta hãy chuyển sang một vấn đề phức tạp hơn - mở rộng quy mô truy cập dữ liệu.

Các ứng dụng web đơn giản nhất, chẳng hạn như ứng dụng ngăn xếp LAMP, tương tự như hình ảnh trong .


Hình 1.5: Các ứng dụng web đơn giản

Khi một ứng dụng phát triển, hai thách thức chính sẽ nảy sinh: mở rộng quyền truy cập vào máy chủ ứng dụng và cơ sở dữ liệu. Trong thiết kế ứng dụng có khả năng mở rộng cao, máy chủ web hoặc ứng dụng thường được thu nhỏ và thường triển khai kiến ​​trúc chia sẻ tài nguyên. Điều này làm cho lớp máy chủ ứng dụng của hệ thống có thể mở rộng theo chiều ngang. Kết quả của thiết kế này là công việc khó khăn sẽ được chuyển xuống ngăn xếp tới máy chủ cơ sở dữ liệu và dịch vụ hỗ trợ; Lớp này là nơi phát huy các vấn đề về hiệu suất và quy mô thực sự.

Phần còn lại của chương này đề cập đến một số chiến lược và kỹ thuật phổ biến nhất để cải thiện hiệu suất và khả năng mở rộng của các loại dịch vụ này bằng cách cung cấp quyền truy cập nhanh vào dữ liệu.


Hình 1.6: Ứng dụng web đơn giản hóa

Hầu hết các hệ thống có thể được đơn giản hóa thành một mạch điện trong
đó là một nơi tốt để bắt đầu tìm kiếm. Nếu bạn có nhiều dữ liệu, có thể giả định rằng bạn muốn có cùng quyền truy cập dễ dàng và truy cập nhanh giống như hộp kẹo trong ngăn bàn trên cùng của bạn. Mặc dù sự so sánh này quá đơn giản nhưng nó chỉ ra hai vấn đề phức tạp: Khả năng mở rộng lưu trữ dữ liệu và truy cập dữ liệu nhanh.

Vì mục đích của phần này, giả sử rằng bạn có nhiều terabyte (TB) dữ liệu và bạn cho phép người dùng truy cập các phần nhỏ của dữ liệu đó theo thứ tự ngẫu nhiên. (Cm. .)
Nhiệm vụ tương tự là xác định vị trí của tệp hình ảnh ở đâu đó trên máy chủ tệp trong ứng dụng lưu trữ hình ảnh mẫu.


Hình 1.7: Truy cập dữ liệu cụ thể

Điều này đặc biệt khó khăn vì việc tải hàng terabyte dữ liệu vào bộ nhớ có thể rất tốn kém và ảnh hưởng trực tiếp đến I/O của ổ đĩa. Tốc độ đọc từ đĩa thấp hơn nhiều lần so với tốc độ đọc từ RAM - có thể nói rằng việc truy cập bộ nhớ nhanh ngang với Chuck Norris, trong khi việc truy cập vào đĩa chậm hơn so với hàng đợi ở phòng khám. Sự khác biệt về tốc độ này đặc biệt đáng chú ý đối với bộ lớn dữ liệu; Ở dạng số thô, truy cập bộ nhớ nhanh hơn 6 lần so với đọc đĩa để đọc tuần tự và nhanh hơn 100.000 lần khi đọc ngẫu nhiên (xem Pathology of Big Data, http://queue.acm.org/detail. cfm?id=1563874). ). Hơn nữa, ngay cả với số nhận dạng duy nhất, việc giải bài toán tìm vị trí của một mẩu dữ liệu nhỏ có thể khó như việc cố gắng chọn viên kẹo chứa đầy sôcôla cuối cùng ra khỏi hộp hàng trăm viên kẹo khác mà không cần nhìn.

May mắn thay, có nhiều cách tiếp cận có thể được thực hiện để đơn giản hóa mọi thứ, trong đó bốn cách tiếp cận quan trọng nhất là sử dụng bộ đệm, proxy, chỉ mục và bộ cân bằng tải. Phần còn lại của phần này thảo luận về cách sử dụng từng khái niệm này để giúp việc truy cập dữ liệu nhanh hơn nhiều.

Bộ nhớ đệm

Bộ nhớ đệm được hưởng lợi từ một đặc điểm của nguyên tắc cơ bản: dữ liệu được yêu cầu gần đây có thể sẽ cần thiết trở lại. Bộ nhớ đệm được sử dụng ở hầu hết mọi cấp độ tính toán: phần cứng, hệ điều hành, trình duyệt web, ứng dụng web và hơn thế nữa. Bộ nhớ đệm giống như bộ nhớ ngắn hạn: có kích thước giới hạn nhưng nhanh hơn nguồn dữ liệu gốc và chứa các mục được truy cập gần đây. Bộ nhớ đệm có thể tồn tại ở mọi cấp độ trong kiến ​​trúc, nhưng thường được tìm thấy ở cấp độ gần nhất với giao diện người dùng, nơi chúng được triển khai để trả về dữ liệu nhanh chóng mà không cần tải phụ trợ đáng kể.

Vậy làm cách nào để sử dụng bộ đệm để tăng tốc độ truy cập dữ liệu trong API mẫu của chúng tôi? Trong trường hợp này, có một số vị trí bộ đệm phù hợp. Một tùy chọn vị trí có thể là chọn các nút ở cấp độ truy vấn, như được hiển thị trong
.


Hình 1.8: Vị trí bộ đệm trên nút cấp truy vấn

Việc đặt bộ đệm trực tiếp trên nút cấp yêu cầu cho phép lưu trữ cục bộ dữ liệu phản hồi. Mỗi khi một yêu cầu dịch vụ được thực hiện, nút sẽ nhanh chóng trả về dữ liệu cục bộ, được lưu trong bộ nhớ đệm, nếu có. Nếu nó không có trong bộ đệm, nút yêu cầu sẽ yêu cầu dữ liệu từ đĩa. Bộ đệm trên một nút cấp truy vấn cũng có thể được đặt cả trong bộ nhớ (rất nhanh) và trên đĩa cục bộ nút (nhanh hơn việc cố gắng truy cập bộ nhớ mạng).


Hình 1.9: Hệ thống bộ đệm

Điều gì xảy ra khi bạn trải rộng bộ nhớ đệm trên nhiều nút? Như bạn có thể thấy, nếu mức yêu cầu bao gồm nhiều nút thì có khả năng mỗi nút sẽ có bộ đệm riêng. Tuy nhiên, nếu bộ cân bằng tải của bạn phân phối ngẫu nhiên các yêu cầu giữa các nút thì yêu cầu tương tự sẽ chuyển đến các nút khác nhau, do đó làm tăng tình trạng thiếu bộ nhớ đệm. Hai cách để vượt qua trở ngại này là bộ nhớ đệm toàn cầu và bộ nhớ phân tán.

Bộ đệm chung

Ý nghĩa của bộ đệm chung đã rõ ràng ngay từ tên gọi: tất cả các nút chia sẻ một không gian bộ đệm duy nhất. Trong trường hợp này, bạn thêm một loại máy chủ hoặc bộ lưu trữ tệp nào đó nhanh hơn bộ nhớ ban đầu của bạn và sẽ có sẵn cho tất cả các nút cấp yêu cầu. Mỗi nút yêu cầu truy vấn bộ nhớ đệm theo cách tương tự như khi nó là cục bộ. Kiểu sơ đồ bộ nhớ đệm này có thể gây ra một số vấn đề vì một bộ nhớ đệm có thể rất dễ bị quá tải nếu số lượng máy khách và yêu cầu tăng lên. Đồng thời, sơ đồ này rất hiệu quả trên một số kiến ​​trúc nhất định (đặc biệt là những kiến ​​trúc được liên kết với phần cứng chuyên dụng giúp bộ đệm chung này hoạt động rất nhanh hoặc có một bộ dữ liệu cố định phải được lưu vào bộ đệm).

Có hai dạng bộ đệm chung tiêu chuẩn được hiển thị trong sơ đồ. Tình huống được hiển thị là khi không tìm thấy phản hồi được lưu trong bộ đệm trong bộ đệm, bộ đệm sẽ tự chịu trách nhiệm truy xuất phần dữ liệu bị thiếu từ bộ lưu trữ cơ bản. Minh họa là trách nhiệm của các nút yêu cầu để truy xuất bất kỳ dữ liệu nào không được tìm thấy trong bộ đệm.


Hình 1.10: Bộ đệm chung, trong đó bộ đệm chịu trách nhiệm truy xuất



Hình 1.11: Bộ đệm chung, trong đó các nút yêu cầu chịu trách nhiệm truy xuất

Hầu hết các ứng dụng tận dụng bộ nhớ đệm chung có xu hướng sử dụng loại đầu tiên, trong đó bộ nhớ đệm tự quản lý việc thay thế và tìm nạp dữ liệu để ngăn chặn các yêu cầu của máy khách đối với cùng một dữ liệu. Tuy nhiên, có một số trường hợp việc triển khai thứ hai có ý nghĩa hơn. Ví dụ: nếu bộ đệm được sử dụng cho rất tập tin lớn, tỷ lệ truy cập bộ đệm thành công thấp sẽ dẫn đến tình trạng quá tải bộ đệm đệm khi truy cập bộ đệm không thành công; trong tình huống này nó giúp có tỷ lệ phần trăm lớn tập dữ liệu được chia sẻ (hoặc tập dữ liệu nóng) trong bộ đệm. Một ví dụ khác là kiến ​​trúc trong đó các tệp được lưu trữ trong bộ đệm là tĩnh và không nên xóa. (Điều này có thể xảy ra do các đặc tính hiệu suất cơ bản liên quan đến độ trễ dữ liệu như vậy - có lẽ một số phần dữ liệu nhất định cần phải rất nhanh đối với các tập dữ liệu lớn - trong đó logic ứng dụng hiểu chiến lược thay thế hoặc các điểm nóng tốt hơn bộ nhớ đệm.)

Bộ đệm phân phối

Các chỉ mục này thường được lưu trữ trong bộ nhớ hoặc một nơi nào đó rất cục bộ đối với yêu cầu đến của máy khách. Berkeley DB (BDB) và cấu trúc dữ liệu cây, thường được sử dụng để lưu trữ dữ liệu trong danh sách có thứ tự, rất lý tưởng cho việc truy cập được lập chỉ mục.

Thường có nhiều lớp chỉ mục hoạt động như một bản đồ, di chuyển bạn từ vị trí này sang vị trí khác, v.v. cho đến khi bạn có được phần dữ liệu mình cần. (Cm.)


Hình 1.17: Chỉ số đa cấp

Các chỉ mục cũng có thể được sử dụng để tạo nhiều chế độ xem khác của cùng một dữ liệu. Đối với các tập dữ liệu lớn, đây là cách tuyệt vời để xác định các bộ lọc và chế độ xem khác nhau mà không cần phải tạo thêm nhiều bản sao dữ liệu.

Ví dụ: giả sử hệ thống lưu trữ hình ảnh được đề cập ở trên thực sự lưu trữ hình ảnh của các trang sách và dịch vụ cho phép khách hàng truy vấn văn bản trong những hình ảnh đó, tìm kiếm tất cả nội dung văn bản về một chủ đề nhất định giống như cách mà các công cụ tìm kiếm cho phép bạn để tìm kiếm nội dung HTML. Trong trường hợp này, tất cả hình ảnh cuốn sách này sử dụng rất nhiều máy chủ để lưu trữ tệp và việc tìm một trang duy nhất để trình bày cho người dùng có thể khá khó khăn. Ban đầu, các chỉ mục đảo ngược để truy vấn các từ và bộ từ tùy ý phải có sẵn; sau đó có nhiệm vụ điều hướng đến đúng trang, vị trí trong cuốn sách đó và lấy ra hình ảnh chính xác cho kết quả tìm kiếm. Vì vậy, trong trường hợp này, chỉ mục đảo ngược sẽ ánh xạ tới vị trí (chẳng hạn như sách B) và sau đó B có thể chứa chỉ mục với tất cả các từ, vị trí và số lần xuất hiện trong mỗi phần.

Một chỉ mục đảo ngược, mà Index1 có thể hiển thị trong sơ đồ trên, sẽ trông giống như thế này: Mỗi từ hoặc tập hợp từ đóng vai trò là chỉ mục cho những cuốn sách có chứa chúng.

Chỉ mục trung gian sẽ trông tương tự nhưng chỉ chứa các từ, vị trí và thông tin cho sách B. Kiến trúc phân lớp này cho phép mỗi chỉ mục chiếm ít không gian hơn nếu tất cả thông tin này được lưu trữ trong một chỉ mục đảo ngược lớn.

Và cái này thời điểm quan trọng trong các hệ thống quy mô lớn, vì ngay cả khi được nén, các chỉ mục này có thể khá lớn và tốn kém để lưu trữ. Giả sử rằng chúng ta có nhiều sách từ khắp nơi trên thế giới trong hệ thống này - 100.000.000 (xem bài đăng trên blog "Bên trong Google Sách") - và mỗi cuốn sách chỉ dài 10 trang (để đơn giản hóa phép tính) với 250 từ mỗi trang : Điều này mang lại chúng ta tổng cộng 250 tỷ từ. Nếu chúng ta lấy số ký tự trung bình trong một từ là 5 và mã hóa mỗi ký tự bằng 8 bit (hoặc 1 byte, mặc dù một số ký tự thực sự chiếm 2 byte), do đó sử dụng 5 byte cho mỗi từ, thì chỉ mục chứa mỗi ký tự từ chỉ một lần sẽ yêu cầu dung lượng lưu trữ lớn hơn 1 terabyte. Vì vậy, bạn có thể thấy rằng các chỉ mục cũng chứa thông tin khác, chẳng hạn như bộ từ, vị trí dữ liệu và số lượng sử dụng, có thể tăng kích thước rất nhanh.

Việc tạo các chỉ mục trung gian như vậy và trình bày dữ liệu theo từng phần nhỏ hơn giúp giải quyết vấn đề dữ liệu lớn dễ dàng hơn. Dữ liệu có thể được phân phối trên nhiều máy chủ và đồng thời có thể truy cập nhanh chóng. Các chỉ mục là nền tảng của việc truy xuất thông tin và là cơ sở cho công nghệ hiện đại ngày nay. công cụ tìm kiếm. Tất nhiên, phần này chỉ nói sơ qua về chủ đề lập chỉ mục và đã có rất nhiều nghiên cứu về cách làm cho chỉ mục nhỏ hơn, nhanh hơn, chứa nhiều thông tin hơn (chẳng hạn như mức độ liên quan) và dễ dàng cập nhật. (Có một số vấn đề với việc quản lý các điều kiện cạnh tranh cũng như số lượng cập nhật cần thiết để thêm dữ liệu mới hoặc thay đổi dữ liệu hiện có, đặc biệt là khi liên quan đến mức độ liên quan hoặc tính điểm).

Việc có thể tìm thấy dữ liệu của bạn một cách nhanh chóng và dễ dàng là điều quan trọng và các chỉ mục là công cụ đơn giản và hiệu quả nhất để đạt được mục tiêu này.

Cân bằng tải

Cuối cùng, một lời phê bình khác một phần quan trọng của bất kỳ hệ thống phân tán nào - bộ cân bằng tải. Bộ cân bằng tải là một phần cốt lõi của bất kỳ kiến ​​trúc nào vì vai trò của chúng là phân phối tải giữa các nút chịu trách nhiệm phục vụ các yêu cầu. Điều này cho phép nhiều nút phục vụ cùng một chức năng trong hệ thống một cách minh bạch. (Xem.) Mục đích chính của chúng là xử lý nhiều kết nối đồng thời và định tuyến các kết nối đó đến một trong các nút được yêu cầu, cho phép hệ thống mở rộng quy mô bằng cách chỉ cần thêm các nút để phục vụ nhiều yêu cầu hơn.


Hình 1.18: Cân bằng tải

Có nhiều thuật toán khác nhau để phục vụ các yêu cầu, bao gồm lựa chọn nút ngẫu nhiên, thuật toán tuần hoàn hoặc thậm chí chọn một nút dựa trên các tiêu chí nhất định như mức sử dụng bộ xử lý trung tâm hoặc RAM. Cân bằng tải có thể được triển khai dưới dạng thiết bị phần cứng hoặc phần mềm. Trong số các bộ cân bằng tải trên phần mềm Phần mềm nguồn mở được sử dụng rộng rãi nhất là HAProxy.

Trong hệ thống phân tán, bộ cân bằng tải thường được đặt ở "cạnh trước" của hệ thống để tất cả các yêu cầu gửi đến đều truyền trực tiếp qua chúng. Rất có thể trong một hệ thống phân tán phức tạp, một yêu cầu sẽ phải đi qua nhiều bộ cân bằng, như minh họa trong
.


Hình 1.19: Nhiều bộ cân bằng tải

Giống như proxy, một số bộ cân bằng tải cũng có thể định tuyến các yêu cầu khác nhau tùy thuộc vào loại yêu cầu. Chúng còn được gọi là proxy ngược.

Quản lý dữ liệu cụ thể cho một phiên người dùng cụ thể là một trong những thách thức khi sử dụng bộ cân bằng tải. Trên trang web thương mại điện tử, khi bạn chỉ có một khách hàng, rất dễ dàng cho phép người dùng đặt các mặt hàng vào giỏ hàng của họ và lưu nội dung giữa các lần truy cập (điều này rất quan trọng vì khả năng bán được một mặt hàng tăng đáng kể nếu, khi người dùng quay lại trang web, sản phẩm vẫn còn trong giỏ hàng của anh ấy). Tuy nhiên, nếu người dùng được chuyển hướng đến một nút trong phiên đầu tiên, sau đó đến một nút khác trong lần truy cập tiếp theo, thì sự không thống nhất có thể xảy ra do nút mới có thể không biết về nội dung trong giỏ hàng của người dùng đó. (Bạn có khó chịu nếu bạn đặt một gói Mountain Dew vào giỏ hàng của mình và nó không có ở đó khi bạn quay lại không?) Một giải pháp có thể là làm cho các phiên "dính" để người dùng luôn được hướng đến cùng một phiên nút. Tuy nhiên, việc tận dụng một số tính năng đáng tin cậy, chẳng hạn như chuyển đổi dự phòng tự động, sẽ khó khăn đáng kể. Trong trường hợp này, giỏ hàng của người dùng sẽ luôn có nội dung, nhưng nếu nút cố định của họ không thể truy cập được thì sẽ cần một cách tiếp cận đặc biệt và giả định về nội dung của giỏ hàng sẽ không còn đúng nữa (mặc dù hy vọng rằng giả định này sẽ không được tích hợp vào ứng dụng). Tất nhiên, vấn đề này có thể được giải quyết bằng cách sử dụng các chiến lược và công cụ khác, chẳng hạn như những chiến lược và công cụ được mô tả trong chương này, chẳng hạn như các dịch vụ và nhiều thứ khác (chẳng hạn như bộ đệm của trình duyệt, cookie và viết lại URL).

Nếu hệ thống chỉ có một vài nút thì các kỹ thuật như băng chuyền DNS có thể sẽ thực tế hơn các bộ cân bằng tải, vốn có thể tốn kém và tạo thêm lớp phức tạp không cần thiết cho hệ thống. Tất nhiên, trong các hệ thống lớn có tất cả các loại thuật toán cân bằng tải và lập kế hoạch khác nhau, bao gồm cả những thứ đơn giản như ngẫu nhiên hóa hoặc băng chuyền, cho đến các cơ chế phức tạp hơn có tính đến các đặc tính hiệu suất của kiểu sử dụng của hệ thống. Tất cả các thuật toán này cho phép bạn phân phối lưu lượng truy cập và yêu cầu, đồng thời có thể cung cấp Công cụ hữu íchđộ tin cậy, chẳng hạn như tự động chuyển đổi dự phòng hoặc tự động loại bỏ nút bị hỏng (ví dụ: khi nút đó ngừng phản hồi). Tuy nhiên, những tính năng nâng cao này có thể khiến việc chẩn đoán vấn đề trở nên phức tạp. Ví dụ: trong các tình huống tải cao, bộ cân bằng tải sẽ loại bỏ các nút có thể chạy chậm hoặc hết thời gian chờ (do có quá nhiều yêu cầu), điều này sẽ chỉ khiến mọi việc trở nên tồi tệ hơn đối với các nút khác. Giám sát mở rộng rất quan trọng trong những trường hợp này vì ngay cả khi lưu lượng và tải tổng thể của hệ thống có vẻ giảm (vì các nút đang phục vụ ít yêu cầu hơn), các nút riêng lẻ có thể bị kéo dài đến giới hạn của chúng.

Cân bằng tải là một cách dễ dàng để tăng công suất hệ thống. Giống như các phương pháp khác được mô tả trong bài viết này, nó đóng một vai trò thiết yếu trong kiến ​​trúc hệ thống phân tán. Bộ cân bằng tải cũng cung cấp chức năng quan trọng là kiểm tra tình trạng của các nút. Nếu do kiểm tra như vậy, một nút không phản hồi hoặc bị quá tải thì nút đó có thể bị xóa khỏi nhóm xử lý yêu cầu và nhờ tính dự phòng của hệ thống của bạn, tải sẽ được phân phối lại giữa các nút đang hoạt động còn lại .

Hàng đợi

Cho đến nay chúng ta đã xem xét nhiều cách để đọc dữ liệu nhanh chóng. Đồng thời, một phần quan trọng khác của việc mở rộng lớp dữ liệu là quản lý bản ghi hiệu quả. Khi hệ thống đơn giản và có tải xử lý tối thiểu cũng như cơ sở dữ liệu nhỏ, việc ghi có thể được dự đoán là nhanh chóng. Tuy nhiên, ở hơn hệ thống phức tạp Quá trình này có thể mất một thời gian dài vô tận. Ví dụ: dữ liệu có thể phải được ghi vào nhiều nơi trên các máy chủ hoặc chỉ mục khác nhau hoặc đơn giản là hệ thống có thể đang chịu tải cao. Trong trường hợp việc ghi hoặc thậm chí bất kỳ tác vụ nào mất nhiều thời gian, việc đạt được hiệu suất và tính khả dụng đòi hỏi phải xây dựng tính không đồng bộ trong hệ thống. Cách phổ biến để thực hiện việc này là tổ chức hàng đợi yêu cầu.


Hình 1.20: Yêu cầu đồng bộ

Hãy tưởng tượng một hệ thống trong đó mỗi máy khách yêu cầu một tác vụ dịch vụ từ xa. Mỗi máy khách này sẽ gửi yêu cầu của mình đến máy chủ, máy chủ này sẽ thực hiện các tác vụ nhanh nhất có thể và trả kết quả của chúng cho các máy khách tương ứng. Trong các hệ thống nhỏ nơi một máy chủ (hoặc dịch vụ logic) có thể phục vụ các máy khách đến ngay khi chúng đến, các tình huống thuộc loại này sẽ hoạt động tốt. Tuy nhiên, khi máy chủ nhận được nhiều yêu cầu hơn mức nó có thể xử lý thì mỗi máy khách buộc phải đợi yêu cầu của máy khách khác hoàn tất xử lý trước khi phản hồi yêu cầu của nó. yêu cầu riêng sẽ được tạo ra. Đây là ví dụ về yêu cầu đồng bộ, được mô tả trong .

Kiểu hành vi đồng bộ này có thể làm giảm đáng kể hiệu suất của máy khách; trên thực tế, khi không hoạt động, máy khách buộc phải đợi cho đến khi nhận được phản hồi cho yêu cầu. Việc thêm các máy chủ bổ sung để đối phó với tải hệ thống không thực sự giải quyết được vấn đề; Ngay cả khi đã có cân bằng tải hiệu quả, việc cung cấp sự phân bổ tải đồng đều và hợp lý cần thiết để tối đa hóa năng suất của khách hàng là vô cùng khó khăn. Hơn nữa, nếu máy chủ xử lý yêu cầu này không khả dụng (hoặc bị hỏng) thì máy khách được kết nối với nó cũng sẽ ngừng hoạt động. Một giải pháp hiệu quả cho vấn đề này đòi hỏi sự trừu tượng hóa giữa yêu cầu của khách hàng và công việc thực tế được thực hiện để phục vụ yêu cầu đó.


Hình 1.21: Sử dụng hàng đợi để quản lý yêu cầu

Hàng đợi nhập cảnh. Cách thức hoạt động của hàng đợi rất đơn giản: một nhiệm vụ đến, được xếp vào hàng đợi và sau đó các “công nhân” chấp nhận nhiệm vụ tiếp theo ngay khi họ có cơ hội xử lý nó. (Xem.) Những nhiệm vụ này có thể ghi chú đơn giản tới cơ sở dữ liệu hoặc thứ gì đó phức tạp như tạo hình ảnh xem trước cho tài liệu. Khi máy khách gửi yêu cầu tác vụ đến hàng đợi, nó không cần phải đợi kết quả thực thi nữa; thay vào đó, các yêu cầu chỉ cần xác nhận rằng chúng đã được nhận đúng cách. Xác nhận này sau này có thể dùng làm tham chiếu đến kết quả công việc khi khách hàng yêu cầu.

Hàng đợi cho phép khách hàng làm việc một cách không đồng bộ, cung cấp sự trừu tượng mang tính chiến lược về yêu cầu và phản hồi của khách hàng. Mặt khác, ở hệ thống đồng bộ, không có sự khác biệt giữa yêu cầu và phản hồi và do đó chúng không thể được quản lý riêng biệt. Trong hệ thống không đồng bộ, máy khách gửi một tác vụ, dịch vụ sẽ phản hồi bằng thông báo xác nhận rằng tác vụ đã được nhận và sau đó máy khách có thể kiểm tra định kỳ trạng thái của tác vụ, chỉ yêu cầu kết quả sau khi hoàn thành. Trong khi máy khách đang thực hiện một yêu cầu không đồng bộ, bạn có thể tự do thực hiện các công việc khác và thậm chí thực hiện các yêu cầu không đồng bộ từ các dịch vụ khác. Cái sau là một ví dụ về cách hoạt động của hàng đợi và tin nhắn trong các hệ thống phân tán.

Hàng đợi cũng cung cấp một số biện pháp bảo vệ chống lại sự gián đoạn và lỗi dịch vụ. Ví dụ: khá dễ dàng để tạo một hàng đợi rất linh hoạt có thể thử lại các yêu cầu dịch vụ không thành công do lỗi máy chủ tạm thời. Tốt nhất nên sử dụng hàng đợi để thực thi đảm bảo chất lượng dịch vụ thay vì khiến khách hàng bị gián đoạn dịch vụ tạm thời, yêu cầu xử lý lỗi phức tạp và thường không nhất quán ở phía khách hàng.

Hàng đợi là nguyên tắc cơ bản trong việc quản lý truyền phân tán giữa phần khác nhau bất kỳ hệ thống phân tán quy mô lớn nào và có nhiều cách để triển khai chúng. Có khá nhiều triển khai hàng đợi nguồn mở như RabbitMQ.
ActiveMQ
BeanstalkD, nhưng một số cũng sử dụng các dịch vụ như

  • chia tỷ lệ
  • phân phối máy tính
  • phát triển web
  • Kate Matsudaira
  • Thêm thẻ