Odyssey는 다수의 추가 작업자 스레드를 지정하여 처리 성능을 크게 확장할 수 있습니다. 각 작업자 스레드는 인증과 클라이언트-서버 및 서버-클라이언트 요청 프록시를 담당합니다. 모든 작업자 스레드는 전역 서버 연결 풀을 공유합니다. 멀티스레드 디자인은 SSL/TLS
성능에 중요한 역할을 합니다.
Odyssey는 현재 트랜잭션 상태를 추적하고 예기치 않은 클라이언트 연결 끊김이 발생할 경우 재사용을 위해 서버 연결을 서버 풀에 다시 넣기 전에 자동 연결 Cancel
를 내보내고 버려진 트랜잭션의 Rollback
수행할 수 있습니다. 또한 각 클라이언트-서버 할당에서 클라이언트 옵션을 설정할 필요성을 줄이기 위해 마지막 서버 연결 소유자 클라이언트가 기억됩니다.
Odyssey에서는 연결 풀을 Database
및 User
쌍으로 정의할 수 있습니다. 정의된 각 풀에는 별도의 인증, 풀링 모드 및 제한 설정이 있을 수 있습니다.
Odyssey는 모든 기능을 갖춘 SSL/TLS
지원과 클라이언트 및 서버 인증을 위한 md5
및 clear text
와 같은 일반적인 인증 방법을 갖추고 있습니다. Odyssey는 PAM 및 LDAP 인증을 지원합니다. 이 방법은 PAM/LDAP를 사용하여 사용자 이름/비밀번호 쌍의 유효성을 검사한다는 점을 제외하면 clear text
인증과 유사하게 작동합니다. PAM은 연결된 원격 호스트 이름이나 IP 주소를 선택적으로 확인합니다. 또한 각 풀 사용자를 개별적으로 차단할 수 있습니다.
Odyssey는 클라이언트 및 서버 연결을 위해 보편적으로 고유한 식별자 uuid
생성합니다. 모든 로그 이벤트 및 클라이언트 오류 응답에는 클라이언트를 고유하게 식별하고 작업을 추적하는 데 사용할 수 있는 ID가 포함됩니다. Odyssey는 시스템 로거를 사용하여 로그 이벤트를 로그 파일에 저장할 수 있습니다.
Odyssey는 여러 명령줄 옵션을 지원합니다. 자세한 내용을 보려면 /path/to/odyssey
--help를 사용하세요.
Odyssey는 맞춤형 코루틴 엔진인 머시나리움(machinarium)에 의해 구동되는 정교한 비동기 멀티스레드 아키텍처를 갖추고 있습니다. 코루틴 디자인의 주요 아이디어는 이벤트 기반 비동기 애플리케이션을 전통적인 콜백 접근 방식을 사용하는 대신 동기-절차 방식으로 작성되는 것처럼 보이고 느껴지도록 만드는 것입니다.
주요 목표 중 하나는 새로운 개발자가 코드 기반을 이해하기 쉽게 만들고 향후 개발을 위해 아키텍처를 쉽게 확장할 수 있도록 만드는 것이었습니다.
추가 정보: 아키텍처 및 내부.
현재 Odyssey는 Linux에서만 실행됩니다. 지원되는 플랫폼은 x86/x86_64입니다.
빌드하려면 다음이 필요합니다.
git clone git://github.com/yandex/odyssey.git
cd odyssey
make local_build
odyssey-dev.conf를 조정한 다음:
make local_run
또는:
make console_run
make start-dev-env
컨테이너에 프로젝트를 빌드하려면 수동으로 CLion을 설정하세요.