Skip to content

fzf003/Akka.NET-Labs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MORE FUN with Akka.NET Labs

Persistence Lab

  1. ReceivePersistentActor vs. UntypedPersistentActor
    • PersistenceId
    • OnCommand
    • OnRecover
    • IsRecovering
    • Persist vs. PersistAsync
    • DeferAsync
    • DeleteMessages
  2. AtLeastOnceDeliveryReceiveActor vs. AtLeastOnceDeliveryActor
  3. PersistentView
  4. AsyncWriteJournal
  5. SnapshotStore
    • LoadSnapshot vs. SaveSnapshot
    • DeleteSnapshot vs. DeleteSnapshots
    • OnReplaySuccess vs. OnReplayFailure
    • SnapshotSequenceNr
  6. SQLite
    • 뷰어
    • 데이터 확인하기

Cluster Lab

  1. Overview
    • Create Cluster : akka.cluster.seed-nodes
    • Integrate with Petabridge.Cmd
    • Automatically Mark Unreachable Nodes : akka.cluster.auto-down-unreachable-after
    • Retry Joining Time Interval : akka.cluster.seed-node-timeout
    • Seed Node N개 일 때

    • Petabridge.Cmd Join, Leave, ...

  2. Roles and Minimum Size
    • Define Roles : akka.cluster.roles
    • Cluster-Wide Minimum Size : akka.cluster.min-nr-of-members
    • Per-Role Minimum Size : akka.cluster.role..min-nr-of-members
    • Mix Minimum Size
  3. Gossip Events
    • Subscribe to Gossip Events : Cluster _cluster = Cluster.Get(Context.System); _cluster.Subscribe(Self, ...);
    • Discover Actor by Tag
    • Discover Actor by Role and Path : cluster.State.Members.Where(member => ...);
  4. Warm-up for Cluster Routing
    • Pool - Create Routees Automatically : round-robin-pool
    • Pool - Hanlde Exceptions from Routees
    • Group - Create routees yourself : round-robin-group, path
    • Group - Hanlde Exceptions from Routees
    • Deploy - Create Actor Remotely : akka.actor.deployment..remote
    • Deploy - Hanlde Exceptions from Deployed Actors
    • Remote Deploy - 자동으로 Deathwatch 되는지?

  5. Cluster Routing
    • Pool - Deploy Routees Remotely
    • Pool - Hanlde Exceptions from Routees
    • Pool - Handle Routees Lifecycle

    • Group - Create Routees Yourself
    • Group - Handle Exceptions from Routees
    • Group - Handle Routees Lifecycle

  6. Cluster Singleton
    • Create Singleton
    • Send Message To Singleton

    • Manage Singleton???

    • Buffer Size

  7. Distributed PubSub
    • Publish - Communicate by Topic : DistributedPubSub.Get, Subscribe/SubscribeAck, Publish
    • Publish - Communicate by Topic with Same GroupId : sendOneMessageToEachGroup: true, (Send)
    • Publish - Communicate by Topic with Different GroupId : sendOneMessageToEachGroup: true, (Publish)
    • Publish - Get Topics
    • Send - Communicate by Path : Put, Remove, Send
    • Send - Communicate by Path with localAffinity : localAffinity: true
    • SendToAll - Communicate by Path
    • SendToAll - Communicate by Path with ExcludeSelf : excludeSelf: true
    • 사용자 정의 메시지(모든 Node에 참고해야 하나?, 메시지를 받지 않는 Node도?)

  8. Cluster Client
    • Communicate with Cluster by Path
    • Communicate with Cluster by Topic
    • Subscribe to SubscribeContactPoints Events
    • Subscribe to SubscribeClusterClients Events
    • Send Custom Messages
    • Sample - PingPong
    • akka.cluster.client.receptionist, akka.cluster.client HOCON

  9. Sharding
  10. Distributed Data
  11. Split Brain Resolver


DOING

  1. Labs
    • 2019-05-W1 IoT Tutorials
    • 2019-05-W1 Persistence
    • 2019-05-W1 Akka.Persistence.Extras
    • 2019-05-W1 Cluster + Persistence
    • Cluster Singleton
    • Coordinated Shutdown
    • Split Brain Resolver
    • Cluster Sharding
    • Cluster Distributed Data
    • Hocon
  2. Cluster Extensions
    • Messages version-up
    • Node/Role version-up
    • Consul Actor Discovery
    • Transactions: Saga Pattern
  3. FAQ
    • Local
    • Remote
    • 프로젝트 이해
  4. Message Queue 연동
    • RabbitMQ
    • RabbitMQ Docker
    • HAProxy
  5. OSS
  6. Docker
  7. Books
    • Akka 쿡북
    • 아카 코딩 공작소
    • 러닝 아카
    • 아카를 이용한 마이크로서비스 개발
    • Reactive Application with Akka.NET
  8. 추가 Lab
    • Docker Container Lab
    • Visual Studio Extension Lab

DOING - Labs


TODO - Akka.NET Issues

  • Hocon 다음 행 시작에 ","일 때 예외 발생
  • RegisterOnMemberUp 람다 함수 Self Path가 akka://ClusterLab/system/cluster/$a 이다.
  • .NET Core에서는 "akka.actor.deployment..cluster.allow-local-routess = off"가 동작하지 않는다.
  • Cluster Pool Routing 예외 처리가 Remote Deploy와 다르다(부족하다).
  • ClusterClient "/user/xyz/" ActorPath 마지막에 "/"가 있으면 전달되지 않는다.
  • ClusterClient에세 정의된 사용자 정의 메시지가 Seed Node에도 참조되어 있어야 전송할 수 있다.
  • Hocon 검증 방법?
  • Rolling Update
  • 부하 사전 분산(HAProxy)

TODO - Akka.NET FAQ

  • Long running + Cancel: FSM
  • Ask -> FSM
  • Logging Message Info(including Generic).
  • Log 분리(App, Akka, ...)
  • Large Message
  • 환경 설정 이해(akka.cluster.failure-detector/akka.remote.transport-failure-detector/ ...
  • Serialization
    • readonly
    • WPF
  • WPF
    • main-thread Router x
    • Akka Coding Rules
    • MVVM + Akka Router
  • 장애 처리 재시도?
  • DeadLetter 재시도?
  • 장기간 Busy Actor일 때 Heartbeat 처리?
  • 매뉴얼 무중단 Rolling Update(메시지 버전 Up, ...)
  • Actor Hierarchy 출력(/user/..., /system/...)
  • 메시지 전송을 위해서는 메시지 Dll을 Cluster 모듈 모두가 참조해야 하나? SeedNode까지 포함해서?
  • C#에서 C/C++ 예외 처리하기를 기본으로 제공한다.

TODO - Akka.NET Samples


Akka.NET EXtensions

Blog Korean


Blog - Akka.NET English


Blog - DDD and DesignPatterns English

About

MORE FUN with Akka.NET Labs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%