VisualStudio 98

[C#서버] Akka.net과 Cluster Part.4

Akka.NET 클러스터란?Akka.NET 클러스터는 여러 대의 서버(노드)를 하나의 분산 시스템으로 구성하여 확장성, 고가용성, 그리고 장애 복구 기능을 제공하는 시스템입니다. 각 서버는 독립적인 역할을 수행하며, 클러스터를 통해 서로 협력하여 부하를 분산하고 높은 가용성을 유지할 수 있습니다.클러스터의 주요 특징과 개념확장성 및 역할 기반 분산 처리:Akka.NET 클러스터는 서버를 필요에 따라 쉽게 추가하거나 제거할 수 있습니다. 이를 통해 시스템은 수평으로 확장 가능하며, 클라이언트 수나 데이터 처리량이 증가해도 효율적으로 대응할 수 있습니다.각 서버는 클러스터 내에서 특정 역할을 맡습니다. 예를 들어, MMORPG 같은 게임에서는 이동 서버, 전투 서버, 채팅 서버 등 기능별로 서버를 나눠 관리..

[C#서버] Akka.net과 Actor모델 Part.3

주요내용분산 메세지 전달과 RouterPool RouterActorSelect와 Route 비교HOCON을 사용한 Router 설정비동기 actor간 메시지 전달 PipeTo와 ReceiveAsync비동기 호출 단순화 akka.Interfaced액터 메세지 수신 교착 상태 방지와 ReceiveTimeout1. 분산 메세지 전달 Router라우터는 다른 actor 그룹으로 메시지를 전달하는 메시징 허브 역할을 하는 특별한 종류의 actor 입니다. 라우터의 목적은 실제 작업을 수행할 배우들(즉, 라우티)을 통해 작업(메시지 스트림)을 분배하고 균형을 맞추는 것입니다.라우터는 actor이지만 기존 actor와 다르게 한 번에 여러 메시지를 처리할 수 있습니다. 라우터의 목적은 메시지를 처리하는 것이 아니라,..

[C#서버] Akka.net과 Actor모델 Part.2

주요내용액터 메시지 처리 스레드 관리 DispatcherAkka.Net 애플리케이션 설정 HOCON(Human-Optimized Config Object Notation)ReceiveActor메세지 예약 Scheduler퍼블리시 구독 (pub-sub) 패턴런타임 액터 동작 전환 BecomeStacked와 UnbecomStacked액터 동작 전환과 메세지 임시저장 Stash1. Dispatcher ( 액터 메시지 처리 스레드 관리 )액터를 사용할 때, 메시지가 액터에 도달하는 과정은 매우 중요합니다. 여기서 핵심 역할을 하는 것이 바로 Dispatcher입니다. Dispatcher는 액터의 메일박스에서 메시지를 꺼내어 액터가 실제로 작업을 수행하는 OnReceive() 메서드로 전달하는 중개자입니다. 쉽게..

[C#서버] Akka.net과 Actor모델 Part.1

주요내용Akka.net 이란?액터관리와 ActorSystem 액터간 메세지 전달 Tell액터참조와 IActorRef액터생성과 Props액터간 감독과 예외처리 supervision주소로 액터 찾기 ActorSelectionActorSelection과 IActorRef 차이점액터 라이프사이1. Akka.net이란?.NET 플랫폼에서 사용할 수 있는 오픈 소스 프레임워크로, Actor 모델을 구현하여 병렬성과 분산 시스템을 쉽게 구축할 수 있도록 도와줍니다.2. Actor모델 이란?Actor 모델은 큰 프로젝트에서 여러 작업을 동시에 처리하거나, 많은 사용자가 동시에 접속하는 시스템을 만들 때 매우 유용한 패턴입니다. 이 모델을 이해하기 위해 먼저, 우리가 흔히 사용하는 객체 지향 프로그래밍(OOP)과 비교해..

[C#] Func 람다식 Expression오류(cs0834)

우선 Func 람다 형식은 표현식(Expression)람다와 문(Statement)람다 2가지가 존재한다. 표현식(Expression) 람다: 하나의 표현식으로만 구성된 람다입니다. 이 경우 return 키워드를 사용하지 않고, 람다의 결과는 그 표현식 자체가 됩니다.Func square = x => x * x; // 표현식 람다문(Statement) 람다: 중괄호 {}를 사용하여 여러 문으로 구성된 람다입니다. 이 경우 return 키워드를 사용할 수 있습니다.Func square = x =>{ int result = x * x; return result; // 문 람다에서는 return 사용 가능}; C#에서 CS0834 오류는 "A lambda expression with a statem..

VisualStudio/C# 2024.09.11

[C++] && 오른 값 참조(move)와 보편 참조(forward)

1. 오른값 참조 (Rvalue reference)기본적으로 왼값(lvalue)은 메모리에 지속적으로 존재하는 객체를 가리키는 표현식이며, 오른값(rvalue)은 메모리에서 임시로 생성되거나 이동할 수 있는 객체를 가리키는 표현식입니다.오른값 참조는 기존의 왼값 참조와 구분하기 위해 Type&& 형태로 표기됩니다. 객체의 내용을 다른 객체로 이동하여 복사 비용을 최소화하고 성능을 향상시키는 기법입니다. 이를 통해 객체를 복사하는 대신 소유권을 이동시켜 효율적으로 작업할 수 있습니다.  Type&& 형태로 사용되며, Type은 임의의 타입을 나타냅니다. 오른값 참조는 오른값(임시 객체나 이동 가능한 객체)에만 바인딩됩니다.#include #include void process(int&& value) { ..

VisualStudio/C++ 2024.06.04

[VS]Visual Studio LNK1168: 쓰기용으로 열 수 없습니다. 오류

https://learn.microsoft.com/ko-kr/cpp/error-messages/tool-errors/linker-tools-error-lnk1168?view=msvc-170 링커 도구 오류 LNK1168자세한 정보: 링커 도구 오류 LNK1168learn.microsoft.com 링커 도구오류로 파일이 사용 중이고 파일 핸들이 다른 프로세스에 의해 잠겨 있거나 파일 또는 파일이 있는 디렉터리나 네트워크 공유에 대한 쓰기 권한이 없을 때 발생한다. 즉 프로세스가 종료되지 않고 계속 돌아가고 있기 때문에 발생한다.프로세스를 제거해주면 해결된다. 1. cmd창에 tasklist 입력2. cmd 창에 ctrl+f를 하여 찾기를 열어 프로세스 명을 입력하고 찾고자하는 프로세스 PID를 찾는다.3...

VisualStudio 2024.06.04

[C#] is 와 as

C#에서 is와 as 키워드는 타입 검사를 수행하고 타입 변환을 안전하게 처리하는 데 사용됩니다. 이 키워드들은 특히 상속 관계에 있는 객체를 다룰 때 유용합니다.is 키워드is 키워드는 객체가 특정 타입인지 확인할 때 사용됩니다. 객체가 해당 타입이거나 해당 타입에서 파생된 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 또한, C# 7.0부터는 is 키워드를 사용하여 변환된 결과를 새로운 변수에 할당할 수도 있습니다.class Base { }class Derived : Base { }class Program{ static void Main() { Base b = new Derived(); if (b is Derived) { ..

VisualStudio/C# 2024.05.27

[C++서버] IOCP(Completion Port) 모델

Overlapped 콜백기반은 비동기 입출력 함수가 완료가 되면 스레드마다 있는 APC 큐에 일감이 쌓인다.Alertable Wait 상태로 들어가면 APC큐를 전체 비운다. (콜백 함수 호출)APC큐는 쓰레드마다있기 때문에 멀티 스레드 환경에서 적절하게 배분하는데 어려움이 있다.( Alertable Wait 상태로 들어가 APC큐를 비워야 하기 때문이다.)  또 한 Alertable Wait 계속 호출하는 부담이 있다. Overlapped  이벤트 방식으로는 소켓과 이벤트를 1대 1로 대응해야 하고 그리고 감시할 수 있는 수량도 64개 밖에 되지 않기 때문에 많은 수의 이벤트를 관찰하기 어렵다.  이런 문제를 보안하기 위해IOPC(Completion Port) 방식이 나오게 된다. IOPC모델은 Ove..

[C++] Overlapped모델 (비동기 + 논블로킹)

Overlapped 콜백기반은 비동기 입출력 함수가 완료가 되면 스레드마다 있는 APC 큐에 일감이 쌓인다.Alertable Wait 상태로 들어가면 APC큐를 전체 비운다. (콜백 함수 호출)APC큐는 쓰레드마다있기 때문에 멀티 스레드 환경에서 적절하게 배분하는데 어려움이 있다.( Alertable Wait 상태로 들어가 APC큐를 비워야 하기 때문이다.)  또 한 Alertable Wait 계속 호출하는 부담이 있다. Overlapped  이벤트 방식으로는 소켓과 이벤트를 1대 1로 대응해야 하고 그리고 감시할 수 있는 수량도 64개 밖에 되지 않기 때문에 많은 수의 이벤트를 관찰하기 어렵다.  이런 문제를 보안하기 위해 IOPC(Completion Port) 방식이 나오게된다.Overlapped모델..