최근 Couchbase Go SDK의 또 다른 마이너 릴리스를 출시했습니다: 1.4.0. 이 버전은 새로운 마이너 버전으로, 특히 응답 시간 관찰 가능성과 투명 압축에 대한 지원이 포함되어 있습니다.
이번 릴리스에는 무엇이 포함되나요?
투명 압축, 클라이언트 인증서 인증 및 다중 네트워크 구성에 대한 지원이 추가되었습니다. 또한 요청에 소요된 시간을 확인하고 고아 응답을 식별할 수 있는 응답 시간 관찰 기능을 추가했습니다. 이전 블로그.
투명 압축
이제 서버에서 활성화된 경우 SDK가 서버로 전송되는 문서를 자동으로 압축 및 압축 해제합니다. 따라서 대역폭과 전송 시간을 크게 절약할 수 있습니다. 기본적으로 이 기능은 압축과 압축 해제 모두에 대해 켜져 있으며 연결 문자열 옵션을 통해 구성됩니다:
- 압축 - 클라이언트 측 압축을 활성화 또는 비활성화할지 여부는 부울이며 기본값은 true입니다.
- 압축_최소_크기 - int는 압축을 고려할 문서의 최소 크기(바이트 단위)로, 기본값은 32바이트입니다.
- 압축_최소_비율 - 실수, 압축 크기/원본 크기. 압축된 문서를 압축 전송하기 위한 최소 비율 - 기본값은 0.83입니다.
압축에 대한 자세한 내용은 문서 기술적인 자세한 내용은 sdk-rfc.
클라이언트 인증서 인증
클라이언트 인증서 인증은 엔터프라이즈 에디션 구독자를 위한 기능으로, 카우치베이스 서버에서 클라이언트를 인증하는 데 X.509 인증서를 사용할 수 있습니다. 즉, 서버에 대한 연결이 더욱 안전해지며 클라이언트는 신뢰할 수 있는 서버에만 연결하고 있다는 확신을 가질 수 있습니다. 이 기능을 사용하려면 서버에 유효한 인증서가 설정되어 있어야 하며 클라이언트 측 인증서에 대한 사용자 ID에 역할이 올바르게 할당되어 있어야 합니다. 클라이언트 측 인증서의 인증 경로 그리고 키 경로 를 연결 문자열에 제공해야 하며, 새로운 CertAuthenticator{} 클러스터 인증에 사용됩니다.
|
1 2 3 4 5 6 7 8 9 |
클러스터, err := gocb.연결("couchbases://10.0.0.1?certpath=/path/to/chain.pem&keypath=/path/to/client.key") 만약 err != nil { 패닉(err) } 클러스터.인증(gocb.CertAuthenticator{}) 버킷, err := 클러스터.OpenBucket("travel-sample", "") 만약 err != nil { 패닉(err) } |
클라이언트 인증서 인증에 대한 자세한 내용은 다음에서 확인할 수 있습니다. https://developer.couchbase.com/documentation/server/5.5/sdk/go/sdk-authentication-overview.html
응답 시간 관찰 가능성
응답 시간을 더 잘 이해하고 느린 응답의 원인을 진단할 수 있도록 설계된 두 가지 새로운 기능으로, 서로 분리되어 있지만 서로 연관되어 있습니다.
응답 시간 관찰 가능성은 비정상적으로 오래 실행되는 작업을 식별하는 데 사용할 수 있는 정보를 제공하여 문제가 발생하는 위치(카우치베이스 서버, 특정 노드, 네트워크 등)를 파악하는 데 도움을 줍니다. 기본적으로 ThresholdLogTracer 구현이 사용되지만 이는 진화하는 OpenTracing 표준을 준수하는 자체 구현으로 교체할 수 있습니다. 로그가 가득 차는 것을 방지하기 위해 로깅은 기본적으로 10×10을 기준으로 합니다. 즉, 지난 10초 동안 가장 느린 10번의 타임아웃을 기록합니다.
로깅된 출력은 다음과 같습니다:
|
1 |
{"서비스":"kv","count":10,"top":[{"operation_name":"Get","total_us":7451,"서버_미국":18,"decode_us":20,"LAST_OPERATION_ID":"0xd0a","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":5302,"서버_미국":22,"decode_us":17,"LAST_OPERATION_ID":"0x1059","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":5302,"서버_미국":43,"decode_us":18,"LAST_OPERATION_ID":"0xd63","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":4074,"서버_미국":117,"decode_us":17,"LAST_OPERATION_ID":"0xab3","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":4029,"서버_미국":14,"decode_us":11,"LAST_OPERATION_ID":"0xdfa","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":3253,"서버_미국":27,"decode_us":14,"LAST_OPERATION_ID":"0x489","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":3235,"서버_미국":11,"decode_us":13,"LAST_OPERATION_ID":"0x33b","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":3136,"서버_미국":14,"decode_us":13,"LAST_OPERATION_ID":"0xf1b","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":3132,"서버_미국":5,"decode_us":14,"LAST_OPERATION_ID":"0xea0","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"},{"operation_name":"Get","total_us":3045,"서버_미국":14,"decode_us":45,"LAST_OPERATION_ID":"0x5","last_local_id":"1d92576caf69677e/d4dbeb0069de1162"}]} |
로그에 표시되는 것은 로그의 서비스 유형과 수집한 샘플 수입니다. 샘플을 좀 더 자세히 살펴보겠습니다:
|
1 2 3 4 5 6 7 8 |
{ "operation_name":"Get", "total_us":7451, "서버_미국":18, "decode_us":20, "LAST_OPERATION_ID":"0xd0a", "last_local_id":"1d92576caf69677e/d4dbeb0069de1162" } |
여기서 볼 수 있는 것은 Get 작업이 총 7.4밀리초가 소요되었으며, 이 중 18마이크로초는 서버에서, 20마이크로초는 응답을 디코딩하는 데 소요되었다는 것입니다. 마지막_운영_ID와 마지막_로컬_ID는 요청을 고유하게 식별하고 서버 로그 및/또는 고아 응답 로깅과 일치시키는 데 사용할 수 있습니다.
임계값 로그 추적기 및 추적에 대한 자세한 내용은 다음에서 확인할 수 있습니다. https://developer.couchbase.com/documentation/server/5.5/sdk/go/threshold-logging.html 그리고 https://developer.couchbase.com/documentation/server/5.5/sdk/go/tracing-from-the-sdk.html.
고아 응답은 클라이언트에서 이미 시간 초과된 요청에 대해 서버에서 수신한 응답입니다. 이 경우 클라이언트는 여전히 이 응답을 처리하며, 고아 응답 로깅은 이 중 가장 느린 응답을 서버 지속 시간과 함께 기록합니다. 이 작업은 기본적으로 위와 동일한 10×10 기준으로 수행되지만 KV 작업에 대해서만 지원됩니다.
로깅된 출력은 다음과 같습니다:
|
1 |
{"서비스":"kv","count":10,"top":[{"c":"79bec7c299101f94/5f243f078b177992","i":"0x15f","r":"10.111.180.101:11210","d":10036,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x92","r":"10.111.180.101:11210","d":6239,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x85","r":"10.111.180.101:11210","d":376,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x82","r":"10.111.180.101:11210","d":135,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x67","r":"10.111.180.101:11210","d":135,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x160","r":"10.111.180.101:11210","d":126,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x44","r":"10.111.180.101:11210","d":126,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x40","r":"10.111.180.101:11210","d":126,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x5c","r":"10.111.180.101:11210","d":108,"s":"kv:CMD_GET"},{"c":"79bec7c299101f94/5f243f078b177992","i":"0x66","r":"10.111.180.101:11210","d":91,"s":"kv:CMD_GET"}]} |
위와 같이 로그의 대상 서비스 및 샘플 크기를 확인할 수 있습니다. 샘플을 더 자세히 살펴보세요:
|
1 2 3 4 5 6 7 |
{ "c":"79bec7c299101f94/5f243f078b177992", "I":"0x15f", "r":"10.111.180.101:11210", "d":10036, "s":"kv:CMD_GET" } |
원격 서버 주소(r), 작업 유형, 마이크로초 단위로 표시된 서버 지속 시간(d), 요청에 대한 고유 식별자(c 및 i)를 확인할 수 있습니다. 가장 긴 타임아웃의 서버 지속 시간이 10밀리초인 것을 볼 수 있으므로 서버 측에 문제가 있는 것은 아닐 것입니다. 서버 지속 시간은 전체 요청 지속 시간이 아니라 요청이 서버 측에서 소요된 시간이라는 점에 유의하세요.
고아 응답 로깅의 구성은 cluster.Connect 연결 문자열을 통해 이루어집니다. 3개의 구성 필드가 있습니다:
- 고아_응답_로깅 - 고아 응답 로깅을 활성화할지 여부를 정의하는 부울 값으로 기본값은 true입니다.
- 고아_응답_로깅_간격 - 밀리초 단위로 표시되는 정수 값으로 각 로깅 윈도우의 길이를 정의하며 기본값은 10초입니다.
- 고아_응답_로깅_샘플_크기 - 는 로깅 창당 기록할 요청 수를 정의하는 정수 값으로, 기본값은 10입니다(항상 해당 창에서 가장 느린 요청 x 개가 기록됨).
- 서버 지속 시간 - 서버 측 요청 기간을 활성화할지 여부를 정의하는 부울 값으로, 기본값은 true이며 Couchbase Server 5.5부터 사용할 수 있습니다.
이 두 가지 기능이 작동하려면 다음을 사용 중이어야 합니다. GOCB 로깅.
멀티 네트워크 구성 지원
다중 네트워크 구성을 사용하면 SDK가 네트워크 내부에서 사용하는 것과 다른 호스트 이름 및 포트 집합을 노출하는 클러스터에 연결할 수 있습니다(예: 클러스터가 SDK를 사용하는 애플리케이션과 다른 컨테이너 내에 있는 경우). 지원은 현재 변동성이 있는 것으로 간주되며 언제든지 변경될 수 있습니다.. 이 기능의 사용은 다음과 같은 새로운 프로퍼티를 통해 처리됩니다. 네트워크 에서 사용되는 연결 문자열에 전달됩니다. 현재 이 속성과 함께 사용할 수 있는 옵션은 auto(연결 문자열에 옵션이 없거나 비어 있을 때 사용되는 값이기도 함), default, external의 세 가지입니다.
- 기본값 - 를 사용하면 SDK가 각 노드에 제공된 기본 호스트 이름/포트를 사용하게 됩니다.
- 외부 - 를 사용하면 SDK가 각 노드에 제공된 외부 호스트 이름/포트를 사용하게 됩니다.
- 자동 또는 프로퍼티가 누락되면 SDK가 노드에 사용할 올바른 구성을 찾으려고 시도합니다.
버그 수정
이번 릴리스에 포함된 업데이트 및 수정 사항 목록은 다음에서 확인할 수 있습니다. 릴리스 노트.
받기
다음을 사용하여 최신 버전을 받으세요. go get gopkg.in/카우치베이스/gocb.v1 .
리포지토리 복제 여기.