Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

연관 키워드 : difference between redo and snapshot 


AKKA에서 스냅샷의 의미

액터를 통해 수많은 실시간 메시지(이벤트)가 발생하며, 그 메시지는 상태를 수없이 변경을 합니다.

어떠한 기능을위해 그 상태 변경을 우리가 의도한 만큼 저장을 하고 복원을 할수가 있습니다.


스냅샷 구현

Code Block
final case class SnapshotMetadata(persistenceId: String, sequenceNr: Long, timestamp: Long = 0L)


private Object state;
private int snapShotInterval = 1000;

// 스냅샷을 지원하는 메시지 정의
@Override public Receive createReceive() {
  return receiveBuilder().
    match(SaveSnapshotSuccess.class, ss -> {
      SnapshotMetadata metadata = ss.metadata();
      // ...
    }).
    match(SaveSnapshotFailure.class, sf -> {
      SnapshotMetadata metadata = sf.metadata();
      // ...
    }).
    match(String.class, cmd -> {
      persist( "evt-" + cmd, e -> {
        updateState(e);
        if (lastSequenceNr() % snapShotInterval == 0 && lastSequenceNr() != 0)
          saveSnapshot(state);
      });
    }).build();
}

...