2009-02-05 3 views
12

얼랭 (Erlang)은 방대한 양의 메시지와 요청을 처리 할 때 손 닿을 수 없다는 평판을 얻고 있습니다. 나는 다운로드 할 수있는 시간이 없었고 Mr. Erlang의 전환 이론에 대한 이해를 얻으려고 노력하지 못했습니다 ... 그래서 누군가가 저를 가르 칠 수 있는지 궁금합니다 (또는 좋은 교육 사이트를 가리킬 수 있는지).얼랭의 확장성에 대한 비밀은 무엇입니까?

think-experiment Erlang ejabberd를 Python과 C의 조합으로 포팅하여 동일한 속도와 확장 성을 제공하고자했습니다. 어떤 구조 나 패턴을 이해하고 구현해야합니까?

답변

13

How/why do functional languages (specifically Erlang) scale well? (튜토리얼 체인)

http://erlang.org/course/course.html

지금까지 다른 언어로 포팅 등의 메시지 전달 시스템이 쉬울 것이다 (왜 토론) (합니까 파이썬의 트위스트는 이미? 이렇게) 가장 현대적인 언어로 할 수 있습니다. Erlang의 내부 파생 기능을 "무료"로 제공하지는 않지만 기능적 스타일을 쉽게 얻을 수 있습니다. Stackless Python은 Erlang의 동시성 기능 대부분을 복제 할 수 있습니다. 비록 내가별로 사용하지 않았기 때문에 세부 사항을 말할 수는 없지만 말입니다. if는 얼랭의 디자인이 동시성이 내부적으로 일어나는 것을 허용 할 장소에서 코드의 동시성을 정의해야한다는 점에서 훨씬 더 "명백한"것으로 보인다.

+0

죄송합니다. 감사! 그것은 큰 도움이됩니다. 나는 SO의 중복 질문 검사기가 저에게 저를 인도하지 않았다는 것에 놀랐습니다. –

4

얼랑 확장성에 대한하지만뿐만 아니라 주로 약

  • 신뢰성 불변성 [아니오 사이클] 등 것도 공유하지 않고 있기 때문에 가능 소프트 실시간 GC에 의해 활성화
  • 소프트 실시간 특성 ()
  • 동시 작업 (저렴한 작업 전환, 저렴한 프로세스 스폰, 배우 모델 등)의 성능 ...
  • 확장 성 - 현재 상태에서는 논쟁의 여지가 있지만 빠르게 진화합니다 (약 32 코어는 잘되지만 대부분의 경쟁 업체보다 낫습니다. 네가 더 나아야 해. ar 미래).
+1

네,하지만 이것은 "잘 수행 된 확장 성"의 정의입니다. 안정성, 성능 또는 실시간 기능이없는 확장 성은 그다지 유용하지 않습니다. – daitangio

2

확장성에 영향을주는 erlang의 또 다른 기능은 저렴한 경량 프로세스입니다. 프로세스의 오버 헤드가 거의 없으므로 대부분의 다른 언어보다 훨씬 많은 수의 프로세스가 생성 될 수 있습니다. 다른 많은 언어가 제공하는 것보다 더 많은 정보를 얻을 수 있습니다.

1

Erlang을위한 최선의 선택은 네트워크 바운드 어플리케이션이라고 생각합니다. 하트 비트 모니터링과 같은 노드와 노드 간 통신을 훨씬 단순하게 만들고 관리자를 사용하여 자동 다시 시작하는 기능이 OTP에 내장되어 있습니다.

관련 문제