Versions Compared

Key

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

...

초당 5천만 메시지를 커버 할수 있으며, 실시간 모니터링 객체(이벤트를 받아주는)로 사용하기 충분한 스펙을 가지고 있습니다.

네트워크로 확장을 하더라도확장시, 액터는 Netty에 기반한 네트워크 프로토콜을 사용함으로 단일서버 10000 tps의 고성능 TCP 프로토콜을 사용하며,Netty 자체는 단일서버 160만tps의 성능을 낼수 있습니다.

Akka Remote의 추상화로 인해 TPS 저하는 일어날수 있지만, 당장 더 빠른 모듈을 찾기는 어려워 보입니다.

Netty 참고 성능표 : https://github.com/ronenhamias/netty-perf-testing/wiki/Netty-3-Throughput-test

단순하게 모니터링 집계용도로 직접 설계한다고 하면, 액터 객체를 사용할 필요는 없으나,

비동기 병렬처리 프로그래밍 ( 공유객체 카운팅 증가에 따른 락처리)을 포함하여


Matrix 집계를 일정시간에 수행 하고 Matrix서버에 보고 등  부가적인 기능을 직접 구현해야합니다Akka를 사용하지 않는 기존 시스템은 변경없이, 도메인 이벤트 카운팅 모니터링 기능만을 빌트인해보겠습니다.

액터 모니터링 시스템 탑재하기

Code Block
themeEmacs
using Akka.Monitoring;
using Akka.Monitoring.ApplicationInsights;
using Akka.Monitoring.Datadog;
using Akka.Monitoring.PerformanceCounters;
using Akka.Monitoring.Prometheus;

var MonitorTool = Environment.GetEnvironmentVariable("MonitorTool");
var MonitorToolCon = Environment.GetEnvironmentVariable("MonitorToolCon");

switch (MonitorTool)
{
	case "win":
		var win = ActorMonitoringExtension.RegisterMonitor(actorSystem,
			new ActorPerformanceCountersMonitor(
				new CustomMetrics
				{
					Counters = { "akka.custom.metric1", "akkacore.message" },
					Gauges = { "akka.messageboxsize" },
					Timers = { "akka.handlertime" }
				}));
		break;
	case "azure":
		var azure = ActorMonitoringExtension.RegisterMonitor(actorSystem, new ActorAppInsightsMonitor(appConfig.MonitorToolCon));
		break;
	case "prometheus":
		// prometheusMonotor 를 사용하기위해서, MerticServer를 켠다...(수집형 모니터,Agent탑재)
		// http://localhost:10250/metrics  - 여기서 제공되는 metrics의 포맺과 호환되는 여러종류의 데시보드들과 연동하여 시각화가능합니다.
		metricServer = new MetricServer(10250);
		metricServer.Start();
		var prometheus = ActorMonitoringExtension.RegisterMonitor(actorSystem, new ActorPrometheusMonitor(actorSystem));
		break;
	case "datadog":
		var statsdConfig = new StatsdConfig
		{
			StatsdServerName = MonitorToolCon
		};
		var dataDog = ActorMonitoringExtension.
			RegisterMonitor(actorSystem, new ActorDatadogMonitor(statsdConfig));
		break;
}

...

카운팅 보고가 API단위로 이루어지고 보고 시점을 직접해야하는 경우라고하면 유용할수 있습니다.

카운팅 측정및 모니터링하기

본 샘플 프로젝트에서, 백만건 이상의 원격 메시지를 유실없이 초당 TPS를 조절( 1000 ,2000,3000) 해 가며 테스트를 하였습니다.

유실없는것은 최종 이벤트 카운트로도 가능하지만, TPS의 측정은 모니터링 툴의 도움을 받아야하며

여기서는 플랫폼 제약없이 다양한 모니터링툴로 검증을 하였습니다.

윈도우 성능 카운터 추가

이벤트가 한번이라도 발생하면 AKKA라는 수집대상 그룹이 추가됩니다.

...

표 : 분산처리된 실시간 메시징의 합계를 구하기

Data Dog

Image Added



윈도우 성능 프로파일러가 주로 단일장비 스케일업을 위해 튜닝할때 사용된다라고 하면

...

다음 장에서는, 도메인 처리에 관련된 실시간 메시징을 분산처리할수 있는 클러스터 메시징에 대해 알아보겠습니다.


추가 자료
Image Added

APM을 위한 Akka.net 분산액터메시지 분산추적하는 툴을 제공합니다.

액터의 활용이 높아 개수가 많을시 유용하게 활용할수 있습니다.

링크 : https://petabridge.com/blog/phobos-2.0-otel/?fbclid=IwAR2d3ZKv16_frBmfGKjftya_yL7zQzH4j6BoaeTFv3xlV0csaXl9iVPTskA


참고링크:

...