Warning: fopen(/homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/gt-cache/vi/_vi_tag_batch) [function.fopen]: failed to open stream: Disk quota exceeded in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1183

Warning: flock() expects parameter 1 to be resource, boolean given in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1184

Warning: fwrite(): supplied argument is not a valid stream resource in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1188

Warning: fclose(): supplied argument is not a valid stream resource in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1190
Evilprofessor.co.uk »hàng loạt

Bài viết được gắn thẻ: hàng loạt

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.

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

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

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.

Là một PHP phát triển, tôi sẽ sử dụng các công cụ mà tôi sử dụng mỗi ngày cụ thể là, Linux, mySQL , PHP, VirtualBox và lật đổ (SVN). Tuy nhiên tôi hy vọng hướng dẫn này sẽ thích ứng với ngôn ngữ và các công nghệ khác chỉ là tốt.

Các giải pháp tôi cung cấp sẽ được dựa trên các loại chế biến chúng ta cần phải đạt được tuy nhiên điều này có thể không đúng sự thật thông qua toàn bộ bài viết như tôi sẽ thay đổi mọi thứ để đơn giản, hoặc để sản xuất các kịch bản sử dụng thú vị hơn.

Những môi trường ảo hóa sẽ chạy trên cửa sổ máy vì đây là những gì đa số các văn phòng chạy. Việc xử lý các máy văn phòng không nên can thiệp với nhân viên bằng cách sử dụng các máy, nên không cần bảo trì máy tính, và có thể dễ dàng triển khai cho các máy tính mới khi chúng trở nên có sẵn. Ngoài ra, các máy ảo mới không yêu cầu bất kỳ cấu hình bổ sung như điều này làm giảm đáng kể khả năng mở rộng và dễ dàng mà tại đó các hệ thống lưới điện có thể được mở rộng.

Tại sao Triển khai một lưới máy tính văn phòng?

Trước hết bạn có thể nghĩ, tại sao không chỉ sử dụng một nguồn tài nguyên điện toán đám mây như nền tảng EC2 của Amazon ? Vâng, lý do có thể là một số, ví dụ:

  • Bạn sẽ không ủy thác cho các dữ liệu nhất định đến một môi trường điện toán đám mây
  • Bạn không thể đưa dữ liệu nhất định vào một môi trường điện toán đám mây vì lý do pháp lý (dữ liệu ví dụ như rời khỏi đất nước), có khả năng vì lý do pháp lý, ví dụ như NHS hồ sơ.
  • Bạn muốn giữ các đơn vị của bạn xử lý đóng và có toàn quyền kiểm soát phần cứng
  • Bạn không có quỹ dự án để chạy các trường hợp đám mây
  • Văn phòng của bạn không có một kết nối Internet và do đó không phải của nó có thể sử dụng một nguồn tài nguyên điện toán đám mây
  • Bạn không thích mưa, những đám mây cho mưa, do đó bạn giữ tốt ngay

Tôi chắc rằng danh sách có thể tiếp tục, nhưng tôi nghĩ rằng đó là đủ cho bây giờ.

Ưu điểm của một Grid Computing Office

Vâng, cho phép làm một số toán học (và trong phong cách vật lý thực sự cho phép làm cho một số giả định sâu rộng). Hãy tưởng tượng bạn có xử lý máy chủ lớn lực lưỡng chạy 100 việc làm mỗi ngày. Trong văn phòng của bạn, bạn có 50 máy là 16 giờ một ngày nhàn rỗi, các máy này là 10% như mạnh mẽ như cắt đứt xử lý lực lưỡng của bạn. (Tất cả các kết quả ở đây được làm tròn để đánh giá thấp gia tăng hiệu suất).

Vì vậy, 1 máy * 10% công suất * 2/3 thời gian = 0,067 tức là 1 máy tính để bàn chế biến trong thời gian nhàn rỗi có thể xử lý 6 công ăn việc làm đầy đủ mỗi ngày.

Nếu bây giờ bạn mở rộng này lên phải mất 15 máy tính để bàn nhàn rỗi để xử lý công việc như nhiều người mỗi ngày xử lý máy chủ chính của bạn.

Vì vậy, trong văn phòng của chúng tôi giả vờ của 50 máy, chúng tôi có thể làm tăng sức mạnh xử lý của chúng tôi từ 1 máy chủ lên đến 4 máy chủ xử lý đầy đủ, hoặc chúng tôi có thể được chế biến 400 việc làm mỗi ngày thay vì 100.

Thông báo, không có đầu tư phần cứng mới, công ty của bạn vừa tăng công suất chế biến hàng loạt của nó 4 lần! Có khả năng bạn sẽ tăng sử dụng năng lượng của bạn nhưng hầu hết các môi trường văn phòng tôi đã được cho các máy còn lại trên qua đêm nào, vì vậy bạn có thể thấy điều này như một sáng kiến ​​màu xanh lá cây.

Lợi thế khác cũng có nghĩa rằng đầu tư mới hoặc cập nhật các máy chủ xử lý có thể được trì hoãn nếu máy văn phòng của bạn là đủ và khi bạn cải thiện sức mạnh của máy văn phòng của bạn lưới văn phòng của bạn trở nên mạnh mẽ hơn, tự động.

Công nghệ

Những gì bạn cần? (Hay đúng hơn tôi đã sử dụng những gì):

  • Máy văn phòng nhàn rỗi (trong trường hợp của tôi, một phụ tùng máy tính xách tay Windows XP)
  • VirtualBox (hoặc khách hàng phần mềm ảo hóa khác)
  • Một máy ảo với PHP, mySQL running chạy cắt giảm hệ điều hành, tôi kêu gọi các máy chủ của tôi khập khiễng :)
  • Việc để chạy
  • Công việc máy chủ (có thể là một máy ảo một nơi nào đó)

Điển hình Việc làm

Các loại công việc mà hệ thống này được thiết kế để chạy như sau:

  • Hệ thống nhận được một danh sách các dữ liệu khi mà chúng ta cần để phù hợp và trả lại kết quả
  • Kết hợp liên quan đến việc kiểm tra / tìm kiếm dữ liệu nguồn một số (khá tĩnh)
  • Kết quả từ các nguồn dữ liệu có thể yêu cầu xác nhận thêm, sáp nhập, kiểm tra các nguồn dữ liệu bổ sung để đáp ứng với kết quả
  • Dữ liệu được trả về với các bản ghi phù hợp, đầy đủ xác nhận và xử lý
  • Mỗi bản ghi trong một công việc độc lập với phần còn lại

Vì vậy, về cơ bản chúng tôi đang tìm kiếm cái chạy các công việc có yêu cầu một hỗn hợp của cơ sở dữ liệu tra cứu và một số crunching số, một kịch bản khá điển hình trong một môi trường kinh doanh.

Giải pháp mạng lưới không chỉ thuận lợi cho chế biến công việc của loại này. Về cơ bản, bất kỳ quá trình có thể được chia thành các đơn vị độc lập có thể được chạy song song. Xem wikipedia cho các ví dụ và biết thêm thông tin: Điện toán lưới , nhưng một vài ví dụ nổi tiếng là Seti @ HomeBIONC . Có khuôn khổ để chạy các lưới điện toán, và đây cũng có giá trị xem xét.

Những gì chúng ta sẽ đạt được?

Đến cuối những bài viết này, tôi hy vọng rằng việc triển khai một mạng lưới văn phòng không cần phải là cực kỳ đắt tiền hoặc tốn thời gian. Tôi sẽ thảo luận:

  • Thiết lập hệ thống kiểm soát công việc, công việc cấu hình
  • Tạo một máy xử lý thích hợp ảo
  • Làm thế nào để thiết lập các hệ thống trên một máy cửa sổ
  • Đảm bảo bạn đang sử dụng mã mới nhất và dữ liệu
  • Triển khai và điểm chuẩn
  • Nhìn về phía trước

Tôi sẽ xây dựng (ok tôi được xây dựng, sau đó viết này) là một ứng dụng ví dụ để kiểm tra các khái niệm trên một máy địa phương sử dụng Windows XP và GridMachine 'máy ảo của tôi. Công việc máy chủ kiểm soát của tôi sẽ là máy chính của tôi mà chạy Fedora 11 .

Này không có nghĩa là để chứng minh một hệ thống hoàn toàn làm việc mạnh mẽ, có nghĩa là một cuộc biểu tình và thảo luận cho thấy rằng những điều này có thể đạt được trong một không gian ngắn hợp lý thời gian và chi phí ít. Xin vui lòng gửi cho tôi bất kỳ ý kiến, chỉnh sửa, hoặc cải tiến và tôi sẽ làm hết sức mình để giữ cho bài viết này cập nhật cho phù hợp.

Tiếp theo thời gian

Trong phần 2 tôi sẽ bắt đầu bằng cách nhìn vào hệ thống điều khiển công việc, và nhìn vào công việc nên được cấu hình để đạt được số tiền lớn nhất của chế biến trong khi đảm bảo rằng mỗi công việc được xử lý mà không thất bại.

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

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

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 1, tôi đã đưa ra một cái nhìn tổng quan của hệ thống và công nghệ sẽ được sử dụng cũng như thảo luận một số trong những lý do tiềm năng, tại sao bạn sẽ muốn tạo ra một mạng lưới văn phòng.

Công việc kiểm soát

Nếu bạn đang chạy công việc sau đó bạn sẽ cần một số cách để quản lý chúng. Hệ thống (trên máy chủ công việc của bạn) kiểm soát công việc của bạn cần được thực sự cũng nghĩ ra ngay cả trước khi cố gắng chạy một mạng lưới văn phòng. Vì vậy, trước hết, nhiệm vụ cho một hệ thống kiểm soát công việc là gì:

  • Đưa ra công việc theo yêu cầu của người lao động
  • Yêu cầu người lao động những gì loại của công việc để chạy
  • Theo dõi công việc
  • Đảm bảo rằng công việc chỉ chạy một lần
  • Cung cấp dữ liệu việc làm cho người lao động, hoặc ít nhất là nói với họ để có được nó

Hệ thống này cũng cần phải được mở rộng, một giải pháp mà làm việc cho một trường hợp duy nhất có thể được mở rộng để chạy một số loại công việc khi doanh nghiệp nhìn thấy giá trị trong một giải pháp lưới. Ví dụ, công việc có thể đạt được ưu tiên, nhiều hơn một loại hình làm việc có thể tồn tại (tức là một số cơ sở mã), cuối cùng bạn thậm chí có thể chạy một số máy công nhân khác nhau được tối ưu hóa cho từng loại công việc (mặc dù điều đó không di chuyển ra khỏi người lao động chung chung ' 'ý tưởng). Luôn luôn cố gắng để suy nghĩ về tương lai khi phát triển hệ thống, một tầm nhìn ngắn hạn có thể dẫn đến thất vọng dài hạn và tăng thời gian phát triển.

Công việc máy chủ

Chúng tôi sẽ cần một nơi nào đó để kiểm soát công việc của chúng tôi, điều này sẽ là hệ thống duy nhất trong mạng lưới của bạn có một bộ định vị tài nguyên cố định, là một địa chỉ IP, tên máy, URL (bằng cách sử dụng nội bộ DNS), ... Điều này là do người lao động cần phải biết nơi để tìm việc làm, công nhân cần phải tìm ra hệ thống kiểm soát công việc (không hệ thống điều khiển công việc tìm thấy những công nhân).

Các máy chủ bản thân công việc không thực sự có một nhiệm vụ phức tạp (trong một hệ thống cơ bản dù sao đi nữa), nó cần để lưu trữ một danh sách việc làm, bàn tay ra việc làm, nhận kết quả, và sau đó lưu trữ chúng để thu hồi sau. Làm thế nào các bộ phận này (chẳng hạn như 'tay ra công ăn việc làm ") được định nghĩa có thể là rất cơ bản. Sau đó, chúng tôi có thể mở rộng hệ thống để bao gồm một giao diện quản trị để thêm, chỉnh sửa, xóa, đình chỉ công việc nhưng điều này vượt ra ngoài tập thể dục này.

Có là không có lí do gì sau đó là máy chủ công việc của bạn không có thể là một máy ảo đang chạy trong máy chủ xử lý chính của bạn cung cấp nó không thoát nước quá nhiều tài nguyên từ nó. Tuy nhiên, các máy chủ công việc không cần sẵn sàng cao, nếu nó đi vào một buổi tối bạn sẽ mất cả một ngày cuối tuần chế biến, có khả năng chi phí cho bạn một vài tuần giá trị của thời gian xử lý (khi so sánh với máy chủ xử lý chính của bạn một mình) . Bạn có thể muốn xem xét việc đặt máy chủ công việc của bạn trên một môi trường cân bằng tải cho sẵn sàng cao.

Cơ bản cài đặt

Thiết lập cơ bản cho máy chủ công việc của chúng tôi sẽ bao gồm những gì tôi đang kêu gọi một trong các máy chủ khập khiễng của tôi (đó là Li nux, m ySql, P HP). Đang chạy trên công nhân Thea thực sự sẽ làm việc ra những công việc nó có thể chạy bằng cách tương tác với với cơ sở dữ liệu hệ thống điều khiển công việc. Sau đó chúng ta có thể tạo ra một dịch vụ web và bàn tay thực sự ra công ăn việc làm hơn là có người lao động làm các công việc khó khăn, bản thân, nhưng bây giờ chúng tôi sẽ tiếp tục sử dụng các nguyên tắc KISS (Hãy giữ nó đơn giản, Stupid).

Vì vậy, cho phép tạo ra ba bảng mySQL để đối phó với công việc. Đây sẽ là công việc `,` jobRecords `, và` jobResults `.

Việc bảng Ở đây tôi đang sử dụng SQL Buddy một chút thay thế tuyệt vời để phpMyAdmin chỉ vì nó dễ dàng hơn để cài đặt trên CentOS (đối với những người khác nhìn thấy: 10 Đại lựa chọn thay thế để phpMyAdmin )

Bảng này bao gồm 5 lĩnh vực đơn giản,

  • id: Độc đáo xác định các công việc
  • name: có thể là một tài liệu tham khảo khách hàng, hoặc bất kỳ số nào của định danh khác
  • Tình trạng: Bạn cần phải biết công việc, ví dụ như
    • 0: Không bắt đầu
    • 1: chọn
    • 2: Đã hoàn thành
  • started_by: Ai bắt đầu làm công việc? Điều này không hoàn toàn bắt buộc nhưng là một tốt đẹp để có. Tôi muốn đề nghị nhân viên theo dõi địa chỉ IP của họ trên mạng của bạn
  • started_at: Khi nào công nhân bắt đầu công việc? Bằng cách theo dõi các công việc không hoàn tất trong vòng X số lượng thời gian chúng ta biết chúng ta cần nhận công việc một lần nữa và bắt đầu chế biến bằng cách công nhân khác. Người lao động có thể ngăn chặn xử lý / đi offline cho bất kỳ số lý do mất điện, tai nạn, mất mạng.

Nó rất dễ dàng bảng này có thể được mở rộng với một vài trường bổ sung cho phép theo dõi số liệu thống kê, kết thúc cột một thời gian để xem bao lâu công việc, một truy cập để xem có bao nhiêu công nhân được các công việc (rõ ràng điều này cần phải có xu hướng 1), công việc ưu tiên, danh sách có thể đi và về. Trong kịch bản công việc phức tạp hơn, nó sẽ có thể xác định bao nhiêu bộ nhớ người lao động sẽ cần truy cập vào (và do đó chỉ sử dụng lao động thích hợp), hoặc thậm chí của người lao động sẽ được yêu cầu.

Cho phép thêm một số công việc ví dụ:

ví dụ công việc

Bảng tiếp theo lại là khá đơn giản để hiểu, đây là hồ sơ công việc của chúng tôi. Họ được liên kết với bảng công việc chính của một cột jobs_id `. Làm cho bảng này phụ thuộc rất nhiều vào dữ liệu mà bạn cần phải cung cấp cho công nhân của bạn, cho phép thực hiện một ví dụ rất đơn giản, nơi chúng tôi có bốn cột:

  • id: ID của các hồ sơ
  • tên: tên của Người
  • địa chỉ: địa chỉ của Người
  • jobs_id: ID công việc mà hồ sơ này được liên kết với

Bảng thứ ba và cuối cùng bao gồm một bảng kết quả, nó có nhiều giống như là bảng hồ sơ của chúng tôi, và với việc bổ sung một số cột có thể là một phần của bảng hồ sơ:

  • job_record_id: Liên kết kết quả các bảng công việc
  • Kết quả: dữ liệu kết quả

... Và đó là tất cả những gì bạn cần để kiểm soát công việc! (Mặc dù ở một mức độ rất cơ bản) Trong trường hợp của tôi tôi chỉ ra một bảng dữ liệu của tôi để xử lý được đặt, nhưng điều này có thể chỉ là một cách dễ dàng là một tập tin, các thông số để chạy mã mô phỏng, bạn đặt tên cho nó.

Lựa chọn một công việc

Như đã nêu trước đây, các công nhân sẽ làm quản lý công việc của chúng tôi cho chúng ta bây giờ, vì vậy tất cả chúng ta cần phải thực sự làm là tìm một công việc cần xử lý và có được thông tin. Làm thế nào chúng tôi sẽ làm điều này? Cũng chọn tiêu chí lựa chọn công việc của chúng tôi và tìm kiếm công việc, trong SQL tôi đã làm như sau:

  1. Đi bất kỳ công việc không được đánh dấu đầy đủ nhưng từ nhân viên của chúng tôi và đặt lại (thay thế ME__ __ với một định danh, đơn giản nhất sẽ là địa chỉ IP):
      CẬP NHẬT `công việc` SET `tình trạng` = 0 ở đâu `tình trạng` = 1 AND `started_by` = __ ME__; 
  2. Sử dụng các tiêu chí lựa chọn công việc của chúng tôi, chọn một công việc và cho biết hệ thống kiểm soát mà công nhân này là đối phó với nó:
      CẬP NHẬT `công việc` SET `tình trạng` = 1, `started_by` = __ ME__, `started_at` = NOW () WHERE `tình trạng` = 0 OR
     (`Tình trạng` = 1 VÀ `started_at`> DATE_SUB (NOW (), INTERVAL X Giờ)) ORDER BY `id` ASC; 

    Bởi việc làm lấy mà không trả lại kết quả trong X số lượng thời gian chúng tôi đảm bảo rằng tất cả các công việc được chạy trong trường hợp của một công nhân bị rơi hoặc đi AWOL.

  3. Tiếp theo lấy các chi tiết công việc tiếp theo là các hồ sơ tự:
      SELECT * FROM `công việc` WHERE `started_by` = __ ME__ LIMIT 1;
     Chọn * FROM `job_records NƠI` id `= __ JOBID__; 

Sau khi hoàn thành công việc, chúng tôi ghi chèn kết quả của chúng tôi và đánh dấu công việc là hoàn thành. Hãy nhớ là việc làm có thể tạm dừng / tiếp tục bất cứ lúc nào cho phép một số mạnh mẽ trong kịch bản của bạn. Nó có thể là công việc đình chỉ một nửa thông qua cập nhật hệ thống kiểm soát công việc, do đó, kiểm tra số lượng hồ sơ trong một công việc và số lượng các kết quả được lưu lại hệ thống kiểm soát công việc sẽ là một động thái khôn ngoan.

Ngoài ra, trong khi điều này chứng minh làm thế nào công việc có thể được lựa chọn và quản lý từ một khung truy vấn SQL bạn thực sự cần được trừu tượng hóa kiểm soát công việc của bạn rằng nếu bạn quyết định chuyển sang sử dụng một dịch vụ web, tập tin dựa trên hệ thống, XML , hoặc bất kỳ khác số hệ thống, nó sẽ không ảnh hưởng đến các mã trên nó.

Công việc cấu hình

Các khía cạnh tiếp theo để xem xét là việc làm kích thước và cấu hình. Bằng cách chơi với cấu hình việc làm, chúng ta có thể tấn công một sự cân bằng tuyệt vời giữa tốc độ, quá trình sao chép, và độ tin cậy. Đi một vài kịch bản OFA:

  1. Việc làm mất 1 ngày để chạy: Điều này có nghĩa rằng các nhân viên của bạn cần 15 ngày, kể từ ngày xử lý từng công việc (nhớ 10% năng lượng cho 2/3rds trong thời gian). Điều này rõ ràng không phải là một cấu hình khôn ngoan, quy mô công việc của bạn là cách quá lớn! Nó sẽ mất ít nhất là gấp đôi thời gian để có được một công việc xử lý các nhân viên ban đầu nên đi AWOL (thời gian nhận rằng nó đã không trở về một kết quả cộng với thời gian tái chế). Trong một lý tưởng, bạn muốn có ít nhất một công việc dễ dàng xóa vào cuối mỗi khoảng thời gian nhàn rỗi dài, như vậy bạn tiếp tục công việc đánh dấu trên và trường hợp xấu nhất một công việc sẽ mất hai ngày để xử lý đầu tiên phải đi mất tích.
  2. Việc làm mất 1 phút để chạy: Điều này có nghĩa rằng các nhân viên của bạn mất khoảng 15 phút để chạy từng công việc. Trong khi điều này ban đầu có thể có vẻ lý tưởng, bạn có được chế biến công việc bổ sung trong thời gian ăn trưa, nghỉ uống cà phê, các cuộc họp, kịch bản này đặt thêm căng thẳng trên các lĩnh vực khác của hệ thống của bạn và giới thiệu những vấn đề riêng của mình. Ví dụ, trước hết là thiết lập / chế biến tỷ lệ thời gian của bạn là sẽ đi xuống, do đó mất hiệu quả hệ thống. Mạng của bạn là có được công việc liên tục truyền tải thông tin cho các nhân viên khác nhau bực bội công nhân là đồng ngày của họ sang ngày làm việc. Bạn cũng sẽ căng thẳng hơn trên máy chủ xử lý công việc của bạn vì nó có món ăn ra rất nhiều và rất nhiều phần nhỏ công việc một cách thường xuyên. Cuối cùng, trong tình huống này nếu máy chủ công việc của bạn đi xuống bạn sẽ tạo ra một đăng nhập trở lại rất lớn của các công việc dở dang trong khi công việc lớn hơn có thể tiếp tục chế biến blissfully không biết rằng các máy chủ công việc đã trải qua khó khăn.

Trong thực tế sẽ có cấu hình không có một lý tưởng cho các thiết lập mạng lưới của bạn, phụ thuộc nhiều vào các nguồn lực sẵn có, loại công việc, thời gian yêu cầu thay đổi hoàn toàn công việc, năng lực mạng lưới, và như vậy. Tuy nhiên, một số hướng dẫn sẽ là:

  • Việc làm kích thước mỗi công nhân có thể nhận được thông qua ít nhất 3-4 công việc trong một khoảng thời gian 15 giờ (khoảng thời gian dài nhất có khả năng nhàn rỗi)
  • Chơi với quy mô công việc để thời gian thiết lập trở nên khá đáng kể so với thời gian xử lý (mang trong tâm trí các điểm trên).
  • Nếu một công việc không hoàn thành trong thời gian gấp đôi số tiền (có thể ít hơn), bạn mong đợi nó để hoàn thành nó giả định đào ngũ của nó đi và bắt đầu chế biến với công nhân khác. Điều này có nghĩa là bạn có thể phải chờ đến ba lần chiều dài bình thường của một công việc cho nó để hoàn thành (có thể lâu hơn nếu công việc tiếp theo không thành công). Bạn có thể muốn làm giảm thời gian này, nhưng cẩn thận không để giảm quá nhiều như bạn có thể bắt đầu sao chép các nhiệm vụ xử lý một cách thường xuyên.
  • Công ăn việc làm nên được độc lập của yêu cầu bên ngoài càng nhiều càng tốt. Các máy chủ công việc, ví dụ, chỉ nên được liên lạc ở đầu và cuối của mỗi công việc.
  • Không bão hòa mạng của bạn, điều này sẽ có hai tác động tiêu cực, nhân viên ban ngày của bạn sẽ tìm thấy bằng cách sử dụng các mạng bực bội và các vấn đề có thể được kinh nghiệm với các kết nối thời gian một vấn đề sẽ chỉ trở nên tồi tệ hơn khi bạn quy mô mạng lưới của bạn.
  • Đảm bảo việc làm có thể chạy trên các công nhân của bạn. Nếu công việc trở thành công việc quá bộ nhớ không gian đĩa thâm canh, thâm canh sẽ bắt đầu hủy bỏ và điều duy nhất bạn sẽ nhận thấy sự sụt giảm số lượng công việc xử lý với không có lý do thực sự tại sao.

Trình Kết quả của việc

Khi trình kết quả của một công việc quan trọng là phải kiểm tra rằng các kết quả đã không được cung cấp bởi công nhân khác, đặc biệt là nếu người lao động hiện nay đã không hoạt động một thời gian.

Khi kết quả được cung cấp đảm bảo rằng số lượng kết quả phù hợp với số lượng hồ sơ trong công việc.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

Tóm tắt thông tin

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Next time

In part 3 we'll create our virtual processing machine and set up our windows machines to become idle-time workers.

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

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

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 4, chúng tôi đã sử dụng các công cụ để đảm bảo rằng chúng tôi đang chạy phiên bản mới nhất của các nguồn mã và dữ liệu để kết quả thu được là luôn luôn up-to-ngày với các thông tin kinh doanh mới nhất và logic.

Trước khi triển khai

Trước khi triển khai hệ thống mạng lưới của bạn nếu có một điều bạn làm và một điều một mình, nó là điểm chuẩn hệ thống hiện tại của bạn! Không có vấn đề gì bạn nói với đồng nghiệp về bao nhiêu thêm công việc hệ thống của bạn sẽ làm gì trừ khi bạn có con số để sao lưu này lên bảo lãnh của bạn là không có gì. Vì vậy,

  • có bao nhiêu hồ sơ bạn có thể xử lý hiện tại? Mỗi ngày? Mỗi giờ?
  • Làm thế nào lâu nó thường xoay quanh một công việc?
  • Nhiều hơn năng lực bạn có?

Ngoài ra còn có thêm câu hỏi:

  • Nếu máy chủ xử lý của bạn (hoặc một trong các máy chủ xử lý của bạn) đi xuống như thế nào điều này sẽ ảnh hưởng đến khả năng của bạn, bạn sẽ được làm tê liệt?
  • Lợi thế gì bạn hy vọng / mong đợi để có được từ một hệ thống lưới điện?
  • Máy văn phòng của bạn có khả năng chạy các công việc?
  • Được của bạn (hoặc bạn công việc có thể được chuyển đổi) để wrok trong phong cách của chạy?

Điểm quan trọng cuối cùng là mất thời gian của bạn trên bất kỳ sự thay đổi lớn như thế này. Cập nhật mã xử lý của bạn để làm việc bằng cách sử dụng phương pháp mới, điểm chuẩn một lần nữa. Có thể thiết lập máy chủ xử lý của bạn để chạy một máy ảo, sau khi tất cả các máy chủ xử lý của bạn sẽ chỉ là một công nhân (chỉ là một rất mạnh tương đối). Cho phép các quá trình mới để giải quyết.

Triển khai

Đề nghị của tôi sẽ được bật vào ngày cuối tuần một văn phòng thực hiện tất cả các cài đặt và thiết lập. Làm điều này trước khi một kỳ nghỉ hai tuần và để lại nên nghèo khác chap để đối phó với những hậu quả có thể không ...

Triển khai cho một hệ thống như thế này cần được làm chậm. Mặc dù nó là tương đối đơn giản để thiết lập hệ thống này sẽ ảnh hưởng đến toàn bộ cơ sở hạ tầng văn phòng của bạn (tốt kỹ thuật số). Thứ nhất, tung ra một vài máy tại một thời điểm, lưu lượng truy cập mạng lưới giám sát, làm thế nào các máy chủ công nhân thực hiện trên cơ sở ngày-to-ngày. Bạn có thể cần phải thay đổi cấu hình công việc của bạn đáp ứng những phát hiện của bạn.

Một khi hệ thống đã giải quyết với một vài máy (cho phép nói rằng 10% của tất cả các máy văn phòng, tức là 5) giữ cho mạng lưới giám sát lưu lượng truy cập và máy chủ performance. điểm chuẩn một lần nữa, bây giờ bạn nên được xử lý công việc nhiều hơn 33% so với các tiêu chuẩn đầu tiên của bạn. Kiểm tra xem đây là như vậy, hoặc là bạn sẽ ít nhất là trong sân chơi bóng chày này. Nếu không, điều tra những gì đang xảy ra trước khi chuyển. Lặp lại chu kỳ này cho đến khi bạn hạnh phúc có tất cả các máy văn phòng mà không giết chết hiệu suất máy tính cá nhân hoặc nghiền mạng của bạn bị treo.

Tại tất cả các lần giữ điểm chuẩn, ngay cả sau khi tất cả các triển khai được thực hiện. Kiểm tra xem làm thế nào cập nhật mã mới ảnh hưởng đến tốc độ hệ thống của bạn, hãy kiểm tra tất cả các công nhân được báo cáo và xử lý công việc. Chậm (rất chậm) tăng cấu hình công việc của bạn để có được tốt nhất từ ​​công nhân và mạng lưới của bạn.

Dừng lại!

Điều gì sẽ xảy ra nếu bạn muốn ngăn chặn công nhân của bạn chạy ở một thời gian? Họ là tất cả ra khỏi đó, tái sinh, và cố gắng hết sức mình để xử lý dữ liệu như côn trùng đói. Câu trả lời có vẻ hiển nhiên, nhưng giá trị của nó chỉ thêm trong trường hợp bị bỏ qua của nó. Đơn giản chỉ cần chỉnh sửa kịch bản xử lý của bạn với một lối ra (0) hoặc chết () hoặc một số báo cáo khác để giết chết công việc xử lý của bạn. Một lý do quan trọng lý do tại sao chúng tôi luôn luôn cố gắng cập nhật kịch bản xử lý mới nhất trước khi chạy bất kỳ!

Trình diễn hệ thống

Để viết này tập hợp các bài báo ngắn, tôi tạo ra một mạng lưới rất nhỏ để chứng minh các công nghệ và phương pháp. Tôi đọc rất nhiều bài báo, hướng dẫn, và sử dụng các công cụ khác nhau để thiết lập và theo dõi những gì đang diễn ra. Không có nghĩa là tôi đi ra ngoài và bão hòa một văn phòng hoàn toàn với giao thông và cũng không có tôi có quyền truy cập vào một PC thông thường nhân viên để xem làm thế nào hiệu suất máy chủ đã bị ảnh hưởng.

Hệ thống trình diễn của tôi là thực sự rất khiêm tốn. Tôi sử dụng máy tính để bàn thường xuyên của tôi như là một máy chủ điều khiển công việc. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Để các máy tính xách tay nhàn rỗi kết quả trong một công nhân bắt đầu xử lý các việc làm từ các máy chủ điều khiển công việc. Khi trở lại sử dụng máy tính xách tay có một sự chậm trễ khoảng 30-60 giây, đây là một số tiền hợp lý của thời gian và nhân viên sẽ cần phải được thực hiện nhận thức được rằng máy tính của họ có thể tạm dừng một thời gian ngắn khi quay trở lại máy. Máy mới hơn có thể không có một tạm dừng này dài. Lợi ích của số lượng chế biến thực hiện bởi các máy này trong thời gian nhàn rỗi sẽ nhiều hơn nhân viên phải chờ đợi một thời gian ngắn (1 phút) đến máy của họ một buổi sáng (tôi thường xuyên chờ đợi lâu hơn cho Windows Defender cập nhật diễn ra) cung cấp đã được thực hiện nhận thức được điều này (thời gian hữu ích để lấy một cà phê buổi sáng).

Nói chung tôi cảm thấy tự tin rằng mình đã chứng minh các công nghệ có thể được sử dụng để tạo ra một hệ thống như vậy. Tôi đã chỉ ra rằng một hệ thống như vậy không làm việc trên một quy mô nhỏ (rất) và với một số thử nghiệm có thể được thu nhỏ sử dụng các nguồn tài nguyên của máy của một văn phòng. Nếu tôi không nhận được điểm để làm điều này tôi sẽ rất quan tâm để biết / thấy khi một người nào khác không.

Kết luận / Đánh giá

Rõ ràng bước tiếp theo sẽ là thực sự có được một ví dụ thế giới thực và bắt đầu triển khai một hệ thống như thế này trong một môi trường văn phòng và xem những gì sẽ xảy ra. Yêu cầu một doanh nghiệp cam kết này mà không cần một công ty đường mòn rực để chứng minh công nghệ và hiệu quả có thể là một chút khó khăn. Grid / phân phối máy tính là rất phổ biến là một số vòng tròn và có một số ứng dụng lớn (BIONC, SETI @ Home, Folding @ Home, vv). Tôi không, tuy nhiên, tìm một quy mô nhỏ hơn và hệ thống đơn giản như thế này trong các tìm kiếm có thể được triển khai trong một môi trường văn phòng.

Tôi tạo ra một hệ thống về cơ bản miễn phí bằng cách sử dụng phần mềm mã nguồn chủ yếu là mở và các công cụ có sẵn trong hầu hết các văn phòng. Các công nghệ về cơ bản đã được chứng minh và cho thấy để thực hiện và làm việc như mong đợi. Hy vọng rằng tôi có thấy rằng công việc không nhiều và với một thiết lập rất đơn giản, bạn có thể triển khai một hệ thống văn phòng điện toán lưới là mạnh mẽ, giá rẻ, Â và khả năng mở rộng tất cả cùng một lúc.

Khi một hệ thống và chạy trên đó gần như là không có kết thúc với số tiền tùy biến và cải tiến bạn có thể thực hiện. Đối với ví dụ số liệu thống kê điểm chuẩn / có thể dễ dàng được thêm vào hiển thị giá trị của hệ thống như vậy mỗi ngày. Máy mới có thể được thêm vào một cách nhanh chóng và dễ dàng như khi họ đến với các nâng cấp phần cứng hiện củng cố sức mạnh xử lý của bạn.

Tôi hy vọng bạn đã rất thích đọc loạt bài này và cho bạn thực phẩm cho các tư tưởng về một hệ thống mạng lưới văn phòng. Các giải pháp trình bày ở đây sẽ không nhất thiết phải làm việc trong mọi tình huống nhưng phải được thích nghi để cho phép bạn để có được xử lý dữ liệu của bạn thực hiện bằng cách sử dụng giải pháp của riêng bạn.

Xin vui lòng gửi cho tôi bất kỳ ý kiến, chỉnh sửa, hoặc cải tiến và tôi sẽ làm hết sức mình để giữ cho bài viết này cập nhật cho phù hợp.













Panorama Theme theo Themocracy

5 khách truy cập trực tuyến tại
4 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