Bài viết được gắn thẻ: mã

Văn phòng lưới máy tính sử dụng môi trường ảo - Phần 4

, thứ Sáu ngày 04 tháng 12 năm 2009 11:59

Giới thiệu

Tôi làm việc trong một công ty mà chúng tôi chạy nhiều công việc hàng loạt chế biến hàng triệu bản ghi dữ liệu mỗi ngày và tôi đã suy nghĩ gần đây về tất cả các máy ngồi xung quanh mỗi ngày và không làm gì trong vài giờ. Nó sẽ không tốt nếu chúng ta có thể sử dụng những máy móc để tăng cường sức mạnh xử lý của hệ thống của chúng tôi? Trong tập hợp các bài viết này, tôi sẽ xem xét các lợi ích tiềm năng của việc sử dụng một văn phòng lưới điện bằng cách sử dụng môi trường ảo hóa.

Trong phần 3, chúng tôi tạo ra máy chế biến ảo của chúng tôi và thiết lập cửa sổ máy để trở thành công nhân có thời gian nhàn rỗi.

Chạy mã mới nhất

Chắc chắn sau khi tạo nhân viên logic kinh doanh của bạn sẽ thay đổi, lỗi sẽ được tìm thấy, mã nhanh hơn hiệu quả hơn sẽ được sản xuất do đó để lại nhân viên của bạn ngồi xung quanh xử lý dữ liệu bằng cách sử dụng cũ đang có mùi . Làm thế nào sau đó chúng tôi đảm bảo rằng chúng tôi luôn sử dụng phiên bản mới nhất và lớn nhất của các kịch bản xử lý của chúng tôi?

Có một vài cách dễ dàng đơn giản, chúng ta có thể làm điều này, thủ đoạn này, tuy nhiên, là để giảm sức mạnh xử lý và mạng lưới giao thông trong việc đạt được điều này. Cho phép bắt đầu với các giải pháp đơn giản và cải thiện từ từ trong một vài lặp đi lặp lại.

Phương pháp đầu tiên là chỉ đơn giản là kết nối với máy chủ kiểm soát công việc của chúng tôi (qua samba, FTP, hoặc tương tự) và kéo xuống các phiên bản mới nhất của mã này. Không phải rất hiệu quả, nhưng nó sẽ làm công việc. Cho phép cải thiện phần nào, làm thế nào về việc tạo ra một kịch bản rsync và sử dụng mà mỗi lần thay vì? Ngoài ra những gì về việc đưa kịch bản xử lý mới nhất của chúng tôi vào lật đổ kiểm tra ra các mã ban đầu và sau đó chỉ cần cập nhật mã của chúng tôi trên mỗi run ( svn cập nhật )

Cuối cùng, chúng ta có thể kết thúc với một kịch bản bash (được gọi là định kỳ mỗi 10 phút) có vẻ đơn giản như sau:

  # / Bin / sh
 nếu ps ax | grep-v grep | grep php > / dev / null
 sau đó
     echo "công việc hiện đang được chế biến, xuất cảnh"
 khác
     echo "Công việc không chạy, bắt đầu ngay bây giờ"
     cd / path / to / / sao chép
     svn cập nhật
     php yourJobProcessingScript.php
 fi 

Bây giờ chúng ta có thể chắc chắn rằng với mỗi lần chạy, chúng tôi chắc chắn đang chạy mã mới nhất. Chúng tôi đảm bảo điều này bằng cách cập nhật cơ sở mã của chúng tôi thời gian và chúng tôi thực hiện một hoạt động và giảm lưu lượng mạng bằng cách chỉ chuyển sự khác biệt tập tin trên mạng của chúng tôi.

Trong thiết lập trình diễn của tôi, tôi đã làm chính xác như trên. Subversion được cài đặt trên máy chủ xử lý công việc của tôi và tôi chỉ đơn giản là kéo mã mới nhất từ ​​một chi nhánh của công nhân bằng cách sử dụng 'svn các bản cập nhật'. Tôi cũng đã thêm một thẻ số phiên bản để xử lý kịch bản của tôi được trả lại cho cơ sở dữ liệu như là một phần của sự trở lại kết quả. Bằng cách này tôi có thể thấy rằng mã của tôi đã được cập nhật mỗi khi tôi sao chép thân của tôi vào các nhân viên, tức là chi nhánh mà tôi chắc chắn chạy kịch bản xử lý mới nhất.

Sử dụng dữ liệu mới nhất

Nếu xử lý công việc của bạn làm cho việc sử dụng các nguồn dữ liệu sau đó tại một số điểm sẽ được cập nhật quá. Trừ khi bạn gọi các nguồn dữ liệu của bạn trên một cơ sở rất thường xuyên bạn sẽ làm tràn ngập hệ thống mạng của bạn với lưu lượng truy cập càng sớm như công nhân của bạn bắt đầu chạy tất cả mọi thứ bế tắc. Đối với giải pháp của tôi, tôi quyết định rằng tôi muốn để di chuyển các nguồn dữ liệu của tôi xung quanh với máy ảo của tôi.

Giữ bạn là con ngựa đó! Nguồn dữ liệu của tôi là gì HUGE? Vâng điều này thực sự là một trường hợp của bao nhiêu dữ liệu chúng ta đang nói? Nó có thể là tiết kiệm chi phí hiệu quả để cài đặt một ổ đĩa cứng bổ sung lớn hơn vào mỗi máy hơn là mua một máy chủ xử lý bổ sung. Đây là một câu hỏi của ngân sách và kinh doanh để quyết định. Nó có thể đó là nguồn dữ liệu của bạn là quá lớn nên không khả thi để giữ cho rằng số lượng dữ liệu trong các máy nhân viên của bạn. Trong trường hợp đó bạn sẽ làm gì? Vâng, chúng tôi có thể nhìn vào gọi một máy chủ dữ liệu địa phương, nhưng điều này có thể gây ra các vấn đề với mạng. Trong trường hợp này, một hệ thống lưới điện như thế này có thể trở thành không thực tế để bao gồm trong môi trường văn phòng của bạn. Nó cũng có thể là bạn có thể nhìn vào các chiến lược thay thế chạy, ví dụ như chỉ kêu gọi công nhân của bạn 20:00-06:00 mỗi đêm và / hoặc nguồn dữ liệu yêu cầu throttling.

Di chuyển trên cho phép nói rằng số lượng nguồn dữ liệu của chúng tôi đến 100GB dữ liệu. Cũng có khá một chút dữ liệu để di chuyển xung quanh mạng cập nhật. Làm thế nào chúng ta sẽ đảm bảo rằng chúng tôi có bản sao mới nhất của các dữ liệu trong trường hợp này? Rsync là một khả năng, nhưng cá nhân tôi nghĩ rằng bằng cách chạy nguồn dữ liệu mới nhất của bạn trên máy chủ xử lý công việc của bạn và thiết lập này lên như là một bậc thầy trong nhân rộng (với một bản ghi bin tốt đẹp lâu dài) có thể là cách để đi:

nhân rộng Bằng cách thiết lập mỗi công nhân của bạn như là một nô lệ các bản cập nhật máy chủ kiểm soát công việc để nguồn dữ liệu của bạn sẽ chảy xuống độc đáo cho người lao động của bạn mà không có một sự gia tăng rất lớn trong hoạt động mạng (có nghĩa là trừ khi bạn thực hiện một cập nhật dữ liệu rất lớn và tất cả các công nhân đá trong cùng một lúc). Điều này có lợi thế hơn rsync trong đó bạn sẽ không nhận được một lúc ngập ngừng trước khi mỗi công việc, như các bản cập nhật cơ sở dữ liệu, mysql daemon nhân viên của bạn sẽ liên tục cập nhật dữ liệu của nó khi xử lý vẫn tiếp tục.

Điều này là làm thế nào tôi thiết lập máy chủ trình diễn của tôi. Để thiết lập sao chép theo hướng dẫn trên trang web mySQL ( Thiết lập sao chép ) và trong vòng 20 phút tôi đã có nhân viên inital của tôi sao chép các tập dữ liệu máy chủ kiểm soát công việc. Đối với mỗi người lao động bổ sung các thiết lập sao chép và quá trình làm việc mỗi khi VM đã được sao chép.

Tóm tắt thông tin

Trong phần này của bài viết chúng tôi đã xem xét cách dễ dàng và không đau là để giữ cho mã xử lý của bạn cập nhật bằng cách using rsync hoặc subverion (SVN) để làm công việc và làm giảm lưu lượng mạng tại cùng một time. Chúng tôi cũng thảo luận làm thế nào để giữ cho nguồn thông tin dữ liệu của bạn up-to-date bằng cách cho phép nó chảy xuống cho mỗi công nhân của bạn. Vì vậy chúng tôi khu vực đảm bảo rằng chúng tôi tiếp tục với logic kinh doanh và thông tin trong hệ thống mạng lưới văn phòng của chúng tôi. Rõ ràng là sẽ có vô số lựa chọn thay thế để thực hiện các nhiệm vụ này, nhưng ở đây là hai ví dụ đơn giản để hiển thị một giải pháp dễ dàng để đi qua.

Tiếp theo thời gian

Trong phần cuối cùng của loạt bài này, aptly tên là Phần 5 , chúng tôi sẽ thảo luận về việc triển khai hệ thống này. Tôi sẽ tóm tắt những gì đã học được và những gì tôi quản lý để tạo ra.













Panorama Theme theo Themocracy

8 trực tuyến tại khách truy cập
7 khách, 1 bots, 0 thành viên
Max khách truy cập hôm nay: 13 lúc 09:36 am UTC
Tháng này: 40 23-05-2012 03:33 am UTC
Năm nay: 69 27-02-2012 09:56 am UTC
Tất cả thời gian: 130 28-03-2011 10:40 pm UTC