Orleans 애플리케이션

일반적인 Orleans 애플리케이션은 조직이 상주하는 서버 프로세스(사일로)의 클러스터와 외부 요청을 수신하고, 조직 메서드 호출로 전환하여 결과를 반환하는 클라이언트 프로세스 세트(일반적으로 웹 서버)로 구성됩니다. 따라서 Orleans 애플리케이션을 실행하기 위해 가장 먼저 해야 할 일은 사일로 클러스터를 시작하는 것입니다. 테스트를 위해 클러스터는 단일 사일로로 구성될 수 있습니다. 신뢰할 수 있는 프로덕션 배포의 경우 내결함성 및 크기 조정을 위해 클러스터에 둘 이상의 사일로가 필요합니다.

클러스터가 실행되면 클러스터에 연결하고 요청을 조직에 보낼 수 있는 하나 이상의 클라이언트 프로세스를 시작할 수 있습니다. 클라이언트는 사일로 - 게이트웨이의 특수 TCP 엔드포인트에 연결합니다. 기본적으로 클러스터의 모든 사일로에는 클라이언트 게이트웨이가 사용하도록 설정되어 있습니다. 따라서 클라이언트는 성능 및 복원력을 향상하기 위해 모든 사일로에 병렬로 연결할 수 있습니다.

사일로 구성 및 시작

사일로는 ClusterConfiguration 개체를 통해 프로그래밍 방식으로 구성됩니다. 인스턴스화하고 직접 채우거나, 파일에서 설정을 로드하거나, 다양한 배포 환경에 사용할 수 있는 여러 도우미 메서드를 사용하여 만들 수 있습니다. 로컬 테스트의 경우 LocalhostPrimarySilo 도우미 메서드를 사용하는 것이 가장 쉬운 방법입니다. 그런 다음, 구성 개체가 SiloHost 클래스의 새 인스턴스로 전달되며, 그 후에 초기화하고 시작할 수 있습니다.

사일로를 호스팅하기 위해 .NET Framework 4.6.1 이상을 대상으로 하는 빈 콘솔 애플리케이션 프로젝트를 만들 수 있습니다. Microsoft.Orleans.Server NuGet 메타 패키지를 프로젝트에 추가합니다.

Install-Package Microsoft.Orleans.Server

다음은 로컬 사일로를 시작하는 방법의 예입니다.

var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
var silo = new SiloHost("Test Silo", siloConfig);
silo.InitializeOrleansSilo();
silo.StartOrleansSilo();

Console.WriteLine("Press Enter to close.");
// wait here
Console.ReadLine();

// shut the silo down after we are done.
silo.ShutdownOrleansSilo();

클라이언트 구성 및 연결

사일로 클러스터에 연결하고 조직에 요청을 보내기 위한 클라이언트는 ClientConfiguration 개체 및 ClientBuilder를 통해 프로그래밍 방식으로 구성됩니다. ClientConfiguration 개체를 인스턴스화하고 직접 채우거나, 파일에서 설정을 로드하거나, 다양한 배포 환경에 사용할 수 있는 여러 도우미 메서드를 사용하여 만들 수 있습니다. 로컬 테스트의 경우 LocalhostSilo 도우미 메서드를 사용하는 것이 가장 쉬운 방법입니다. 그런 다음, 구성 개체가 ClientBuilder 클래스의 새 인스턴스로 전달됩니다.

ClientBuilder는 추가 클라이언트 기능을 구성하기 위한 더 많은 메서드를 제공합니다. ClientBuilder 개체의 해당 ClientBuilder.Build() 메서드가 호출된 후 IClusterClient 인터페이스의 구현을 가져옵니다. 마지막으로 반환된 개체에서 IClusterClient.Connect() 메서드를 호출하여 클러스터에 연결합니다.

클라이언트를 실행하기 위해 .NET Framework 4.6.1 이상을 대상으로 하는 빈 콘솔 애플리케이션 프로젝트를 만들거나 사일로를 호스팅하기 위해 만든 콘솔 애플리케이션 프로젝트를 다시 사용할 수 있습니다. Microsoft.Orleans.Client NuGet 메타 패키지를 프로젝트에 추가합니다.

Install-Package Microsoft.Orleans.Client

클라이언트가 로컬 사일로에 연결할 수 있는 방법의 예는 다음과 같습니다.

var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();

프로덕션 구성

여기서 사용한 구성 예제는 localhost와 동일한 컴퓨터에서 실행되는 사일로 및 클라이언트를 테스트하기 위한 것입니다. 프로덕션에서 사일로와 클라이언트는 일반적으로 서로 다른 서버에서 실행되며 신뢰할 수 있는 클러스터 구성 옵션 중 하나로 구성됩니다. 자세한 내용은 구성 가이드클러스터 관리에 대한 설명에서 확인할 수 있습니다.

다음 단계