2012-05-16 28 views
7

Tôi đang tìm một số thư viện chung để lên lịch cho nhiều tác vụ. Thư viện phải cung cấp khả năng phân chia các tác vụ trên các nút trong cluster, thực hiện cân bằng tải và khả năng chịu lỗi - vì vậy nếu một số nút bị hỏng, các nhiệm vụ cho nút phải được phân phối trên các nút còn lại.Thư viện lập kế hoạch phân phối có mục đích chung cho Java

Tôi đã xem xét Hadoop - nhưng có vẻ như nó sẽ hoạt động tốt cho các tác vụ giảm bản đồ. Trong trường hợp công việc của tôi đơn giản là người gửi thông báo, người kiểm tra trạng thái đối tượng, v.v.

Thạch anh có vẻ là tuyệt vời - nhưng không rõ làm thế nào tốt khi nó đi xuống để gửi các sự kiện đến các nút.

Bất kỳ tùy chọn nào khác?

Trả lời

7

Âm thanh như trường hợp sử dụng cho Akka.

+1

hoặc cho [Dịch vụ lập lịch Redisson] (https://github.com/mrniko/redisson/wiki/9.-distributed-services/#94-distributed-scheduled-executor-service) –

0

Hoặc bạn cũng có thể thử Quartz, nó có thể xử lý hầu hết mọi thứ bạn muốn :)

+0

những gì về xử lý tác vụ được phân phối và các trường hợp khi một nút bị hỏng? Có vẻ như không có giải pháp hộp. – jdevelop

3

Tôi đồng ý với Christian rằng Akka có vẻ như một sự phù hợp tốt hơn. Thạch anh là tuyệt vời cho những gì nó làm, nhưng khối xây dựng cơ bản của nó là một công việc cần được thực hiện. Nó sẽ không giúp bạn phân hủy công việc của bạn thành các thành phần phân phối.

Nếu tất cả công việc của bạn có thể bị phân hủy thành công việc, thì Quartz có thể giúp bạn lên lịch cho họ, đó là điều tốt nhất. Nhưng nếu một công việc cần phải phân hủy thành các nhiệm vụ phụ, thì bạn sẽ cần phải sử dụng một khung công tác khác.

Tùy chọn khác có thể là spring batch, tùy theo nhu cầu của bạn.

+0

Bây giờ, có thể chạy một nhiệm vụ là "công việc", nhưng tôi không thấy thạch anh có thể đối phó với việc quản lý tác vụ phân tán và xử lý các trường hợp khi một nút bị hỏng. Và nó sử dụng bỏ phiếu, vì vậy nó là cần thiết để cấu hình một số loại cơ sở dữ liệu nơi công việc phải được lưu trữ, đây là nút cổ chai tiềm năng. Tui bỏ lỡ điều gì vậy? – jdevelop

+0

cơ sở dữ liệu thực sự là một nút cổ chai. đối với các tác vụ được phân phối, bạn có thể định cấu hình phân cụm, nhưng điều này hơi bị giới hạn –

1

Bạn có thể thử ProActive, trình lập lịch công việc tích hợp tốt với Java (viết bằng Java). Nó hỗ trợ các tính năng bạn liệt kê. Đây là một dự án nguồn mở, một phần của OW2.

Các tính năng sau ví dụ có sẵn:

  • Workflows, tức là tập hợp các nhiệm vụ với phụ thuộc và cấu trúc như vòng/nếu/sao chép
  • Nhiệm vụ này được thực hiện trên các nút, tức là các đại lý chạy trên các máy khác nhau
  • công việc có thể được khởi động lại tự động sau khi thất bại nút

[từ chối trách nhiệm] tôi là một phần của Activeeon, công ty cung cấp hỗ trợ chuyên nghiệp cho Pr oHoạt động [/ từ chối trách nhiệm]

+0

Vui lòng đọc [answer], câu trả lời cũng nên bao gồm đủ thông tin hữu ích ngay cả khi liên kết bị chết. –