thrift는 그냥 바이너리 프로토콜이고 grpc는 rpc라고는하는데
rpc랑 바이너리 통신이랑 뭐가 다른거임
rpc도 내부적으로 소켓 열고 요청 분석하고 포인터 call하는거 아님?
둘다 똑같은 rpc임
thrift가 뭔지는 모르겠는데 바이너리 통신과 rpc 단어만 본다면 다른 게 맞다고 봐야지 바이너리 통신은 그냥 바이너리 데이터를 주고 받는 거고 rpc의 내부 구현을 그렇게 할 수 있음 그니까 좀 더 로우 레벨 영역이라고 생각하면 되고
rpc는 통신 방법은 사용자가 신경 쓸 필요 없고 원격지의 기능(함수 또는 멤버함수)을 원하는 시점에 실행시키는 거고 꽤 성능 체감이 크기 때문에 무거운 프로토콜 쓰는 것보다 바이너리 데이터로 (De)serialization 해서 통신하는 경우가 많음
근데 그 원하는 함수를 호출한다는게 실제 cs에 있는 주소를 하드코딩해서 호출한다는거임? 그게 아니고서야 rpc 스텁코드에 함수 맵핑해서 호출할텐데 큰 차이가 있나
요즘에는 어떻게 구현하는지 모르겠으나 보통은 enum으로 함수/기능 전부 싹 나열해놓고 바이너리 데이터 첫번째 필드에 그 값 담아서 보내면 받은 쪽이 아 이걸 호출하는데 뒤에 있는 데이터 긁어다가 같이 보내야지 이렇게 구현했음
그러면 그냥 함수 호출에 최적화된 프로토콜이라 이해하면 댄다는 거네 ㅇㅋ
혼합도 가능함 더 상위 필드에 RPC냐 일반 데이터냐 접속 요청이냐 이런 식으로 나눠버리면 됨
둘다 똑같은 rpc임
thrift가 뭔지는 모르겠는데 바이너리 통신과 rpc 단어만 본다면 다른 게 맞다고 봐야지 바이너리 통신은 그냥 바이너리 데이터를 주고 받는 거고 rpc의 내부 구현을 그렇게 할 수 있음 그니까 좀 더 로우 레벨 영역이라고 생각하면 되고
rpc는 통신 방법은 사용자가 신경 쓸 필요 없고 원격지의 기능(함수 또는 멤버함수)을 원하는 시점에 실행시키는 거고 꽤 성능 체감이 크기 때문에 무거운 프로토콜 쓰는 것보다 바이너리 데이터로 (De)serialization 해서 통신하는 경우가 많음
근데 그 원하는 함수를 호출한다는게 실제 cs에 있는 주소를 하드코딩해서 호출한다는거임? 그게 아니고서야 rpc 스텁코드에 함수 맵핑해서 호출할텐데 큰 차이가 있나
요즘에는 어떻게 구현하는지 모르겠으나 보통은 enum으로 함수/기능 전부 싹 나열해놓고 바이너리 데이터 첫번째 필드에 그 값 담아서 보내면 받은 쪽이 아 이걸 호출하는데 뒤에 있는 데이터 긁어다가 같이 보내야지 이렇게 구현했음
그러면 그냥 함수 호출에 최적화된 프로토콜이라 이해하면 댄다는 거네 ㅇㅋ
혼합도 가능함 더 상위 필드에 RPC냐 일반 데이터냐 접속 요청이냐 이런 식으로 나눠버리면 됨