티스토리 뷰

코드읽기

golang grpc conn 객체 관리

Нуеоп 2020. 5. 7. 18:49

golang 환경에서 grpc로 서버를 개발하다보면, grpc conn 객체를 어떻게 관리할지 항상 고민이었습니다.

 

여러 클라이언트와 통신하면 각자 커넥션을 맺어야할지,

여러번 통신하면 Dial을 매번 요청해야할지,

conn 객체와 client 객체 중 무엇을 보관해야하는지

 

구글링을 통해 얻은 grpc 다루는 노하우에 대해 정리하겠습니다.

 

 

https://github.com/grpc/grpc-go/issues/682

 

Best practices for reusing connections, concurrency · Issue #682 · grpc/grpc-go

Thank you for this great library! I wanted to inquire about an issue I'm having. I have a fixed number of machines I wish to make potentially concurrent RPCs to. I would like maintain a pool of...

github.com

grpc-go github에서의 토론은 다음과 같습니다.

 

여러 클라이언트와 통신하더라도 conn 객체는 하나면 충분하다.

grpc 내부에서 적절히 multiplexing한다.

 

여러 커넥션을 맺고 재활용할지 등에 대한 토론이었고, 결론은 하나의 커넥션만으로도 충분하다 였습니다.

내부적으로 알아서 잘 한다가 결론입니다.

 

 

https://stackoverflow.com/questions/56067076/grpc-connection-management-in-golang

 

GRPC Connection Management in Golang

I am relatively new to GRPC and want to be sure that I am doing connection management correctly with golang. I don't want to have to create a new connection for every call but I also don't want to

stackoverflow.com

스택오버플로우에서의 답변은 다음과 같습니다.

 

grpc 커넥션은 하나면 충분하다.

conn 객체를 패키지 전역 변수로 보관하는 것은 설계적으로 좋지 않다.

go 기본 라이브러리의 `context`개념을 활용하라.

conn 객체 대신 client 객체를 보관하고, context 관리한다.

 

역시 커넥션은 하나면 충분하고, 대신 conn 객체보단 client 객체를 관리하는 케이스가 더 일반적인 것 같았습니다.

 

 

https://blog.banksalad.com/tech/production-ready-grpc-in-golang/

 

프로덕션 환경에서 사용하는 golang과 gRPC | 뱅크샐러드

안녕하세요, 뱅크샐러드 엔지니어링 파운데이션의 정겨울입니다. 뱅크샐러드는 마이크로 서비스 환경에서 다양한 언어와 프로토콜을 활용해 서비스를 운영하고 있습니다. 하나의 서비스는 요청을 처리하기 위해 다른 서비스의 API를 호출하는데 대부분의 기존 서비스는 REST API를 통해 JSON…

blog.banksalad.com

뱅크샐러드 블로그에선 다음과 같이 가이드하였습니다.

 

conn 객체 대신 client 객체를 전역 변수에서 다룬다.

대신 `sync.Once`를 통해 싱글톤으로 제공한다.

grpc_middleware 를 적극 활용하여 재연결 로직, 로깅 등을 처리한다.

 

 

IDL파일을 공통으로 관리하고, 연결 맺는 함수, 연결 객체 관리 등 많은 것을 배울 수 있었습니다.

 

 

'코드읽기' 카테고리의 다른 글

github.com/argoproj/argo 코드 살펴보기  (0) 2020.05.07
golang httpmq 코드 분석  (0) 2019.12.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함