나는 연구 중에 만 Erlang 응용 프로그램을 개발했지만, 일반적으로 한 가지만하고 다른 프로세스에 메시지를 보내는 많은 작은 프로세스가있었습니다. Erlang의 장점은 동일한 Erlang VM 내에서 메시지를 보내거나 동일한 컴퓨터, 동일한 LAN 또는 인터넷을 통해 메시지를 보내고 다른 프로세스에 대한 호출 및 포인터가 항상 동일하게 보이는지 여부는 중요하지 않습니다. 개발자.
그래서 시스템의 모든 작은 부분에 대해 하나의 응용 프로그램을 만들고 싶습니다.
즉, 확장 할 수있는 응용 프로그램을 구성하는 것이 더 간단하지는 않습니다. 어림짐에 따르면 응용 프로그램이 10 배 이상 더 많은 노드에서 작동하도록하려면 다시 작성해야합니다. 그렇지 않으면 메시징 오버 헤드가 너무 커질 수 있기 때문입니다. 그리고 분명히 1에서 2로 시작하면 그것을 고려해야합니다.
너무 많은 클라이언트를 처리 할 때 특히 느린 응용 프로그램 인 병목 현상을 발견 한 경우 두 번째로 실행하고 두 번째로 시작하기 전에 몇 가지 추가 부하 분산을 구현해야합니다. 신청.
감독자가 메시지 내용에 부적절한 내용이 있는지 확인하고 속도가 느립니다. 이 경우, 노드는 모두 라운드 로빈 (round robin) 방식으로 슈퍼 바이저 애플리케이션의 다른 인스턴스로 메시지를 전달하는 단순한 라우터 애플리케이션 일 것입니다. 그 1 또는 2 개의 인스턴스가 충분하지 않은 경우 라우터를 작성하여 제어 메시지를 전송하여 인스턴스 수를 조작 할 수 있습니다.
그러나이 경우 자동으로 작동하려면 서버를 모니터링하고 과부하 또는 과소 사용되었음을 발견하는 다른 프로세스가 있어야합니다.
리소스를 동적으로 추가하고 제거하는 것이 항상 좋은 것처럼 들리 겠지만 실제로 볼 수 있듯이 많은 작업이 필요하며 모니터링을 허용하는 일부 메시징 시스템이 필요합니다. 시스템은 필요성을 모니터링 할 수 있습니다.
호프 이것은 어떻게 할 수 있었는지 몇 가지 아이디어를 제공합니다. 불행히도 마지막 얼랑 애플리케이션을 작성한 지 1 년이 넘었습니다. 잘못된 코드를 제공하고 싶지 않았습니다.
상위 차트를 그리려면 어떤 도구를 사용하셨습니까? –
나는 그것을 그리지 않았다. 그것은 스크린 캐스트의 스크린 샷이다. OmniGaffle에서 나온 것입니다. –
자, 고마워. –