2013-03-19 28 views
6

Trước khi tái phát minh ra bánh xe, tôi đang tìm con trỏ cho các dự án mã nguồn mở đáp ứng các yêu cầu này.Tìm hàng chờ đợi, phân phối, công nhân cho erlang

  • thực hiện trong erlang dù đi hay C là có thể, nếu không có quá nhiều hành lý (ví dụ:. Mê cung xoắn phụ thuộc)
  • endpoint hoặc khách hàng trong erlang (Ví dụ: Tôi muốn mã erlang để chạy khi tôi thực hiện công việc.)
  • phân phối công việc cho các nút và gọi một số chức năng erlang để thực hiện công việc.
  • tồn các công việc bằng cách nào đó
  • không hạch bậc thầy, không có điểm duy nhất của thất bại
  • kiến ​​trúc đồng nhất
  • quản lý một danh sách các công việc mà có thể được sao lưu, mà không thả công việc trên sàn
  • một công việc là thực hiện nhiều hơn một lần là ok
  • hồ sơ hoạt động như Riak hoặc Couchbase (Ví dụ:. bắt đầu một nút, sau đó bắt đầu những người khác và chỉ cho họ với nó)

stro ng ưu tiên cho thứ gì đó nhẹ. Có rất nhiều giải pháp cấp doanh nghiệp vượt trội ở đó trong erlang có vẻ như họ sẽ mất nhiều thời gian để tìm hiểu vì nó sẽ giúp tôi tái tạo lại điều này từ đầu (trên thực tế, về cơ bản tôi đã kiến ​​trúc một giải pháp cho vấn đề này trong câu trả lời cho ai đó Tôi có thể xây dựng những gì tôi mô tả, nhưng điều này có vẻ giống như một trong những nhu cầu đó là đúng ở giữa những gì erlang được thiết kế cho.)

Điều tôi đã xem xét: - ejabbered - more của khung thông báo - rabitmq - về mặt lý thuyết thực hiện điều này nhưng mỗi lần tôi truy cập trang web của họ, tôi đã bị chìm trong biển trừu tượng. Có vẻ như đã sẵn sàng để làm mọi thứ. Tôi thậm chí không thể biết nó có bất kỳ sự kiên trì nào không.

Chỉnh sửa để thêm: Đây là trang trình bày trên khóa được phân phối bằng khóa. Có vẻ như nó giải quyết một phần quan trọng của vấn đề http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking

Hơn nữa Chỉnh sửa (nếu ai muốn cuộn của riêng mình.): Tôi thực sự đang tìm kiếm một cái gì đó hơn nhẹ hơn RabbitMQ. Tôi biết nó có thể làm những gì tôi muốn, nhưng nó có vẻ như chi phí trong việc học nó là tương đương với chi phí làm nó bản thân mình, nơi mà ở cuối giải pháp tùy chỉnh sẽ gần gũi hơn với những gì tôi thực sự cần.

Trả lời

1

Chúng tôi sử dụng RabbitMQ cho các tác vụ như thế này. Mô hình ràng buộc hàng đợi RabbitMQ hỗ trợ cấu hình linh hoạt. Bạn xuất bản để trao đổi, ràng buộc đảm bảo rằng các thư đến trong hàng đợi (s). Một hoặc nhiều quy trình công nhân có thể đăng ký hàng đợi. Hàng đợi và trao đổi có thể liên tục. Một số người nói rằng phải mất khoảng nửa năm để hiểu đầy đủ về RabbitMQ.

+0

Nửa năm để hiểu đầy đủ RabbitMQ dài hơn nhiều so với tháng hoặc vì vậy tôi nghĩ rằng nó sẽ đưa tôi đến xây dựng giải pháp của riêng tôi, điều mà tôi hoàn toàn hiểu ngay từ đầu. Tôi nghĩ rằng đó là mối quan tâm của tôi với RabbitMQ. Nó làm mọi thứ và là "cấp doanh nghiệp" nhưng cũng có một đường cong học tập dốc. Tốt để biết nó có thể làm những gì tôi cần, tôi sẽ làm một cuộc điều tra nhiều hơn một chút để xem tôi có thể tìm ra cách để tồn tại và thiết lập nó cho nhu cầu của tôi. – nirvana

+1

Thử dùng RabbitMQ. Bạn sẽ nhận được nhiều hơn từ nó hơn với giải pháp của riêng bạn. – Tilman

+1

Học RabbitMQ nên ít hơn rất nhiều so với việc lăn của riêng bạn. Các bộ phận chính -> Trao đổi liên kết với hàng đợi. Các tin nhắn được xuất bản tới các Sở Giao dịch, điều này dẫn đến các Hàng đợi bị ràng buộc. Hàng đợi là nơi bạn nhận được tin nhắn với Người tiêu dùng. Có rất nhiều ví dụ sử dụng thư viện RabbitMQ. – Travis

5

Chúng tôi sử dụng RABBITMQ để ràng buộc tất cả các ứng dụng của chúng tôi thành một bộ hoàn chỉnh. Trong toàn bộ thiết lập là một máy chủ RABBITMQ trung tâm mà các hệ thống tạo hàng đợi, cho dù là liên tục hay tạm thời. Do tính khả dụng của RABBITMQ, toàn bộ hệ thống phân phối của chúng tôi chạy trên nó. Các hệ thống được xây dựng bằng cách sử dụng các công nghệ khác nhau gửi và nhận nhiệm vụ từ các hệ thống khác thông qua RABBITMQ.

Chúng tôi đã đưa ra một Định dạng thư, có thể bằng JSON hoặc XML, trong đó các hệ thống giao tiếp với nhau. Nó rất nhanh.Tuy nhiên, có rất nhiều chi tiết tôi sẽ không đi vào đây, nhưng, tôi đã phải viết một ứng dụng OTP trên RABBITMQ khách hàng hàng đầu để trừu tượng tất cả các công cụ AMQP từ các lập trình viên erlang. Tất cả lập trình viên đều biết là một APi, nói rằng tôi đang gửi yêu cầu đến System A, chỉ cần chuẩn bị định dạng tin nhắn, M và gọi API: zeenode_amqp:req(SystemA,Message). Hệ thống có thể gửi các yêu cầu synchronous hoặc asynchronous.

Bạn nên làm gì từ điều này: RABBITMQ rất tốt cho việc xếp hàng các hệ thống. Infact trong thiết lập của chúng tôi, RABBITMQ pushes các tin nhắn thẳng đến các máy chủ ngay sau khi họ nhấn RABBITMQ từ khách hàng. Bằng cách sử dụng một quy ước đặt tên được thiết kế cẩn thận về hàng đợi và trao đổi và hiểu kỹ các mô hình sử dụng AMQP khác nhau, nó sẽ hoàn toàn phù hợp với bạn.

tôi nghĩ rằng bạn có thể tự cuộn, sử dụng Từ điển quy trình như Gproc kết hợp với Erlang Queue ModulePoolboy. Dù sao, tôi muốn giới thiệu RABBITMQ. cho tôi biết, tôi có thể gửi cho bạn một số thư viện, vì vậy bạn nghiên cứu chúng và xem chúng có phù hợp với bạn hay không. một khi bạn có một thiết lập RABBITMQ tốt, được cấu hình tốt theo các tài liệu trên trang web của họ, và sau đó, bạn cũng có ứng dụng khách Erlang amqp, được cài đặt, sau đó có thể tạo hàng đợi và trao đổi động (cho dù bạn muốn chúng liên tục hay không) phụ thuộc vào những gì bạn đang làm). Bạn thậm chí có thể nhóm các máy chủ RABBITMQ để đảm bảo tính khả dụng.

+1

Điều cần biết RabbitMQ có thể hoạt động với JSOn và vẫn tồn tại. NẾU bạn có gợi ý cho thư viện RabbitMQ, tôi đánh giá cao nó. Tôi biết một người được gọi là thỏ và những người khác trên trang web của RabbitMQ. Một phần của vấn đề của tôi là RabbitMQ cung cấp rất nhiều lựa chọn - ba chiến lược phân cụm khác nhau, ví dụ, và khó có thể biết được điều gì là đúng. Tôi đoán tôi có thể đọc thêm tài liệu. Vui mừng khi nghe mọi người đang sử dụng nó cho chính xác loại công việc này, đó cũng là một phần của mối quan tâm của tôi. – nirvana

Các vấn đề liên quan