답변:
면책 조항 : 나는 Akka의 PO입니다
그것들은 내 머리 꼭대기에서 나온 것입니다.
반면에 Akka를 사용한다는 것은 Scala, Java, Groovy 또는 JRuby를 사용하여 애플리케이션을 작성할 수 있음을 의미합니다.
Erlang에서 프로세스는 약 1000 회 감소 할 때마다 전환됩니다. Scala / Akka와 같은 순진한 프레임 워크에서 에이전트는 수신 작업이 완료 될 때까지 스케줄러를 소유합니다. 장군. 게임 끝. Hasta la vista :) 사람들, 의사 기술에 시간을 낭비하지 마십시오. 여기 사람들이 Scala와 Erlang을 비교하는 것에 충격을 받았습니다.
또한 소위 "킬러 기능"이라고하는 다른 많은 기능이 있지만 여기에 제 조언이 있습니다. 기능에 대해 생각하지 말고 특정 언어를 가능하게하는 관용구에 대해 생각하십시오. Scala는 "최고의 기능"을 훔칩니다. Erlang은 올바른 관용구에서 파생 된 높은 수준의 언어로 시스템을 안정적으로 구축 할 수 있도록 올바른 관용구를 사용 / 구현합니다. 당신이 Erlang을 배울 때 당신은 당신의 마음을 재건하고 있고, 신뢰할 수있는 분산 시스템에 대해 생각하는 방식을, Erlang은 당신을 가르치고 업그레이드합니다. Scala는 다른 언어에서 좋은 기능을 훔치려는 또 다른 명령형 (오, 죄송합니다, 다중 패러다임, 재미있는 단어) 언어입니다.
거의 아무도 프로세스 격리에 대해 언급하지 않습니다. "당신의 쓰레드는 내 쓰레기를 엉망으로 만들 수 없다"는 보장이 없다면 분산 시스템은 추론하기가 훨씬 더 어렵습니다. (그들은 이미 충분히 어려운 것 와 얼랑의 프로세스.)
AFAIK (JVM에 대한 나의 제한된 직접적인 경험을 감안할 때 멀지 않음), Erlang만이 실제로 JVM에서 "올바른"프로세스 격리를 얻습니다. Google은 "마이크로 재부팅"기술 ( "복구 지향 컴퓨팅")을 사용하는 연구 시스템에 대해 Fox와 Candea (?)의 연구를 어디서 찾을 수 있는지에 대한 몇 가지 힌트를 줄 수 있습니다. 얼랭 개발자는 그 연구를 읽고 몇 가지를 말합니다.
저에게있어 다운 타임없이 전체 Erlang 클러스터에서 핫 코드 스와핑 (예 make:all([netload]
:)은 Erlang 킬러 기능 중 하나입니다.
그러나 당신의 질문을 뒤집어 보겠습니다. Erlang이 가지고 있지 않은 akka는 무엇입니까? 물론 자바에 수십 개의 확장 및 라이브러리 (scala, akka, spring, osgi, ...)를 추가하여 Erlang에 가까워 질 수 있습니다. 그러나 요점은 어디입니까? 요약하면, 이러한 모든 확장은 다운 타임없이 최고의 확장 성을 제공하는 작업을 수행 할 수 있음이 20 년 이상 입증 된 단순한 Erlang 언어를 배우는 것보다 훨씬 더 복잡합니다.