상자 문서 로드맵 트윗
portunusd OpenBSD의 relayd 및 가보 유닉스 inetd 에서 영감을 얻은 네트워크 응용 프로그램 서버입니다. 그것은 들어오는 네트워크 연결을 듣고, Illumos 도어를 통해 의도 된 응용 프로그램으로 들어오는 데이터를 전달하고, 비슷한 방식으로 응답을 반환합니다. portunusd 각 연결된 포트를 대상 응용 프로그램에서 제공 한 파일 시스템의 도어에 맵핑합니다.
시퀀스 인디 아그램
참가자 클라이언트
참가자 portunusd
참가자 문
참가자 응용 프로그램
응용 프로그램->> 도어 : /var/run/app.door 작성
portunusd- >> 문 : 열기
portunusd- >> portunusd : 포트 80에서 듣습니다
루프 핸들 요청
클라이언트->>+portunusd : http 요청을 보냅니다
portunusd- >>+응용 프로그램 : 도어 _call을 통한 전방 요청
응용 프로그램->>-PortunusD : 도어 _return을 통해 응답을 보내십시오
portunusd- >>-클라이언트 : HTTP 응답 보내기
끝
portunusd 의 주요 목표는 단일 스레드 애플리케이션의 스케일링을 용이하게하는 것입니다. inetd 모델에서 모든 요청을 처리하기 위해 새로운 프로세스가 작성됩니다. 문을 활용함으로써 portunusd 새로운 동시성의 동시성 마크에 도달 한 경우에만 신청 프로세스에서 새 스레드를 생성 할 수 있습니다. 그렇지 않으면 기존 스레드가 후속 요청을 처리하도록 재사용됩니다.
우리는 사용자의 요구에 따라 네트워크를 향한 응용 프로그램이 확장되기를 원합니다. 응용 프로그램이 유휴 상태 일 때 자원의 자원 비용을 최소화하고자하며 수요 측면에서 비용을 선형으로 유지하려고합니다. 응용 프로그램 개발자가 자원 관리에 책임이있는 정도를 최소화하고 UNIX Command Line 도구의 친숙한 개발 환경을 유지하고자합니다.
레일을 선택하면 예를 들어, 단일 스레드 루비 on 레일 애플리케이션은 한 번에 하나의 사용자 요청을 처리 할 수 있습니다. 메모리에 거주하는 응용 프로그램의 여러 사본 (별도의 루비 통역사)없이 여러 동시 요청을 처리 할 수 없습니다. 이 모델은 사용자 요구가 적을 때에도 많은 메모리를 소비하여 호스트가 다른 워크로드를 실행하기가 어렵습니다. 디스크의 많은 페이징과 gnashing이 계속 될 것입니다.
Node.js와 같은 환경은 비동력을 프로그래머에게보다 투명하게 함으로써이 문제를 처리합니다. 컴퓨터의 비동기 특성을 수용하는 것이 유용 할 수 있지만,이를 지원하는 언어에 대한 변경 사항도 도입했습니다. 이것은 단순한 구문의 변화가 아니라 프로그램을 읽고 쓰고, 이해하는 데 사용하는 정신 모델에 대한 사소한 변화이기도합니다.
스펙트럼의 다른 쪽 끝에서 CGI 애플리케이션에는 고유 한 프로세스와 각 요청에 대한 주소 공간이 필요합니다. 이러한 응용 프로그램은 유휴 상태에서 메모리 / CPU 사용으로 확장하는 것을 포함하여 사용자 요구에 따라 선형으로 확장 할 수 있지만 각 요청에 대한 execv(2) 호출하는 비용은 처리량을 방해 할 수 있습니다.
포스트 모던 "서버리스"접근 방식은 이러한 기준을 충족하지만 운영 SYTEM을 포기하는 데 드는 비용으로 만족합니다. 소프트웨어 개발에 대한 낯선 접근 방식이며 런타임에 응용 프로그램을 관찰하고 디버깅하는 데 사용할 수있는 많은 도구를 제거합니다.
Doors는 개발자가 선형 동기 작업을 유지하고 이해하는 데 책임이있는 새로운 (오래된?) 네트워크 애플리케이션 개발 모델을 가능하게하는 반면 운영 체제 + 웹 서버는 스케일링 문제에 대해 함께 작동합니다.
이러한 특성을 통해 단일 스레드 UNIX 명령 줄 도구처럼 느껴지는 네트워크 응용 프로그램을 개발하고 유휴 상태에서 최소한의 비용을 제시하며, 요청 별 세분성에서 선형 적으로 스케일로 확장하여 문제 설명을 해결할 수 있습니다.
물론, 문만으로는 단일 운영 체제 인스턴스의 경계를 가로 지르는 스케일링을 처리하지 않지만 방화벽과의 릴레이 스타일의 협업은 애플리케이션의 사본을 여러 호스트에서 사용할 수 있다고 가정 할 때이를 용이하게 할 수 있습니다. 이것은 portunusd 들어오는 곳입니다.
소셜 미디어 미리보기 이미지는 Loudon Dodd- 자체 작업, CC By -SA 3.0입니다.
@jasonbking에 의해 많은 모호한 일루모스 / 녹 / 문 질문이 답변되었습니다.