2012-01-13 23 views
10

Chào các bạn: Sau khi được tiếp xúc với diễn viên của Scala và tương lai của Clojure, tôi cảm thấy cả hai ngôn ngữ đều hỗ trợ tuyệt vời cho xử lý dữ liệu đa lõi.Clojure tương lai trong bối cảnh các mô hình đồng thời của Scala

Tuy nhiên, tôi vẫn chưa thể xác định sự khác biệt về kỹ thuật thực sự giữa các tính năng đồng thời và ưu/nhược điểm của hai mô hình. Các ngôn ngữ này có miễn phí, hoặc phản đối về việc xử lý các tóm tắt quá trình đồng thời không?

Thứ hai, liên quan đến vấn đề dữ liệu lớn, không rõ ràng cộng đồng scala tiếp tục hỗ trợ Hadoop một cách rõ ràng (trong khi cộng đồng clojure rõ ràng không). Các nhà phát triển Scala giao diện với hệ sinh thái hadoop như thế nào?

Mọi thông tin chi tiết về hai câu hỏi này sẽ được đánh giá cao.

Trả lời

3

Các diễn viên cung cấp cách xử lý điều khiển xen kẽ và đồng bộ hóa tiềm năng chắc chắn xảy ra khi cố gắng kết nối nhiều luồng với nhau. Mỗi tác nhân có một hàng đợi các thông điệp mà nó xử lý theo thứ tự từng cái một để tránh sự cần thiết phải bao gồm các khóa rõ ràng. Trong trường hợp này, Future cung cấp một cách chờ phản hồi từ một diễn viên.

Khi Hadoop quan tâm, Twitter vừa phát hành một thư viện dành riêng cho Hadoop gọi là Scalding nhưng miễn là thư viện được viết cho JVM, nó sẽ hoạt động với một trong hai ngôn ngữ.

+2

Vì Scalding chỉ là một trình bao bọc * scalish * xung quanh Cascading nên sử dụng [Cascalog] (https://github.com/nathanmarz/cascalog) trong trường hợp bạn đang sử dụng Clojure. –

8

Một số giải pháp được giải quyết tốt bởi tác nhân/diễn viên và một số thì không. Sự khác biệt này không thực sự là về các ngôn ngữ hơn các vấn đề cụ thể phù hợp với các lớp giải pháp chung như thế nào. Đây là một sự so sánh (rất ngắn) của các tác nhân/tác nhân so với Tài liệu tham khảo để cố gắng làm sáng tỏ rằng công cụ phải phù hợp với vấn đề đồng thời.

Diễn viên nổi bật trong tình huống được phân phối ở nơi không cần phải sửa đổi đồng thời. Nếu vấn đề của bạn có thể được thể hiện hoàn toàn bằng cách truyền tải thông điệp thì các diễn viên sẽ thực hiện thủ thuật. Các diễn viên hoạt động kém khi họ cần sửa đổi một số cấu trúc dữ liệu liên quan cùng một lúc. Ví dụ kinh điển về việc này đang chuyển tiền giữa các tài khoản ngân hàng.

Clojure's ref s là giải pháp tuyệt vời cho vấn đề của nhiều chủ đề cần phải sửa đổi cùng một điều tại cùng một thời điểm. Chúng nổi trội ở các hệ thống bộ xử lý đa bộ nhớ chia sẻ như máy tính và máy chủ ngày nay. Ngoài ví dụ về tài khoản ngân hàng, Rich Hickey (tác giả của clojure) sử dụng ví dụ về trò chơi bóng chày để giải thích tại sao điều này lại quan trọng. Nếu bạn muốn sử dụng diễn viên để đại diện cho một trò chơi bóng chày thì trước khi bạn di chuyển bóng, tất cả người hâm mộ sẽ phải gửi một tin nhắn hỏi nó ở đâu ... và nếu họ muốn xem một cầu thủ bắt bóng phức tạp hơn.

Clojure có cascalog làm cho việc viết các công việc hadoop trông giống như viết clojure.

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