목록분산컴퓨팅 (5)
yoongrammer
목차Raft Consensus Algorithm 알아보기Raft는 이해하기 쉽도록 설계된 분산 합의 알고리즘입니다.여러 서버들 중 일부 서버에 장애가 발생하더라도 기능을 유지하도록 하는 내결함성을 가지고 있습니다.분산 합의(Distributed Consensus)란?하나의 클라이언트와 서버가 있고 클라이언트가 서버에게 데이터를 전달한다고 가정해보겠습니다. 서버는 하나의 노드로 이루어져 있기 때문에 합의가 이루어지는 건 아주 쉬운 문제입니다.여기서 합의란 클라이언트와 서버가 동일한 데이터를 공유하는 상태(동기화)가 되는 것을 의미합니다.만일 위 그림처럼 여러 노드로 이루어진 분산 서버에서 합의를 할 때 발생하는 문제를 distributed consensus problem이라고 합니다.Raft 작동방식Raf..
목차JSON 알아보기JSON(JavaScript Object Notation)은 경량의 Data 교환 형식입니다.일반적으로 JSON은 손쉬운 데이터 교환이 가장 큰 목적이기 때문에 주로 성능이 크게 중요하지 않을 경우에 사용됩니다.JSON 특징JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽습니다.JSON은 텍스트 기반이므로 프로그래밍 언어와 플랫폼에 독립적입니다.JSON은 프로그래밍 언어와 플랫폼에 독립적이기 때문에 서로 다른 시스템간에 객체를 교환하기에 좋습니다.JSON 구조JSON 데이터는 name/value 형태의 쌍으로 이루어집니다.이러한 JSON 데이터는 데이터 이름, 콜론(:), 값의 순서로 구성됩니다.데이터 이름은 string 이므로, 항상 큰따옴표("")와 함께 입력..
목차gRPC 란?gRPC는 구글이 개발한 RPC 시스템입니다.gRPC는 대부분의 언어를 지원하며 PB(Protocol Buffer)를 IDL(Interface Definition Language)로 사용합니다. gRPC에서 원격에 있는 애플리케이션의 메서드를 로컬 메서드인 것처럼 직접 호출할 수 있으므로 분산 애플리케이션 및 서비스를 더 쉽게 만들 수 있습니다.gPRC 클라이언트와 서버는 클라우드 환경에서 데스크탑, 모바일까지 다양한 환경에서 실행할 수 있고 다양한 언어를 지원합니다. (Go, Ptyhon, Ruby, Java, C++ 등등) gRPC 서비스 정의gRPC는 서비스 정의 개념을 기반으로하며 매개 변수 및 반환 유형을 사용하여 원격으로 호출할 수 있는 메서드를 지정합니다. 기본적으로 gRPC..
목차 RPC (Remote Procedure Calls) 란? RPC (Remote Procedure Calls)란 원격에 있는 함수를 호출해 주는 프로세스 간 통신 기술입니다. RPC는 플랫폼에 제약 없이 사용할 수 있어 분산 시스템 기법에 효과적입니다. RPC는 IDL(Interface Definition Language)를 사용하여 인터페이스를 명시합니다. 대표적인 IDL은 아래와 같습니다. Google 의 ProtocolBuffer Facebook 의 Thrift Twitter 의 Finalge RPC 동작 흐름 RPC는 아래와 같이 동작합니다. 클라이언트에서 매개변수를 Stub에 전달합니다. 클라이언트 Stub에서 매개변수를 메시지로 마샬링합니다. 클라이언트 Stub은 메세지를 전송계층으로 전달..
목차Protocol Buffer 란?구글에서 오픈소스로 공개한 언어, 구조화(structured)된 데이터를 직렬화(serialization) 하는 방식입니다. 줄여서 protobuf, 더 줄여서 pb라고 부릅니다.protobuf는 여러 프로그램 언어를 지원합니다. Protocol Buffer 원리Person 이라는 객체를 JSON으로 표현하면 아래와 같습니다.{ "userName": "Martin", "favouriteNumber": 1337, "interests": ["daydreaming", "hacking"]}데이터의 크기는 공백을 제거하면 82 바이트가 사용됩니다. Person 객체에 대한 프로토콜 버퍼 스키마는 다음과 같습니다.message Person { required..