Tôi đã xem akka gần đây và nó khá ấn tượng. Có vẻ như nó có hầu hết các tính năng sát thủ của erlang - tính minh bạch của vị trí, phân cấp giám sát và hơn thế nữa. Có tính năng nào erlang có mà akka không?
Tôi đã xem akka gần đây và nó khá ấn tượng. Có vẻ như nó có hầu hết các tính năng sát thủ của erlang - tính minh bạch của vị trí, phân cấp giám sát và hơn thế nữa. Có tính năng nào erlang có mà akka không?
Câu trả lời:
Tuyên bố từ chối trách nhiệm: Tôi là PO cho Akka
Đó là những cái từ trên đỉnh đầu của tôi.
Mặt khác, sử dụng Akka có nghĩa là bạn có thể sử dụng Scala, Java, Groovy hoặc JRuby để viết các ứng dụng của mình.
Trong Erlang, các quy trình được đảm bảo sẽ được chuyển đổi khoảng 1000 lần giảm. Trong một khuôn khổ ngây thơ như Scala / Akka agent sở hữu một bộ lập lịch cho đến khi nó hoàn thành công việc nhận. Người kiểm tra. Trò chơi kết thúc. Hasta la vista :) Mọi người, đừng lãng phí thời gian của bạn vào công nghệ giả. Tôi bị sốc khi những người ở đây so sánh Scala với Erlang.
Ngoài ra còn có nhiều cái gọi là "tính năng sát thủ" khác, nhưng đây là lời khuyên của tôi, đừng nghĩ về tính năng, hãy nghĩ về các thành ngữ cho phép ngôn ngữ cụ thể. Scala đánh cắp "tính năng tốt nhất", Erlang cho phép / triển khai cho bạn những thành ngữ phù hợp để xây dựng hệ thống một cách đáng tin cậy, với ngôn ngữ cấp cao được thúc đẩy từ những thành ngữ phù hợp đó. Khi bạn học Erlang, bạn đang xây dựng lại tư duy, cách suy nghĩ của mình về hệ thống đáng tin cậy phân tán, Erlang dạy bạn và nâng cấp cho bạn. Scala chỉ là một ngôn ngữ bắt buộc khác (ồ, xin lỗi, nhiều chữ, từ hài hước) cố gắng ăn cắp các tính năng tốt từ các ngôn ngữ khác.
Gần như không ai đề cập đến quá trình cô lập. Nếu không có sự đảm bảo về việc "chuỗi của bạn không thể gây rối với rác của tôi", các hệ thống phân tán khó lý giải hơn nhiều. (Họ đã đủ khó với các quy trình của Erlang.)
AFAIK (không xa lắm, với kinh nghiệm trực tiếp hạn chế của tôi với JVM), chỉ Erlang mới thực sự nhận được sự cô lập quy trình "đúng" trên JVM. Ông Google có thể đưa ra một số gợi ý về nơi tìm nghiên cứu của Fox và Candea (?) Về các hệ thống nghiên cứu sử dụng kỹ thuật "khởi động lại vi mô" ("máy tính hướng phục hồi"). Một nhà phát triển Erlang đọc nghiên cứu đó và nói một vài điều:
Đối với tôi, hoán đổi mã nóng trong toàn bộ cụm Erlang mà không có thời gian chết (ví dụ make:all([netload]
:) là một trong những tính năng của kẻ giết người của Erlang.
Nhưng hãy đảo ngược câu hỏi của bạn: Akka có gì mà Erlang không có? Tất nhiên bạn có thể thêm hàng tá tiện ích mở rộng và thư viện (scala, akka, spring, osgi, ...) vào Java để cố gắng tiến gần đến Erlang. Nhưng mấu chốt là ở đâu? Tóm lại, tất cả các tiện ích mở rộng này phức tạp hơn nhiều so với việc học ngôn ngữ Erlang đơn giản, hiện đã được chứng minh trong hơn 2 thập kỷ rằng nó có thể thực hiện công việc cung cấp khả năng mở rộng hàng đầu mà không mất thời gian chết.