gopkg.in/mgo.v2를 사용하는 MongoDB의 동시성 고려 사항
gopkg.in/mgo를 사용하여 MongoDB를 Go 웹 애플리케이션에 통합하는 경우 .v2의 경우 최적의 성능과 리소스 활용도를 위해 동시성 모범 사례를 고려하는 것이 중요합니다. 이 문서에서는 다음 질문을 다룹니다.
단일 mgo.Session을 http.Handler와 같은 웹 애플리케이션 내에서 동시에 사용할 수 있습니까? 아니면 Session.Copy 및 Session.Close를 사용해야 합니까? 세션 풀 생성 대신?
설명:
mgo.Session은 초기 가정과 달리 실제로 동시 사용에 안전합니다. 공식 문서에 명시된 바와 같이 "모든 세션 메서드는 동시성이 안전하며 여러 고루틴에서 호출될 수 있습니다."
그러나 이것이 동시 설정에서 mgo.Session을 하나만 사용하는 것이 유리하다는 의미는 아닙니다. 세션은 연결 풀을 자동으로 관리하지만 단일 세션을 활용하면 여러 연결을 동시에 활용하고 가능한 경우 서버 노드에 분산할 수 있는 기능이 제한됩니다.
요청마다 새 세션을 생성하고 필요한 경우 복사하고 닫습니다. 적절하게(Session.Close를 연기와 함께 사용) 최적의 리소스 활용이 가능합니다. 여러 연결을 관리함으로써 시스템은 잠재적으로 더 많은 연결과 서버 노드를 동시에 사용할 수 있으므로 데이터베이스와 최종 사용자 모두의 응답 시간이 더 빨라집니다.
Session.Close는 서버에 대한 기본 연결을 종료하지 않지만 오히려 풀로 반환하여 다른 세션이 선택할 수 있도록 합니다.
자세한 내용은 세션 성능에 대한 관련 토론을 참조하세요. mgo - 쿼리 성능이 지속적으로 느린 것 같습니다. (500-650ms).
위 내용은 Go 웹 애플리케이션에서 동시에 사용하려면 단일 mgo.Session이 충분합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!