ROMA 라우팅에 관하여

ROMA의 라우팅에 대한 설명입니다.


루틴 파일



라우팅 파일이란?


  • ROMA 클러스터 구성을 설명하는 설정 파일
  • 이것을 바탕으로 데이터의 분산 등을 실시한다.

    라우팅 파일 만들기


    $ mkroute [options] [nodeIDs]
    Ex.) mkroute 192.168.33.11_10001 192.168.33.11_10002 192.168.33.12_10001 192.168.33.12_10002
    
  • mkroute 명령은 라우팅 파일을 만듭니다.

    라우팅 파일 구성


  • routing 파일의 내용은 각 파일에서 모두 동일합니다.
  • ROMA가 기동 할 때 지정한 address 및 port No.의 파일명의 routing 파일을 읽어들입니다.

    routing_file
    --- !ruby/object:Roma::Routing::RoutingData
    dgst_bits: 32 # 2**32 = 4294967296
    div_bits: 9 # 2**9 = 512
    rn: 2 # redundancy
    nodes:
    - 192.168.33.11_10001
    - 192.168.33.11_10002
    - 192.168.33.12_10001
    - 192.168.33.12_10002
    v_idx:
      0:
      - 192.168.33.11_10001
      - 192.168.33.12_10001
      8388608:
      - 192.168.33.12_10002
      - 192.168.33.11_10001
      16777216:
      - 192.168.33.12_10001
      - 192.168.33.11_10002
      .
      .
      .
    v_clk:
      0: 0
      8388608: 0
      16777216: 0
      .
      .
      .
    

  • dgts_bits
  • 데이터 분산시에 사용하는 ROMA의 Hash table를 몇개로 분산하는지의 설정
    (데이터 배분시 2 ^ ^ 32 개의 공간이 있음)
  • 실제 값은 2**(설정된 수)
  • 기본값은 32(4294967296)


  • div_bits
  • vnodes의 수를 나타낸다
    (dgst_bits로 준비된 2 ^ ^ 32 공간을이 vnodes의 수로 나눕니다)
  • 실제 값은 2**(설정된 수)
  • 디폴트치는 9(512)


  • rn
  • 중복을 나타냅니다
  • 기본값은 2


  • v_idx
  • 각 vnodes에 대한 책임 노드를 나타냅니다
  • 위의 행에서 primary, secondary1, secondary2 ...
  • 같은 서버의 인스턴스가 같은 vnodes에 할당되지 않음
    (--duplicate_in_host 옵션을 사용하면 가능)


  • v_clk
  • vnodes 당 추가 횟수를 나타냅니다
  • 초기값은 0


  • 현재 라우팅 정보 얻기



    routingdump 명령으로 얻을 수 있습니다.> routingdump [yaml|json|yamlbytes|bin]

    라우팅 정보 업데이트


  • instance가 추가되거나 떨어지면 그에 따라 라우팅 정보가 업데이트됩니다.
  • 이전에 소개한 join이나 recover, data lost시의 auto_assign 등
  • ぃ tp // 코 m / 히로 아키 이와세 /
  • ぃ tp // 코 m / 히로아키 이와세 / ms / 087c1b4d0d3
  • ぃ tp // 코 m / 히로 아키 이와세 / MS / 1 1185 09c3614f5

  • 새 라우팅 정보는 라우팅 디렉토리에 차등 정보로 저장됩니다.


  • 'localhost_10001', 'localhost_10002', 'localhost_10003'으로 구축 된 클러스터에서 'localhost_10003'이 떨어지면

  • routing 디렉토리
    $ ls -l
    total 124
    -rw-r--r-- 1 root root 25471 Dec 10 03:07 localhost_10001.route   # 初期ファイル
    -rw-r--r-- 1 root root 19453 Dec 10 05:31 localhost_10001.route.1 # 差分ファイル1(10001)
    -rw-r--r-- 1 root root 25471 Dec 10 03:07 localhost_10002.route   # 初期ファイル
    -rw-r--r-- 1 root root 19453 Dec 10 05:31 localhost_10002.route.1 # 差分ファイル1(10002)
    -rw-r--r-- 1 root root 25471 Dec 10 03:07 localhost_10003.route   # 初期ファイル
    -rw-r--r-- 1 root root     0 Dec 10 03:07 localhost_10003.route.1
    
  • 차이 파일은 파일 이름 끝에 .(숫자)가 추가된 파일입니다.
  • 이번에는 localhost_10003이 떨어진 인스턴스이므로 차이 파일은 0bytes
  • localhost_10001과 localhost10002는 라우팅 업데이트가 발생하여 차이 파일에 변경 정보가 저장됩니다.

  • 차이가 증가함에 따라 '.1', '.2'로 증가합니다.
  • 좋은 웹페이지 즐겨찾기