Versions Compared

Key

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

...

  • 클러스터 싱글톤 액터 : 클러스터내에 단 하나만 작동가능 ( 해당 롤을가진 노드가 다운되면, 다른 노드에게 자동 위임합니다.)
  • FSM Actor : 실시간 메시지에대한 상태머신컨셉을 적용할수 있으며. 특정 초만큼 메시징을 모아 컬렉션 처리가 가능합니다.
  • 벌크 Insert : 대량 업데이트시 사용되며, 천건 건바이건으로 인서트 하는것보다.  십만건 벌크처리를 하는것이 훨씬 시간이 적게 소요됩니다.

클러스터 싱글톤 액터 구현

클러스터 싱글톤 액터는 클러스터내에 단하나만 존재하는 액터의 역활만 가지고 있으며

배치처리를 하는 기능 액터는 싱글톤의 Child로 존재하게 되면되겠습니다.

클러스터내에 싱글톤이 유지되는 방식

  • a,b,c 3개의 노드가 떳고 a가 싱글톤 기능을 가지고 있다고 가정해봅시다.
  • 스케일 다운을 위해 a가 다운이 되면, b와 c중 싱글톤 역활을 하며 위임됩니다. 
  • 만약 특정 노드가 다운될일이없고 고정하고 싶다고하면, 클러스터내에 싱글톤 Role을 하나의 노드에만 고정하면됩니다.
Code Block
themeEmacs
using System;
using System.Collections.Generic;
using Akka.Actor;

namespace AkkaNetCore.Actors
{
    public class SingleToneActor : ReceiveActor
    {
        private readonly ILoggingAdapter logger = Context.GetLogger();
        private readonly string id;                   
        private IActorRef BatchWriter_Rev;
        private IActorRef BatchManager_Rev;
		
        public SingleToneActor()
        {
            BatchWriter_Rev = Context.ActorOf<BatchWriterActor>();
            BatchManager_Rev = Context.ActorOf(Props.Create(() => new BatchActor(10)));
            BatchManager_Rev.Tell(new SetTarget(BatchWriter_Rev));

            id = Guid.NewGuid().ToString();
            logger.Info($"싱글톤 액터 생성:{id}");
            startTime = DateTime.Now;            
            totalCount = 0;

            ReceiveAsync<DelayMsg>(async msg =>
            {
				BatchManager_Rev.Tell(new Queue(msg));
            });
        }
    }
}
//싱글톤 클러스터 액터작동                
var actor = AkkaBoostrap.BootstrapSingleton<SingleToneActor>(actorSystem, "SingleToneActor", "akkanet");
SingleToneActor = AkkaBoostrap.BootstrapSingletonProxy(actorSystem, "SingleToneActor", 
	"akkanet", "/user/SingleToneActor", "singleToneActorProxy");

...