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 ă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 mà ngồi xung quanh mỗi người và mỗi ngày không làm gì trong nhiều giờ. Nó sẽ không được 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 các hệ thống của chúng tôi? Trong này tập hợp các bài viết tôi sẽ xem xét các lợi ích tiềm năng của một văn phòng sử dụng điện lưới sử dụng các môi trường ảo.
Trong phần 1 , tôi đã cho một tổng quan về hệ thống và công nghệ, tôi sẽ được sử dụng cũng như thảo luận một số các 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.
Kiểm soát công việc
Nếu bạn có được công việc đang chạy thì bạn sẽ cần một số cách để quản lý chúng. công việc hệ thống (trên máy chủ công việc của bạn) kiểm soát của bạn cần được thực sự cũng nghĩ ra trước khi thậm chí cố gắng để chạy một lưới văn phòng. Vì vậy, trước tiên, các nhiệm vụ cho một hệ thống điều khiển công việc là gì:
- Tay trong công việc theo yêu cầu từ người lao động
- Nói cho công nhân loại công việc để chạy
- Theo dõi việc làm
- Đả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ọ mà để 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à các công trình hiện nay 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 như kinh doanh 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 (nghĩa là cơ sở mã số), cuối cùng bạn thậm chí có thể chạy máy một số công nhân khác nhau mà đượ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 công nhân chung của 'ý tưởng). Luôn luôn cố gắng nghĩ về tương lai, khi hệ thống đang phát triển, 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à thời gian phát triển tăng lên.
Việc làm Server
Chúng ta sẽ cần một nơi nào đó để kiểm soát công việc 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 được rằng 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 công nhân cần phải biết được nơi để tìm việc làm, người lao động cần tìm hệ thống điều khiển công việc (không phải là 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ủ công việc chính nó không thực sự có một nhiệm vụ phức tạp (trong một dù sao đi nữa hệ thống cơ bản), nó cần để lưu trữ một danh sách các công việc, tay trong công việc, 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 trong công việc') được định nghĩa có thể 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ỉ việc làm nhưng điều này vượt ra ngoài tập thể dục này.
Không có lý do gì đó mà 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 tài nguyên quá nhiều từ nó. Tuy nhiên việc các máy chủ không có nhu cầu cao, nếu nó đi xuống vào tối thứ Sáu bạn sẽ mất một ngày cuối tuần toàn bộ xử lý, 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ý của bạn chính 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.
Thiết lập cơ bản
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 các máy chủ của tôi Limp (có nghĩa là Li nux, ySql m, P HP). Các mã đang chạy trên nhân Thea sẽ thực sự làm việc hiểu những gì 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à thực sự tay trong việc làm thay vì các công nhân làm công việc khó khăn mình, 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 mySQL bảng để đố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ì nó dễ dàng hơn để cài đặt trên CentOS (cho người khác thấy: 10 lựa chọn thay thế tuyệt vời để 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
- Tên: có thể là một tham chiếu của khách hàng, hoặc số bất kỳ của các dấu hiệu khác
- Tình trạng: Bạn cần phải biết nơi mà công việc là lúc, ví dụ:
- 0: Không 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 là một tốt đẹp để có. Tôi muốn đề nghị theo dõi người lao động theo địa chỉ IP của họ trên mạng của bạn
- started_at: Khi nào thì nhân viê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 thành trong vòng X số lượng thời gian chúng ta biết chúng ta cần phải nhận công việc một lần nữa và bắt đầu chế biến bởi nhân viên khác. Người lao động có thể dừng xử lý / đi offline cho bất kỳ số lý do, mất điện, tai nạn, mất mạng, vv
Nó rất 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 thống kê theo dõi, một cột thời gian kết thúc để xem bao lâu công việc đã, một truy cập để xem bao nhiêu công nhân chọn 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 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ào (và do đó chỉ sử dụng lao động thích hợp), hoặc ngay cả những loại nhân viên sẽ được yêu cầu.
Cho phép thêm công ăn việc làm ví dụ một vài:
Bảng tiếp theo nữa là khá đơn giản để hiểu, đây là những hồ sơ của chúng tôi công việc. Chúng được liên kết với các bảng công việc chính của một cột `jobs_id`. Việc tạo nên bảng này phụ thuộc rất nhiều vào dữ liệu mà bạn cần 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: Người tên
- đị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ó giống nhau tạo thành như bảng ghi 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 ghi:
- job_record_id: Liên kết kết quả vào bảng công việc
- Kết quả: Các dữ liệu kết quả
... Và đó là tất cả những gì bạn cần để điều khiển công việc! (Mặc dù ở mức độ rất cơ bản) Trong trường hợp của tôi là chỉ vào một bảng, nơi 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 đượ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, 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 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 cần xử lý và nhận được thông tin. Làm thế nào chúng ta sẽ làm được đ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ững điều sau đây:
- Đi 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 chúng (thay thế __ME__ với một định danh, dễ dàng nhất sẽ là địa chỉ IP):
UPDATE `công việc` SET `tình trạng` = 0 WHERE `tình trạng` = 1 và `started_by` = __ME__;
- Sử dụng 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à nói với hệ thống điều khiển mà nhân viên này là đối phó với nó:
UPDATE `công việc` SET `tình trạng` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `tình trạng` = 0 hoặc
(`Tình trạng` = 1 và `started_at`> DATE_SUB (NOW (), khoảng X Giờ)) ORDER BY `id` ASC;
Bằng cách lấy các công việc 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 đang chạy trong trường hợp của một công nhân bị rơi hoặc đi AWOL.
- Tiếp lấy các chi tiết công việc tiếp theo là hồ sơ tự:
SELECT * FROM `công việc` 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 tôi chèn hồ sơ và kết quả của chúng tôi đánh dấu các công việc như hoàn tất. Hãy nhớ là việc làm có thể đình chỉ / tiếp tục 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à công việc đình chỉ một nửa thông qua việc cập nhật 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 cho các 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 việc làm này thể hiện như thế nào có thể được tuyển chọn và quản lý từ một-truy vấn SQL khung bạn thực sự cần được trừu tượng hóa điều khiển 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, tập tin hệ thống dựa trên XML , hoặc bất kỳ khác số hệ thống nó sẽ không ảnh hưởng đến đoạn mã trên nó.
Cấu hình công việc
Các 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 công việc chúng ta có thể tấn công một sự cân bằng tuyệt hảo giữa tốc độ, quá trình nhân bản, và độ tin cậy. Mất một vài kịch bản ofÂ:
- Việc làm mất 1 ngày mỗi để chạy: Điều này có nghĩa là công nhân của bạn cần 15 ngày để xử lý từng 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ẽ phải 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ả lại kết quả cộng thêm thời gian tái chế). Trong lý tưởng một bạn sẽ có ít nhất một công việc toàn dễ dàng thông vào cuối mỗi kỳ nghỉ dài, như vậy bạn giữ cho công việc hẹn giờ hơn và ở trường hợp xấu nhất một công việc sẽ phải mất hai ngày để xử lý nên là người đầu tiên đi mất tích.
- Việc làm mất 1 phút để chạy: Điều này có nghĩa là công nhân của bạn 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 chế biến làm việc thêm trong thời gian ăn trưa, nghỉ cà phê, hội họp, vv kịch bản này đặt căng trên các lĩnh vực khác của hệ thống và giới thiệu các vấn đề riêng của mình. Ví dụ, trước hết bạn thiết lập tỉ lệ thời gian xử lý sẽ phải đi xuống, do đó mất đi hiệu quả của hệ thống. mạng của bạn là có được liên tục công việc truyền thông tin cho công nhân viên khác nhau bực bội người đồng ngày của họ để làm việc ngày. Bạn cũng sẽ đưa thêm căng thẳng trên máy chủ xử lý công việc của bạn vì nó đã để món ăn ra rất nhiều và rất nhiều mảnh nhỏ làm việc trên một cơ sở 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 lộ lớn trở lại 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 của 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ẽ không có một lý tưởng thiết lập cấu hình cho mạng lưới của bạn, nhiều phụ thuộc vào các nguồn lực sẵn có, các loại công việc, việc làm thay đổi hoàn toàn yêu cầu thời gian, 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 thước sao cho mỗi công nhân có thể có được thông qua ít nhất khoảng 3-4 công việc trong thời hạn 15 giờ (dài nhất có thể khoảng thời gian nhàn rỗi)
- Chơi với quy mô công việc để thiết lập thời gian 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 vào gấp đôi lượng thời gian (có thể ít hơn) mà bạn mong đợi nó để hoàn thành nó giả định rằng AWOL đi của nó và bắt đầu chế biến nó với các nhân viê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 thông 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ác công việc tiếp theo không). Bạn có thể muốn giảm 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 nhiệm vụ chế biến nhân bản 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 ở đầu và cuối 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 ra một vấn đề mà chỉ sẽ 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 nhân của bạn. Nếu công việc trở nên quá nhớ không gian công việc chuyên sâu hoặc đĩa chuyên sâu 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 việc làm gia công mà không có lý do thực sự tại sao.
Trình Kết quả của việc làm một
Khi nộp các kết quả của một công việc quan trọng là phải kiểm tra xem kết quả chưa được gửi 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 một thời gian.
Khi kết quả được trình đả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ể qua nhấn mạnh, xây dựng khả năng chịu lỗi vào hồi công việc và trình kết quả. Các công nhân có thể (và nhiều khả năng sẽ) đi vào đình chỉ chế độ ở bất tiện nhất của thời đại và điều này cần phải được phục vụ cho. Cũng lại một lần nữa tóm tắt kết quả của bạn đi trình sẽ giúp phục vụ cho những thay đổi trong tương lai cho hệ thống điều khiển công việc của bạn dễ dàng hơn nhiều để giải quyết.
Tóm tắt
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 làm và làm thế nào để có được một hệ thống rất cơ bản thiết lập. 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à cách tốt nhất để cấu hình việc làm để có được hầu hết các hệ thống mạng lưới văn phòng của chúng tôi. Để kết thúc, một đoạn văn hoặc hai ngày nộp kết quả về máy chủ điều khiển công việc đã được trình bày.
- Một máy chủ điều khiển 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
- Bằng cách trừu tượng hóa 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ó vấn đề nhiều
- Cấu hình việc làm 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 có nhiệm vụ chế biến nhân bản 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à hồ sơ và các bất tiện nhất của lần. Hãy nhớ kiểm tra xem kết quả đã được gửi bởi nhân viên khác.
Tiếp theo thời gian
Trong phần 3 chúng tôi sẽ tạo máy ảo xử lý của chúng tôi và thiết lập các cửa sổ của chúng tôi để trở thành máy thời gian nghỉ của công nhân.