Giới thiệu
Tôi làm việc trong một công ty nơi chúng tôi chạy nhiều công ăn việc làm hàng loạt chế biến hàng triệu hồ sơ của các 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 và mỗi ngày 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 này, tôi sẽ nhìn vào những lợi ích tiềm năng của việc sử dụng một mạng lưới văn phòng bằng cách sử dụng các 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 được chạy việc làm 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 phải 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ì:
- Tay các công việc theo yêu cầu của người lao động
- Cho công nhân những loại 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 trong 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 mạng lưới. Ví dụ, công việc có thể được ưu tiên, nhiều hơn một loại hình làm việc có thể tồn tại (ví dụ như một số cơ sở mã), cuối cùng bạn thậm chí có thể chạy các máy tính nhân viên khác nhau được tối ưu hóa cho từng loại công việc (mặc dù không di chuyển ra khỏi công nhân 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 sự 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 ta sẽ cần một nơi nào đó để kiểm soát việc làm của chúng tôi từ, đ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, một địa chỉ IP, tên máy chủ, URL (bằng cách sử dụng DNS nội bộ), vv Điều này là do người lao động cần phải biết nơi để tìm việc làm, người lao động phải tìm ra hệ thống kiểm soát công việc (không phải là hệ thống điều khiển công việc tìm người lao động).
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 công việc, tay ra việc làm, nhận được 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ể được rất cơ bản. Sau đó chúng ta 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 nằm ngoài tập thể dục này.
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 tiêu hao quá nhiều tài nguyên từ nó. Các máy chủ công việc tuy nhiên không cần sẵn sàng cao, nếu nó đi xuống 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 tính sẵn sàng cao.
Cơ bản cài đặt
Các 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 những máy chủ khập khiễng của tôi (có nghĩa là Li nux, m ySql, P HP). Các mã đang chạy trên công nhân Thea sẽ thực 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ô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, ngu ngốc !).
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`.
Ở đây tôi đang sử dụng SQL Buddy một chút thay thế tuyệt vời để phpMyAdmin chỉ vì 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 lựa chọn thay thế tuyệt vời để phpMyAdmin)
Bảng này bao gồm trong 5 lĩnh vực đơn giản,
- id: Độc đáo xác định công việc
- tên: 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 các định dạng khác
- Tình trạng: Bạn cần phải biết công việc tại, ví dụ như
- 0: Chưa bắt đầu
- 1: Chọn
- 2: Đã hoàn thành
- started_by: Ai đang bắt đầu làm công việc ? Đây không phải là hoàn toàn cần thiết nhưng 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 người lao động 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 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ó là dễ dàng như thế nào bảng này có thể được mở rộng với một vài trường bổ sung để cho phép đối với các số liệu thống kê theo dõi, một thời gian hoàn thành cột để xem bao lâu công việc đã, một truy cập để xem có bao nhiêu công nhân được công việc (rõ ràng điều này cần có xu hướng 1), công việc ưu tiên, danh sách có thể đi và về. Trong tình huống 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à do đó chỉ sử dụng người lao động phù 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ụ:
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 các dữ liệu mà bạn cần phải cung cấp cho người lao động 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 bản ghi
- 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 quan đến
Bảng thứ ba và cuối cùng bao gồm một bảng kết quả, nó cũng tương tự như 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ả vào 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 cho công việc kiểm soát! (Mặc dù ở một mức độ rất cơ bản) Trong trường hợp của tôi tôi chỉ vào một bảng dữ liệu của tôi để xử lý được đặt, nhưng điều này có thể dễ dàng được một tập tin, các thông số để chạy mã mô phỏng, bạn tên nó.
Lựa chọn một công việc
Như đã nêu trước đây, người lao động sẽ làm quản lý công việc của chúng tôi đối với chúng tôi 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 mà nhu cầu chế biến và có được thông tin. Làm thế nào chúng ta sẽ làm điều này? Vâng chọn tiêu chí lựa chọn công việc của chúng tôi và tìm việc làm, trong SQL tôi đã làm như sau:
- Thực hiện bất kỳ công việc không được đánh dấu là hoàn thành nhưng từ nhân viên của chúng tôi và thiết lập lại (thay thế __ME__ với một định danh, đơn giản nhất là địa chỉ IP):
Cập nhật: `việc làm` SET `tình trạng` = 0 `tình trạng` = 1 và `started_by` = __ME__;
- 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à yêu cầu hệ thống kiểm soát công nhân này là đối phó với nó:
Cập nhật: `việc làm` SET `tình trạng` = 1, `started_by` = __ME__, `started_at` = NOW () Ở ĐÂU `tình trạng` = 0 OR
(`Tình trạng` = 1 và `started_at`> DATE_SUB (NOW (), khoảng thời gian X Giờ)) ORDER BY `id` ASC;
Bằng cách lấy công việc 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 điều hành trong trường hợp của một công nhân bị rơi hoặc đi AWOL.
- 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 `việc làm` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Sau khi hoàn thành công việc chúng ta chèn các bản ghi kết quả của chúng tôi và đánh dấu các công việc như hoàn thành. Hãy nhớ là công việc có thể đình chỉ / resume bất cứ lúc nào cho phép đối với một số mạnh mẽ trong kịch bản của bạn. Nó có thể là nhiệm vụ đình chỉ một nửa cách thức thông qua việc cập nhật các hệ thống điều khiển công việc, do đó, kiểm tra số lượng hồ sơ trong công việc và số lượng các kết quả lưu lại hệ thống điều khiển 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 việc làm có thể được lựa chọn và quản lý từ một khung SQL truy vấn 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 để nếu bạn quyết định chuyển sang sử dụng một dịch vụ web, một hệ thống tập tin dựa trên XML, hoặc bất kỳ 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
Khía cạnh tiếp theo để xem xét là việc 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. Hãy OFA vài kịch bản:
- 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 mỗi quá trình công việc (nhớ 10% sức mạnh cho 2/3rds 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à quá lớn! Nó sẽ mất ít nhất gấp đôi thời gian để có được một công việc xử lý người lao động ban đầu nên đi AWOL (thời gian nhận rằng nó đã không trả lại một kết quả cộng với thời gian tái chế). Trong một lý tưởng, bạn sẽ có ít nhất một công việc toàn 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á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ẽ phải mất hai ngày để quá trình đầu tiên nên đi mất tích.
- Công Việc mất 1 phút để chạy: Điều này có nghĩa rằng người lao động mất khoảng 15 phút để chạy mỗi công việc . Trong khi điều này ban đầu có thể có vẻ lý tưởng, bạn có được xử lý công việc bổ sung trong thời gian ăn trưa, nghỉ cà phê, các cuộc họp, kịch bản này đặt căng thẳng cho các khu vực khác của hệ thống của bạn và giới thiệu các 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 sẽ đi xuống, do đó mất đi hiệu quả hệ thống. Mạng của bạn là có được liên tục truyền tải thông tin công việc để các nhân viên khác nhau bực bội những người lao động đồ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 lớn của 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ế 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, yêu cầu công việc thời gian quay vòng, 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 việc làm 3-4 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 kích thước công việc để thời gian thiết lập trở nên tương đối không đá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 số tiền của thời gian gấp đôi (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). Bạn có thể muốn giảm bớt thời gian này, nhưng phải cẩn thận không để giảm quá nhiều như bạn có thể bắt đầu nhân đôi việc xử lý các nhiệm vụ một cách thường xuyên.
- Công việc phải đượ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 vào lúc bắt đầu và kết thúc 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 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 ra 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ở nên quá bộ nhớ công ăn việc làm không gian tập trung thâm canh, đĩa sẽ bắt đầu hủy bỏ và điều duy nhất bạn sẽ nhận thấy là sự sụt giảm số lượng công việc xử lý không có lý do thực sự tại sao.
Trình Kết quả của việc một
Khi trình kết quả của một công việc quan trọng là phải kiểm tra kết quả đã được đệ trình bởi nhân viên khác, đặc biệt là nếu người lao động hiện nay đã không hoạt động trong một thời gian.
Khi kết quả được gửi đảm bảo rằng số lượng các kết quả phù hợp với số lượng hồ sơ trong công việc.
Như đã nêu trước đây, và không thể được trên nhấn mạnh, xây dựng khả năng chịu lỗi vào công việc thu hồi và nộp kết quả. Các công nhân có thể (và nhiều khả năng sẽ) đi vào chế độ đình chỉ bất tiện nhất của thời đại và nhu cầu này được phục vụ các thực cho. Ngoài ra một lần nữa abstracting đi kết quả của bạn trình sẽ giúp phục vụ cho các thay đổi trong tương lai để hệ thống điều khiển công việc của bạn dễ dàng hơn nhiều để đối phó với.
Tóm tắt thông tin
Trong section này, chúng tôi đã nhìn vào những gì một máy chủ điều khiển công việc cần phải làm và làm thế nào để có được một hệ thống rất cơ bản. Chúng tôi thảo luận làm thế nào để lấy một công việc từ hệ thống điều khiển và làm thế nào tốt nhất để cấu hình việc làm để có được nhất của chúng ta về hệ thống mạng lưới văn phòng của bạn. Để kết thúc, một đoạn văn hoặc hai trình kết quả lại cho máy chủ điều khiển công việc đã được trình bày.
- Một máy chủ kiểm soát công việc quản lý công việc và đảm bảo rằng tất cả các đơn vị làm việc được hoàn thành
- Tóm tắt công việc của bạn chọn / kết quả trình, chúng ta có thể thay đổi công nghệ của máy chủ điều khiển mà không cần nhiều vấn đề
- Cấu hình công việc của bạn để đảm bảo rằng họ đang chạy một cách nhanh chóng và hiệu quả mà không gây áp lực quá nhiều vào cơ sở hạ tầng mạng của bạn, và không sao chép các nhiệm vụ xử lý một cách thường xuyên.
- Đảm bảo rằng bạn xây dựng khả năng chịu lỗi và checking lỗi thành thói quen của bạn, công nhân có thể đình chỉ và tiếp tục và bất tiện nhất của thời đại. Hãy nhớ để kiểm tra nếu kết quả đã được đệ trình bởi nhân viên khác.
Tiếp theo thời gian
Trong phần 3 , chúng ta sẽ tạo máy chế biến ảo của chúng tôi và thiết lập máy cửa sổ của chúng tôi để trở thành công nhân trong thời gian nghỉ .