Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
I H C QU C GIA TH NH PH H CH MINHĐẠ Ọ Ố À Ố Ồ Í
TR NG I H C CÔNG NGH THÔNG TINƯỜ ĐẠ Ọ Ệ
ĐỀ TÀI: TÌM HIỀU VỀ ĐIỆN TOÁN ĐÁM
MÂY VÀ GIẢI QUYẾT VẤN ĐỀ PHÂN
TÁN, TÍNH TOÁN SONG SONG
TPHCM, tháng 6/ 2014
MỤC LỤC
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 1/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
1
LỜI NÓI ĐẦU 2
2
PH N 1: T NG QUAN V I N TOÁN ÁM MÂYẦ Ổ ỀĐ Ệ Đ 3
I. Khái ni m i n toán ám mây ệ Đ ệ đ 3
II. c i m c a i n toán ám mâyĐặ đ ể ủ đ ệ đ 4
III. S c n thi t c a i n toán ám mâyự ầ ế ủ đ ệ đ 5
IV. Công nghệ 7
PH N 2: NG D NG PHÂN TÁN VÀ X LÝ SONG SONG V I WCF SERVICEẦ Ứ Ụ Ử Ớ 22
1. Mô t ch ng trìnhả ươ 22
2. Các h m x lý chính:à ử 25
3. Th c thi ch ng trìnhự ươ 27
* Ph n m m c n ch y ch ng trìnhầ ề ầ để ạ ươ 27
- Visual Studio 2010 27
PHẦN 3: HƯỚNG PHÁT TRIẾN 29
Trong phạm vi của bài thu hoạch nhỏ này, chúng em sẽ trình bày khái quát
về Điện toán đám mây và giải quyết vấn đề, phân tán và tính toán song song .
Em xin chân thành cảm ơn Thầy PGS. TS Nguyễn Phi Khứ. Những tiết
giảng quý báu của Thầy đã cung cấp cho em những kiến thức nền tảng về Điện
toán lưới và đám mây bước khởi đầu giúp em nghiên cứu trong nhiều lĩnh vực.
Học Viên Cao Học Khóa 8
NGUYỄN CHÍ TOÀN
* * *
PHẦN 1: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
I. Khái niệm Điện toán đám mây
Điện toán đám mây là:
"Một mô hình máy tính mới, nơi đó dữ liệu và các dịch vụ cư trú tại các
trung tâm dữ liệu trong đám mây và có thể được truy cập từ bất kỳ thiết bị kết
nối nào qua internet ".
Điện toán có thể được mô tả là bất kỳ hoạt động nào của việc sử dụng và
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 3/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
phát triển phần cứng hay phần mềm máy tính, nghĩa là tất cả mọi thứ từ sức
mạnh tính toán đến khả năng lưu trữ. Đám mây điện toán quan hệ cùng tất cả
các thực thể của nó để làm cho chúng như một thực thể tích hợp duy nhất bằng
sự quản lý tinh vi.
Đám mây(cloud) là một thuật ngữ được sử dụng như là một ẩn dụ cho các
mạng diện rộng (như Internet) hoặc bất cứ môi trường mạng lớn như vậy. Nó bắt
nguồn từ biểu tượng giống đám mây được sử dụng để đại diện cho những mạng
phức tạp trong sơ đồ nguyên lý(schematic). Nó đại diện cho tất cả những phức
tạp của mạng có thể bao gồm mọi thứ từ cáp, router, máy chủ, trung tâm dữ liệu
và tất cả các thiết bị khác như vậy.
II. Đặc điểm của điện toán đám mây
rạc như vậy là sự kết hợp của nhiều dịch vụ độc lập khác với nhau để tạo dịch vụ
này. Điều này cho phép việc tái sử dụng các dịch vụ khác nhau sẵn có và đang
được tạo ra. Bằng việc sử dụng các dịch vụ đã được tạo ra trước đó, những dịch
vụ khác có thể được tạo ra từ đó.
5. Điều khiển SLA(Service level agreement)
Thông thường các doanh nghiệp có thỏa thuận về số lượng dịch vụ. Khả
năng mở rộng và các vấn đề có sẵn có thể làm cho các thỏa thuận này bị phá vỡ.
Tuy nhiên, các dịch vụ điện toán đám mây là hướng SLA, như việc khi hệ thống
có kinh nghiệm đạt đỉnh của tải, nó sẽ tự động điều chỉnh chính nó để tuân thủ
các thỏa thuận ở cấp độ dịch vụ. Các dịch vụ sẽ tạo ra thêm những thực thể của
ứng dụng trên nhiều server để cho việc tải có thể dễ dàng quản lý.
6. Khả năng ảo hóa
Các ứng dụng trong điện toán đám mây hoàn toàn tách rời khỏi
phần cứng nằm bên dưới. Môi trường điện toán đám mây là một môi trường ảo
hóa đầy đủ.
7. Linh hoạt
Một tính năng khác của các dịch vụ điện toán đám mây là chúng linh hoạt.
Chúng có thể được dùng để phục vụ rất nhiều loại công việc có khối lượng khác
nhau từ tải nhỏ của một ứng dụng nhỏ cho đến tải rất nặng của một ứng dụng
thương mại.
III. Sự cần thiết của điện toán đám mây
Một câu hỏi được đặt ra là làm cách nào để có thể tăng năng lực tính toán
và lưu trữ dữ liệu lên hàng nghìn lần so với chỉ dùng phần cứng tại chỗ? Câu hỏi
đã từng làm đau đầu các nhà phát triển hệ thống, và với sự ra đời của mạng
internet vấn đề đã được giải quyết bởi sự xuất hiện của dịch vụ điện toán đám
mây. Điện toán đám mây là một dịch vụ tính toán và lưu trữ do nhà cung cấp
dịch vụ cung cấp cho khách hàng, vì vậy năng lực tính toán và lưu trữ dữ liệu có
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 5/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 6/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
Bên cạnh đó điện toán đám mây cũng có những nhược điểm cố định của
nó. Với điện toán đám mây người dùng không thực sự an tâm về dữ liệu của họ
vì khi đó tài nguyên thật sự không còn là của riêng họ mà nằm trong đám mây
của nhà cung cấp dịch vụ. Theo đó thì sự bảo mật dữ liệu cũng là vấn đề làm lo
lắng cho người dùng. Và khi có sự cố về mạng internet thì người dùng không thể
làm việc với dữ liệu của chính họ được nữa.
IV. Công nghệ
1. Kiến trúc của ứng dụng điện toán đám mây
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 7/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
Bây giờ chúng ta sẽ đi vào tìm hiểu cấu trúc cơ bản của điện toán đám mây,
chúng ta biết rằng điện toán đám mây là một tổ hợp tính toán dựa trên các thiết
bị hạ tầng phần cứng trong một đám mây của nhà cung cấp dịch vụ. Hạ tầng
phần cứng bao gồm các sản phẩm máy chủ chứa dữ liệu nhỏ được kết nối lại với
nhau như một hệ thống phục vụ cho việc lưu trữ và xử lý dữ liệu và các ứng
dụng tính toán trên các tài nguyên khác. Điện toán đám mây gọi một ứng dụng
chạy trên máy chủ ảo như là nó đang chạy tại chỗ trên hạ tầng phần cứng phân
tán trong đám mây. Những máy chủ ảo được tạo ra theo những cách mà ở đó
những thỏa thuận dịch vụ (SLA) khác nhau và sự tin cậy đều được đảm bảo. Có
thể có nhiều thực thể khác nhau của cùng một máy chủ ảo truy cập vào những
phần sẵn sàng của cơ sở hạ tầng phần cứng. Điều này đảm bảo rằng có nhiều
bản sao của các ứng dụng, để khi xảy ra lỗi chúng sẵn sàng khắc phục. Máy chủ
ảo phân tán quá trình xử lý vào cơ sở hạ tầng phần cứng và sau khi quá trình tính
toán được hoàn thành chúng sẽ trả về kết quả. Quá trình này cần có một phần
cứng phức tạp bên dưới và cũng là để tách biệt giao diện người dùng với hệ
thống phần cứng, khi đó người dùng chỉ cần quan tâm đến những ứng dụng mà
học cần chứ không cần quan tâm đến phần cứng bên dưới được thực hiện như
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 9/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
thế nào. Ứng dụng thứ nhất là Xen hypervisor cung cấp các lớp trừu tượng giữa
phần cứng và hệ điều hành ảo, nhờ vậy sự phân tán của các tài nguyên và tiến
trình được quản lý giống như là đang thực hiện trên một máy. Ứng dụng thứ hai
cũng được sử dụng rộng rãi là hệ thống quản lý máy chủ ảo Enomalism, nó được
sử dụng để quản lý hạ tầng phần cứng nền tảng.
Khi Xen sử dụng cho các lớp ảo của các cơ sở hạ tầng máy chủ, một lớp
phần mềm là Xen hypervisor đã được cài đặt giữa máy chủ và hệ điều hành. Nó
cung cấp một lớp trừu tượng cho phép mỗi server vật lý có thể được chạy như là
một hoặc nhiều máy chủ ảo, tách riêng hệ điều hành và các ứng dụng của nó
khỏi lớp phần cứng vật lý bên dưới. Xen hypervisor là một công nghệ mã nguồn
mở, được cộng tác phát triển bởi Xen và các kỹ sư của hơn 20 công ty nổi tiếng
về trung tâm dữ liệu có tính chất đổi mới bao gồm : AMD, Cisco, Dell, HP,
IBM, Intel, Mellanox, Network Appliance, Novell, Red Hat, SGI, Sun, Unisys,
Veritas, Voltaire, and Citrix. Xen được đăng ký bởi GNU General Public
License (GPL2) và được sử dụng không được thay đổi về mã nguồn và định
dạng đối tượng. Xen Hypervisor cũng đặc biệt ngắn - ít hơn 50.000 dòng mã. Vì
vậy chi phí dịch mã code rất thấp và hiệu suất gần giống như trên máy nguyên
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 10/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
thủy. Xen tái sử dụng các trình điều khiển thiết bị hiện có (đối với cả hai loại là
mở và đóng mã nguồn) từ Linux, làm cho thiết bị quản lý dễ dàng. Hơn nữa Xen
máy tính thành phần cấu tạo nên đám mây điện toán). Hệ thống khi chạy sẽ quan
tâm chi tiết phân vùng của dữ liệu đầu vào, lập lịch quá trình thực thi chương
trình thông qua một tập các máy tính thành phần, xử lý lỗi và quản lý các kết nối
nội giữa các máy tính thành phần. Điều này cho phép các lập trình viên ngay cả
chưa có bất kỳ kinh nghiệm nào trong các hệ thống song song và phân tán đều
có thể dễ dàng tối ưu hóa các tài nguyên của một hệ thống phân tán lớn
Trong vòng vài năm trước đây, các kỹ sư của Google phải khởi tạo hàng
trăm các quá trình tính toán dành cho các mục đích đặc biệt trên số lượng lớn
các dữ liệu thô như các dữ liệu móc nối, nhật ký các trang web yêu cầu…Các
quá trình tính toán này dùng cho nhiều mục đích khác nhau như tóm tắt số lượng
các trang đã được móc nối bởi từng host, tính tần số truy xuất của 1 trang web,
tìm ra tập các câu truy vấn được dùng nhiều nhất trong ngày…Hầu hết các tính
toán này đều không phức tạp,nhưng dữ liệu đầu vào thường rất lớn và quá trình
tính toán cần phải được phân tán cho hàng trăm ngàn máy nhằm có thể thực thi
trong khoảng thời gian cho phép. Các vấn đề về việc song song hóa tính
toán,phân tán dữ liệu và quản lý lỗi đã làm cho các quá trình tính toán vốn đơn
giản này trở nên vô cùng phức tạp.
Để giải quyết vấn đề, các kỹ sư của Google đã thiết kế một mô hình trừu
tượng cho phép chúng ta diễn tả quá trình tính toán này một cách đơn giản như
vốn dĩ của nó, đồng thời che dấu đi các chi tiết phức tạp trong việc song song
hóa, chấp nhận lỗi, cân bằng nạp, phân tán dữ liệu trong một thư viện riêng. Sự
trừu tượng hóa này được lấy ý tưởng từ 2 thành phần cơ bản là map và reduce
trong Lisp và nhiều loại ngôn ngữ lập trình hàm khác. Chúng ta có thể nhận thấy
rằng trong hầu hết các quá trình tính toán của chúng ta đều bao gồm một thao
tác map, ánh xạ các đầu vào với các giá trị của “bản ghi” để thực hiện việc tính
toán các giá trị đó thành 1 tập các cặp khóa/giá trị tạm thời, sau đó ta lại tạo
thêm một thao tác reduce, thu gọn các giá trị mà có cùng key lại với nhau và cho
ra kết quả.Việc sử dụng mô hình hàm chức năng map và reduce cho phép chúng
ta có thể thực thi song song các tính toán lớn dễ dàng và có thể sử dụng quá
trình thực thi lại như một cơ chế chấp nhận lỗi.
Khứ
Ví dụ:
Giả sử chúng ta có một bài toán là đếm số lần xuất hiện của một từ trong
một bộ tài liệu lớn, người dùng cần phải viết một đoạn code tương tự với mã giả
sau đây:
map(String key,String value):
//key: tên của tài liệu
//value:nội dung tài liệu đó
Với mỗi chữ cái w trong value :
EmitIntermediate(w,”1”);
reduce(String key,Iterator values):
//key: chữ cái cần đếm
//values:danh sách các số đếm trong map
int result = 0;
với mỗi giá trị v trong values:
result += ParseInt(v);
Emit(AsString(result)) ;
Hàm map thêm vào mỗi từ một số tương ứng với số lần xuất hiện của nó
(trong ví dụ đơn giản trên là ‘1’). Hàm reduce làm nhiệm vụ cộng tất cả các số
đếm của từ đó.
Sau đó, người dùng cần phải thực hiện thêm các thủ tục khai báo đặc tả đối
tượng mapreduce với tên của các file input, output và các biến tùy chỉnh. Người
dùng sau đó gọi hàm MapReduce, chuyển cho nó đối tượng đã đặc tả ở trên, lúc
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 14/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
này các đoạn code của người dùng được liên kết lại thông qua thư viện
MapReduce.
Tổng quan quá trình thực thi
chương trình còn lại sẽ là worker, là chương trình sẽ thực thi các tác vụ do
master giao phó. Có tất cả là M tác vụ Map và R tác vụ Reduce cần được thực
thi. Chương trình master chọn các worker rãnh rỗi để gán cho tác vụ Map hoặc
Reduce.
•Worker được gán thực thi tác vụ Map đọc nội dung của mảnh giá trị đầu
vào tương ứng, nó phân tích giá trị đầu vào thành các cặp khóa/giá trị và chuyển
chúng đến cho hàm Map người dùng tự định nghĩa. Các cặp giá trị key/value
trung gian (kết quả của hàm Map) sẽ được lưu vào bộ nhớ đệm.
•Sau đó, các cặp giá trị trong vùng nhớ đệm này sẽ được ghi xuống vùng
nhớ địa phương, và được phân thành R vùng. Vị trí của các cặp khóa/giá trị này
(trên bộ nhớ địa phương) sẽ được chuyển về cho master. Chương trình master
sau đó sẽ chuyển vị trí của chúng cho các worker được gán tác vụ Reduce.
•Khi một worker thực thi tác vụ Reduce nhận được các vị trí của các vùng
nhớ từ master, nó dùng các lời gọi thủ tục từ xa (RPC- Remote Procedure Call)
để đọc các giá trị này. Sau khi worker đọc xong tất cả các cặp giá trị trung gian
này, nó sẽ sắp xếp lại chúng theo khóa bằng cách gom nhóm các cặp có cùng
khóa lại với nhau. Nếu số lượng các file trung gian này quá lớn so với bộ nhớ thì
chúng ta sẽ phải cần có một hàm sắp xếp ngoài
•Sau đó các worker thực thi tác vụ Reduce chuyển khóa và tập các dữ liệu
tương ứng đến hàm Reduce do người dùng định nghĩa, kết quả output thu được
là kết quả cuối cùng.
•Sau khi tất cả các tác vụ Map và Reduce đều hoàn tất, chương trình
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 16/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
master gọi đến chương trình user program, trả về đoạn code tiếp theo trong
chương trình.
Chấp nhận lỗi
Thư viện MapReduce được thiết kế để giúp tính toán trên các lượng dữ
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
trong đám mây điện toán, nó giúp cho hoạt động tính toán không bị mất khi sử
ra sự cố. Một trong các nguyên nhân thường xảy ra làm tăng thời gian hoàn tất
tác vụ MapReduce là các “straggler”. ”Straggler” là các máy có khoảng thời
gian hoàn tất một trong số các tác vụ cuối của Map hoặc Reduce dài một cách
bất thường. ”Straggler” có thể là bất cứ máy nào trong số các máy trong hệ
thống đám mây đang được sử dụng. Có rất nhiều nguyên nhân tạo nên
“straggler”, ví dụ như một máy tính trong hệ thống có ổ đĩa cứng không tốt, khi
hoạt động có thể gặp một số trục trặc làm giảm tốc độ truy xuất bình thường của
ổ cứng từ 30Mb/s xuống thành 1Mb/s chẳng hạn. Hệ thống lặp lịch cho các cụm
máy tính lúc này phải gán tác vụ khác cho máy là nguyên nhân làm chậm tốc độ
thực thi MapReduce (dựa trên sự so sánh tốc độ CPU, truy xuất bộ nhớ, hệ
thống lưu trữ của máy địa phương, băng thông của mạng). Một vấn đề mới nhất
mà Google gặp phải là một lỗi trong đoạn code khởi tạo tác vụ MapReduce, nó
làm cho các cache của CPU không thể hoạt động, quá trình tính toán của máy
tính bị lỗi do đó mà giảm xuống khoảng 100 lần.
Google đã tạo ra một phương pháp nhằm giảm bớt tác hại do các
“straggler” gây ra. Khi các tác vụ MapReduce gần hoàn tất, master sẽ tạo ra các
tác vụ back up cho các tác vụ đang thực thi và gán cho các workers rãnh rỗi thực
hiện. Quá trình MapReduce sẽ kết thúc khi tác vụ nguyên thủy hoặc tác vụ back
up hoàn tất. Đối với các tác vụ MapReduce nhỏ, phương pháp này chỉ giúp cải
thiện hiệu năng một vài phần trăm, nhưng đối với các tác vụ MapReduce lớn thì
chúng giúp cải thiện hiệu năng rất đáng kể.
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 18/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
Bên trên là biểu đồ so sánh tốc độ thực thi của chương trình sắp xếp viết
theo MapReduce của Google. Chương trình thực hiện sắp xếp khoảng 1
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
Node Master không thường lưu trữ bất kỳ một phân khúc dữ liệu nào,nó
chỉ lưu trử các siêu dữ liệu liên quan đến các phân khúc như bản ánh xạ các
nhãn 64-bit đến vị trí lưu trữ vật lý và vị trí trong file gốc, vị trí của tất cả các
bản sao dữ liệu, các tiến trình đang đọc hoặc ghi lên 1 phân khúc, tình trạng các
phân khúc hoặc ảnh của của phân khúc để dành cho việc tạo thêm các bản sao…
Các siêu dữ liệu này được update liên tục bởi các chunkserver sau khoảng thời
gian cố định. Ngoài ra node Master luôn giữ kết nối và kiểm tra trạng thái của
các chunkserver bằng các gửi và nhận các thông điệp phản hồi liên tục sau
khoảng thời gian cố định.
Chúng ta sẽ phân tích một tiến trình đọc file đơn giản theo hình bên trên.
Đầu tiên dựa vào kích thước cố định được quy ước trước của 1 mảnh dữ
liệu,client dùng chương trình biên dịch tên của file và các byte offset thành một
danh mục các mảnh dữ liệu chứa trong 1 file. Sau đó nó gửi đến node master
một yêu cầu có chứa tên file và danh mục các mảnh dữ liệu. Master phản hồi lại
với con trỏ các mảnh dữ liệu và vị trí các bản sao theo yêu cầu của client. Các
client lưu trữ các thông tin này trong bộ nhớ cache và sử dụng chúng như chìa
khóa để cho phép truy xuất dữ liệu.
Sau đó client tiến hành gửi yêu cầu truy xuất dữ liệu đến 1 trong các bản
sao thường là bản sao gần nhất. Trong yêu cầu truy xuất của client phải có con
trỏ mang địa chỉ của mảnh đó và phạm vi byte cần truy xuất ttrong mảnh. Các
quá trình đọc tiếp theo không cần có sự kết nối đến node master nữa cho đến khi
các thông tin lưu trữ trong bộ nhớ cache bị xóa. Trong thực tế thì client thường
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 20/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
yêu cầu cho phép truy xuất đến nhiều mảnh dữ liệu lưu trữ trên nhiều nơi khác
một hệ thống file phân tán trên các node tính toán, cung cấp băng thông tổng
hợp cao trên các cụm máy tính. Cả MapReduce và hệ thống file phân tán đều
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 21/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi
Khứ
được thiết kế sao cho khi có lỗi xảy ra ở bất kỳ node nào thì chúng đều được
quản lý bởi framework. Hadoop được viết bằng ngôn ngữ Java.
Framework Hadoop MapReduce có cấu trúc chủ/tớ. Nó có một server
master hay còn gọi là jobTracker và nhiều slave hay còn gọi là taskTrackers.
JobTracker là điểm kết nối giữa người dùng và framework. Người dùng gửi các
công việc lên jobTracker, các công việc này sẽ được đưa vào một hàng đợi xử lý
theo nguyên tác FIFO. Sau đó jobTracker sẽ gán các công việc này cho các
taskTracker. Các taskTracker này xử lý các tác vụ và quản lý sự di chuyển của
dữ liệu trong các quá trình Map và Reduce.
Hadoop có ứng dụng rất rộng rãi trong các hệ thống đám mấy điện toán
hiện nay vì nó cung cấp một cơ chế sử dụng tài nguyên hệ thống tối ưu, chi phí
thấp. Amazon sử dụng Hadoop để phân tích hàng trăm triệu session giao dịch.
Báo NewYork Times sử dụng Hadoop cho việc xử lý hình ảnh. Yahoo sử dụng
Hadoop cho công cụ tìm kiếm của mình và hỗ trợ cho hệ thống khảo sát quảng
cáo…
PHẦN 2: ỨNG DỤNG PHÂN TÁN VÀ XỬ LÝ SONG SONG VỚI
WCF SERVICE
1. Mô tả chương trình
Một máy tính client bên ngoài create request đến Server (Server A) thông
qua WCF service. Server sẽ xử lý một phần công việc sau đó sẽ tạo ra nhiều
thread, trong mỗi thread sẽ gửi công việc đến cho một server khác ( Server B).
HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 22/30
Điện toán lưới và đám mây GVHD: PGS.TS Nguyễn Phi