확정된 거래 이력
프로그램 서비스블록 바깥의 기간 단위 계산수수료 표를 체인에서 실시간으로 읽음
직전 적용 이후 변경됨?
기록 없음
프로토콜 트랜잭션
체인 상태
실행 중 커널이 읽음상수 시간에
비교 대상은 등급 위치가 아니라 수수료율임계값이 움직이거나 등급의 가격이 다시 매겨지면, 등급 인덱스는 그대로인 채 계정이 내는 금액이 바뀝니다.
최종 수수료율은 체인이 확정한 기간은 모든 배치가 커밋된 뒤에야 적용된 것으로 기록됩니다. 도중에 죽으면 기간 전체를 다시 실행하며, 계산이 멱등이므로 안전합니다.
현재 돌아가는 것
거래량 기반 수수료 등급. 이 서비스는 노드에서 스트리밍되는 거래 이력을 소비해 계정별 거래량을 누적하고, 정해진 주기로 스냅숏을 남깁니다. 한 기간이 닫히면 각 계정의 롤링 윈도 거래량을 계산하고, 이를 체인에서 실시간으로 읽은 수수료 설정에 대입한 뒤, 변경된 계정을 배치 단위로 체인에 기록합니다. 이 문장에는 실제로 하중을 받는 세부가 여럿 있습니다.- 등급 표는 체인에서 읽으며, 하드코딩하지 않습니다. 자체 사본을 들고 있는 서비스는 네트워크가 일정을 바꾼 뒤에도 어제의 일정을 계속 적용하게 됩니다.
- 차이를 비교하는 대상은 등급 위치가 아니라 수수료율입니다. 등급 인덱스를 비교하면 실제로 일어나는 두 경우를 놓칩니다. 임계값이 움직여 아무 변화가 없던 계정이 다른 등급에 속하게 되는 경우, 그리고 인덱스는 그대로인 채 등급의 가격이 다시 매겨지는 경우입니다. 둘 다 계정이 내는 금액을 바꾸지만, 어느 쪽도 인덱스를 바꾸지 않습니다.
- 최종 수수료율은 체인이 결정합니다. 트랜잭션은 등급 인덱스를 담고, 실행이 이를 현재 수수료 설정에 대조해 해석합니다. 유효 범위를 벗어난 등급 인덱스는 일부만 적용되는 대신 배치 전체를 실패시킵니다.
- 한 기간은 모든 배치가 확정된 뒤에야 적용 완료로 기록됩니다. 기간 도중에 프로세스가 죽으면 해당 기간 전체를 다시 실행합니다. 계산이 멱등이므로 안전합니다. 같은 윈도는 언제나 같은 결과를 냅니다.
장애 모델
이 서비스는 저마다 때때로 사용할 수 없게 되는 두 시스템 사이에 놓여 있습니다. 설계는 이를 예외가 아니라 전제로 삼습니다. 데이터베이스, 노드의 스트림, 노드의 API 같은 의존성 장애는 백오프를 두고 재시도합니다. 프로세스를 종료하지는 않습니다. 재시작한다고 닿지 않는 의존성이 복구되지는 않으며, 장애 시간에 콜드 스타트만 얹을 뿐이기 때문입니다. 치명적으로 남는 것은 재시작이 실제로 고칠 수 있는 것, 또는 운영자가 반드시 보아야 하는 것입니다. 시작 시점의 잘못된 설정, 헬스 엔드포인트 바인딩 실패, 그리고 패닉입니다. 장애가 이어지는 동안 프로세스는 계속 살아 있으면서 자신을 not-ready로 보고하고 오류를 셉니다. 따라서 운영에서 보아야 할 신호는 프로세스가 살아 있는지가 아니라 N분 동안 not-ready 상태가 이어졌는지입니다. 그리고 이쪽이 유용한 질문입니다. 한 시간 동안 데이터 수집에 실패해 온 살아 있는 프로세스야말로 실제 장애이기 때문입니다. 오케스트레이터가 보내는 신호에는 정상 종료로 응답합니다. 작업이 멈추고, 체크포인트가 플러시되고, 프로세스가 깨끗하게 끝납니다. 그렇지 않으면 일상적인 배포마다 플러시되지 않은 윈도 하나와 재실행 한 번을 대가로 치르게 됩니다.계산은 되었지만 아직 적용되지 않은 기간은 잃어버린 기간이 아닙니다. 계산이 멱등이고 적용 완료 기간은 기록이 성공한 뒤에야 남기 때문에, 중단된 실행은 해당 윈도를 건너뛰지 않고 다시 수행하면서 재개됩니다.
이 패턴이 일반화되는 이유
결과를 체인에 되돌려 기록하는 경로는 범용입니다. 프로토콜 트랜잭션에는 계정 단위 설정을 지정하는 것과 전역 설정을 지정하는 것이 있으며, 프로그램 서비스란 확정된 이력에서 그중 하나에 넣을 값을 계산하는 모든 프로세스를 가리킵니다. 현재 돌아가고 있는 것은 수수료 등급 하나뿐입니다. 인센티브 프로그램, 추천인 귀속, 캠페인 자격 판정도 형태는 같습니다. 거래 이력에 대한 기간 단위 계산, 현재 적용된 값과의 차이 비교, 그리고 배치 단위의 되기록입니다. 이런 계산이 커널이 아니라 이쪽에 속하는 이유는 수수료 등급과 같습니다. 계산은 주기적이고 과거를 대상으로 하지만, 실행은 그 답을 상수 시간 조회로 얻어야 하기 때문입니다. 이 중 구현된 것은 아직 없습니다. 일반화되는 것은 패턴일 뿐, 그 패턴을 쓰겠다는 약속이 아닙니다. 이 프로그램의 상업적 조건은 수수료 및 프로그램에 있습니다. 이 페이지가 다루는 것은 그 결과가 어떻게 온체인에 올라가는지입니다.다음으로 읽을 문서
인덱서
이 서비스가 소비하는 스트림입니다.
수수료
상업적 측면입니다. 등급이 무엇이고 비용이 얼마인지 다룹니다.
IntentionKernel
되돌려 기록된 설정을 실행이 어떻게 읽는지 설명합니다.
상태 모델
설정 키에 버전이 붙는 이유, 그리고 클라이언트가 이를 실시간으로 조회해야 하는 이유입니다.