Những kỹ thuật nâng cao hỗ trợ lập trình

Một phần của tài liệu CNTT1001 (Trang 81)

Trong khi các cơng cụ và mơ hình lập trình này là cực kỳ hữu dụng (bằng chứng là một trong số chúng đã được sử dụng rộng rãi trong thực tế), tuy nhiên chúng vẫn cịn đang được phát triển để nâng cao hiệu năng và tính linh họat. Mặc dù chúng ta cĩ thể xây dựng chi tiết các ứng dụng bằng cách sử dụng các mơ hình và dịch vụ phổ biến, cấp thấp, nhưng cũng phải hướng tới mục tiêu thực hiện các cơng việc này sao cho dễ nhất cĩ thể. Chúng ta sẽđề cập đến một số khả năng của sự hỗ trợ lập trình cấp cao.

3.4.1. Các k thut truyn thng

Trong khi các ứng dụng được sự hỗ trợ của mơ hình chia sẽ bộ nhớ khơng cịn hiệu quả trong Grid, thì vẫn cịn một số các kỹ thuật hỗ trợ truyền thống khác cĩ thểđược áp dụng vào trong Grid.

• Đan xen tính tốn với việc giao tiếp : Điều này địi hỏi khi trao đổi thơng tin phải cĩ một sự lưu ý để khi biết được khi nào thì các dữ liệu

http://etrithuc.vn

biên cĩ thể được trao đổi trong khi cơng việc tính tốn vẫn được thực hiện trên đường biên.

• Kết hợp thơng tin : Việc trao đổi thơng tin sẽ trở nên hiệu quả hơn nếu ta kết hợp nhiều thơng điệp nhỏ lại trước khi gửi.

• Nén : Vấn đề về băng thơng và độ trễ sẽ được giải quyết phần nào nếu ta áp dụng những phương pháp nén dữ liệu hiệu quả trong quá trình trao

đổi thơng tin.

• Điều chỉnh giao thức : Các ứng dụng sẽ gia tăng hiệu năng giao tiếp nếu bằng cách điều chỉnh lại các tham số của giao thức trao đổi thơng tin, như kích thước của gĩi TCP…

Vấn đề chính yếu ở đây là làm thế nào để áp dụng được các kỹ thuật trên vào trong các cơng cụ và mơ hình lập trình sao cho nĩ hồn tồn trong suốt với người dùng khi thực hiện trên các ứng dụng Grid.

3.4.2. Các k thut hướng d liu

Bên cạnh các kỹ thuật nhằm cải thiện hiệu năng trong quá trình trao đổi thơng tin, các kỹ thuật được áp dụng ở trên cũng hướng tới việc để làm sao thực thi hiệu quả hơn đoạn mã MPI. Vậy các mơ hình bất đồng bộ và khơng chặt chẽ

hơn cĩ thể hỗ trợ như thế nào cho các mơ hình lập trình? Rõ ràng các kỹ thuật hướng dữ liệu cĩ thể giải quyết điều này. Workflow là một ví dụ của mơ hình này. Một ví dụ khác là lập trình theo dịng tin.

Lập trình theo dịng tin cĩ thểđược sử dụng nhằm quản lý truy cập đến nơi lưu trữ các dữ liệu lớn và kết hợp việc xử lý với trao đổi thơng tin theo cách thức phân tán. Việc cùng chỉ định các bộ lọc và các dịng tin trong mơi trường Grid là cả một vấn đề quan trọng. Lập trình theo dịng tin cĩ rất nhiều ngữ nghĩa và thể

hiện rộng lớn. Điều này cĩ liên quan mật thiết đến khái niệm các dịch vụ trao đổi thơng tin cấp cao sẽđược thảo luận ở bên dưới. Các kỹ thuật suy đốn và tối ưu

http://etrithuc.vn

3.4.3. Các k thut suy đốn và ti ưu

Một phương pháp khác nhằm gia tăng bất đồng bộ và linh hoạt trong quá trình thực thi là áp dụng các kỹ thuật suy đốn và tối ưu. Bằng cách hướng sự

tương tự vào sự mơ phỏng các sự kiện rời rạc đã được tối ưu, tính tốn cĩ tính suy

đốn hay tối ưu là một cách làm giảm sự đồng bộ và các yêu cầu giao tiếp bằng cách cho phép sự thực thi mang tính suy đốn giữa nhiều máy trạm (host) với khả

năng sẽ cĩ một vài cơng việc được tính tốn tối ưu sẽ phải bị loại bỏ nếu nĩ khơng dư thừa và khơng tương thích. Mục tiêu là nhằm điều khiển cấp độ tối ưu sao cho phát huy tối đa lợi ích của việc thực thi khơng chặt chẽ trong khi làm giảm tối đa các tính tốn gây lãng phí.

3.4.4. Các k thut phân tán

Vẫn cịn một kỹ thuật khác là phân phối các xử lý lên dữ liệu. Khi đi sâu tìm hiểu về Grid, ta thấy các kiến trúc tiềm ẩn phức tạp, các phương pháp ngơn ngữ dữ liệu song song đồng bộ hĩa rõ ràng là khơng thích hợp. Giả sử khơng quan tâm đến các yêu cầu về tính đồng bộ hĩa và trao đổi thơng tin với nhau, thì các kỹ

thuật phân tán đạt được băng thơng rất cao giữa dữ liệu cục bộ và xử lý.

Bên cạnh Grid, các kỹ thuật cơ bản này đã được áp dụng trong nhiều trường hợp khác. Mơ hình macroserver sử dụng phương pháp được phân hoạch tốt và hướng thơng điệp, và tiếp tục được phát triển để hỗ trợ kỹ thuật PIM (Process-in- memory) trong thiết kế kiến trúc HTMT (Hybrid Technology Multithreaded Architecture).

Một phương pháp tương tự cĩ thểđược suy ra từ mơi trường Grid, nhưng ở

một cấp độ hồn tồn khác. Kiến trúc Grid Datafarm được thiết kế để khai thác việc truy cập cục bộ bằng cách sắp xếp các chương trình trên tồn các đĩa phân tán với quy mơ lớn. Điều này nhằm gia tăng sự kết hợp chặt chẽ giữa khả năng lưu trữ

http://etrithuc.vn

3.4.5. Nhp xut hướng Grid

Trong khi các hệ thống nhập xuất chỉ tập trung vào việc di chuyển dữ liệu, thì rõ ràng nĩ cĩ ảnh hưởng rất lớn đến cách thức chương trình được viết. Mặc dù các tập tin Grid Datafarm được phân bố trên các đĩa nhưng nĩ cĩ thể được mở,

đọc, và ghi như là một tập tin duy nhất.

3.4.6. Các dch v giao tiếp cp cao

Các mơ hình lập trình khả thi cĩ thể phụ thuộc vào sự hỗ trợ của cơ sở hạ

tầng hiện cĩ. Các dịch vụ trao đổi thơng tin cấp cao là một phần của cơ sở này. Khái niệm “các dịch vụ trao đổi thơng tin cấp cao” ở đây cĩ thể là bất cứ ngữ

nghĩa nào ngịai khả năng trao đổi một chiều đơn giản nhưng đáng tin cậy từđiểm A đến điểm B, hay thậm chí là multicast dữ liệu. Vì thế bất cứ những gì cấu tạo nên các dịch vụ này đều được định nghĩa khá rộng và được thúc đẩy phát triển bởi nhiều yếu tố khác nhau

Trong tính tốn lưới, nắm vững và sử dụng được các topo mạng sẽ càng ngày càng quan trọng, bởi vì tất cả các hiệu năng của Grid sẽ bị chi phối phần lớn bởi độ trễ của đường truyền, điều này cĩ nghĩa là trong 5 đến 10 năm tới hay hơn nữa, băng thơng của mạng sẽđược mở rơng hơn nhưng tương ứng sẽ khơng ngắn hơn (do sự giới hạn của độ trễ). Để duy trì được hiệu năng, các cơng cụ lập trình như MPI sẽ phải quan tâm hơn đến topo của mạng. Một ví dụ của cơng cụ này là MagPIe. MagPIe hỗ trợ một cách trong suốt cho các cluster trên mạng diện rộng bằng cách giới hạn tối đa sự truyền dữ liệu cho các thao tác tổng hợp trên các

đường truyền yếu. Các thao tác này thay vì chịu ảnh hưởng bởi O(nlogn) thơng

điệp đi quan tồn bộ đường kính của mạng như truớc, thì giờ đây nĩ chỉ là đường kính trung bình của mạng.

Một động cơ thúc đẩy khác cho các dịch vụ trao đổi thơng tin cấp cao là nhu cầu của các thuộc tính giao tiếp cơ bản khác nhau. Một nhĩm multicast truyền thống xây dựng một bản định tuyến thích ứng và được định hướng bởi các topo mạng vật lý. Việc định tuyến dựa vào nội dung sẽ cho phép ứng dụng điều khiển

http://etrithuc.vn

lịch trình trao đổi, định tuyến dựa trên các yêu cầu cơ bản của chương trình bên trong một nhĩm multicast đã cho, hơn là chỉ đơn thuần trao đổi thơng tin một-một. Tất nhiên thiết kế này địi hỏi phải theo topo ở một dạng nào đĩ.

Vì thế các dịch vụ trao đổi thơng tin cĩ thểđược phân thành nhiều lọai. Một trong số chúng chỉ thực sự hiệu quả khi kiến trúc cĩ định hướng theo topo mạng, trong khi những cái khác thì khơng cĩ trong bất cứ trường hợp nào.

Làm tăng ng nghĩa thơng tin : Cịn hơn là trao đổi cách thức định tuyến cơ bản, và hơn nữa, hầu hết cĩ thể làm tăng khả năng trao đổi thơng tin mà chỉ cần thêm vào một vài tính năng. Một vài cách phổ biến như dùng cache, bộ lọc, nén, mã hĩa, chất lượng dịch vụ, chuyển mã dữ

liệu hay các chức năng được người dùng định nghĩa.

Các thao tác tng hơp : Các ứng dụng cĩ thể yêu cầu các thao tác đồng bộ hĩa, về cơ bản chúng thường thực hiện cùng với một topo thơng tin theo thao tác một-một. Để đạt được hiệu năng trong mội trường mạng diện rộng, việc kết gán các thao tác với các topo được xác định bởi mạng vật lý hay ảo là một điều rất quan trọng.

• Định tuyến da vào ni dung hay chính sách : bằng cách cho phép các

ứng dụng quyết định việc định tuyến dựa vào các trường do ứng dụng

định nghĩa, sẽ tạo ra các tính năng như cơng bố hay đăng ký vào các dịch vụ sự kiện. việc định tuyến dựa vào chính sách cũng là một phương án khả thi khác. Ví dụ như là phải đáp ứng được các yêu cầu của chất lượng dịch vụ (QoS) và các mơ hình bảo tồn thơng điệp trong đĩ phải áp dụng chính sách trên trật tựđến của thơng điệp qua tập hợp các máy trạm cuối.

Phm vi trao đổi thơng tin : Một vài dịch vụ cĩ thể tốn chi phí rất cao để

thực hiện, đặc biệt trên phạm vi lớn. Ví thế nếu một ứng dụng cĩ thể tự định nghĩa phạm vi cho dịch vụ thì cĩ thể sẽ giảm thiểu tối đa vấn đề, từ đĩ làm cho tăng tính khả thi trong việc triển khai dịch vụ. Phạm vi trao

http://etrithuc.vn

đổi thơng tin cĩ thểđược kết hợp với một topo được xác định để cĩ thể

quản lý nhiều phạm vi cho cùng hay các ứng dụng riêng rẽ.

3.4.7. Bo mt

Các ứng dụng cĩ thểđược yêu cầu chứng thực, cấp phép, kiểm tra tính tồn vẹn và tính riêng tư. Trong ngữ cảnh của mơ hình lập trình, điều này cĩ thể đem lại sự phân nhánh thêm. Về cơ bản, bảo mật một-một cĩ thểđược thực hiện bằng cách tích hợp các phương pháp bào mật và cách thức lập trình. Một ví dụ khác là sự kết hợp của SOAP với GSI. Tuy nhiên, trong ngữ cảnh lớn những lời gọi hàm như RMI hay RPC cĩ thể tồn tại trong một cây lời gọi (call tree). Hỗ trợ bảo mật qua cây lời gọi địi hỏi khái niệm delegation of trust.

Ký tên và chứng nhận các giấy phép trên RPC cũng phải được thực hiện sao cho cân bằng với số lượng cơng việc hiện cĩ. Sự quá tải do bảo mật cĩ thể

được quản lý bằng cách thiết lập các domain bảo mật và được ủy nhiệm. Các giấy phép sẽ được phân phối cho các RPC trong domain. Các domain được ủy nhiệm cĩ thểđược dùng để giới hạn các quá tải về bảo mật trên từng RPC.

3.4.8. Dung li

Tính dung lỗi và tin cậy trong các cơng cụ và mơ hình lập trình lưới phần lớn vẫn cịn cần được tiếp tục ngiên cứu. Phạm vi cụ thể của một ứng dụng nào đĩ thì cĩ tính dung lỗi cao hơn so với các phạm vi khác. Tuy nhiên vấn đề là ở chỗ

làm thế nào để cho các mơ hình và cơng cụ tính tốn lưới trở nên đáng tin cậy và ít lỗi hơn. Rõ ràng là cĩ tồn tại sự khác biệt giữa hai tính này trong ứng dụng và trong các mơ hình/cơng cụ lập trình lưới và cũng là đối với chính bản thân cơ sở

hạ tầng Grid.

Một sự khác biệt xa hơn cĩ thể xảy ra giữa khả năng phát hiện lỗi, thơng bào lỗi và phục hồi lỗi. Trong mơi trường Grid phân tán, việc quan trọng là chỉ cần nhận ra khi nào thì cĩ lỗi xuất hiện. Việc truyền các thơng báo đĩ cho các site

http://etrithuc.vn

khác liên quan cũng quan trọng khơng kém. Cuối cùng là các site này phải cĩ khả

năng phục hồi hay làm giảm các ảnh hưởng của lỗi.

Các khả năng này yêu cầu là các mơ hình sự kiện phải được tích hợp vào trong các mơ hình và cơng cụ lập trình lưới. Các mơ hình sự kiện được yêu cầu cho mọi khía cạnh của tính tĩan lưới, như là các bộ phận giám sát hiệu năng. Vì thế việc triển khai các cách thức sự kiện lưới để chúng trở nên sẵn sàng là một

điều cần thiết. Cách sử dụng các phương pháp như vậy sẽ là yếu tố cốt lõi cho các mơ hình tính tốn đáng tin và dung lỗi.

Một thí dụ cho vấn đề trên, hãy xem phương pháp Grid RPC. Về cơ bản một RPC cĩ một lời gọi và trả về trong cây lời gọi, nhưng cũng cĩ thể cĩ hủy và từ

chối. Trong một chuỗi RPC đồng bộ, phải theo hủy và từ chối theo một đường tuyến tính. Tuy nhiên trong nhiều RPC bất đồng bộ thì chúng cĩ thểđi theo nhiều nhánh. Từ chối cũng cĩ thể thực hiện trên nhiều nhánh khác.

Vì thế cách thức Grid RPC rõ ràng là cần một dịch vụ sự kiện để quản lý các thao tác hùy và từ chối. Điều này rất quan trọng trong việc thiết kế và cài đặt phương pháp RPC mang tính dung lỗi, nghĩa là phương pháp mà trong đĩ bất cứ

các thao tác bất thường nào cũng đều được xác định trong một khoảng thời gian nào đĩ và được cảnh báo, nhớ đĩ mà các dịch vụ GPC cĩ thể xĩa các trạng thái khơng cịn thích hợp.

Trong khi trường hợp đơn giản nhất (mà cũng cĩ thể là phổ biến nhất) của việc hủy sẽ liên quan đến RPC được thực hiện trên một sự kiện phân phối đơn theo một-một, thì việc hủy tồn bộ RPC là điều hữu ích. Trong trường hợp này, RPC cĩ thểđược xem như là một nhĩm tiến trình. Một nhĩm tiến trình như vậy cĩ thể bao gồm một nhánh hoạt động của cây lời gọi, một cây lời gọi song song với một nút gốc, hay là một hay nhiều nhánh của cây lời gọi khơng chứa nút gốc.

Việc hủy trên tồn bộ nhĩm tiến trình cĩ thể được thực hiện theo các sư

kiện một-một. Tuy nhiên sự kiện thơng báo một-nhiều hay một vài-nhiều sẽ làm cho tồn bộ nhĩm bị hủy nhanh hơn. Những sự kiện thơng báo nhĩm như vậy cĩ

http://etrithuc.vn

thể được thực hiện bởi các thành viên trong nhĩm hay bởi giao diện publish/subcribe nhờ đĩ mà các máy chủ RPC từ xa cĩ thểđăng ký vào để hủy các sự kiện của các nhĩm tiến trình trên các ROC khác.

3.4.9. Các siêu mơ hình và h thng thi gian thc hướng Grid

Cịn một vấn đề khác trong các mơ hình lập trình lưới là khái niệm về các siêu mơ hình và ứng dụng của nĩ trong hệ thống thời gian thực hướng Grid. Bất kể

người ta đã triển khai Grid như thế nào, thì chúng cũng sẽ bao gồm các thành phần và dịch vụ cốđịnh hay tùy biến. Một vài trong số chúng sẽđược sử dụng rộng rãi và trở nên phổ biến. Vì thế, nhiều ứng dụng sẽ được xây dựng tồn bộ hay một phần bằng cách kết hợp các thành phần và dịch vụ khác.

Làm sao việc kết hợp như vậy cĩ thể được thực hiện một cách tựđộng mà vẫn đạt được hiệu năng cao bên cạnh các yếu tố như bảo mật và dung lỗi? Điều này chỉ cĩ thể được thực hiện khi cĩ sự xuất hiện của một khái niệm là siêu mơ hình, cho phép định nghĩa các thuộc tính và tính chất của các thành phần. Các siêu mơ hình này cĩ thểđược thực hiện bằng tay hay một cách tựđộng

Chính vì thế các trình biên dịch và các cơng cụ kết hợp cĩ thể chịu trách nhiệm tạo ra các siêu mơ hình và sử dụng chúng để nhận ra và thúc đẩy các sự kết hợp hợp lý khác. Khái niệm ‘hợp lý’ ở đây khơng chỉ cĩ nghĩa đơn thuần là các

Một phần của tài liệu CNTT1001 (Trang 81)

Tải bản đầy đủ (PDF)

(153 trang)