Remote Rendering Oturumları

Azure Uzaktan İşleme'de (ARR), oturum önemli bir kavramdır. Bu makalede oturumun tam olarak ne olduğu açıklanmaktadır.

Genel Bakış

Azure Uzaktan İşleme, karmaşık işleme görevlerini buluta boşaltarak çalışır. Çoğu bulut sunucusunun GPU'ları olmadığından bu işleme görevleri yalnızca herhangi bir sunucu tarafından gerçekleştirilemez. Söz konusu veri miktarı ve etkileşimli kare hızlarında sonuç üretmenin zor olması nedeniyle, hangi sunucunun hangi kullanıcı isteğini işlediğinin sorumluluğu, daha yaygın web trafiği için mümkün olabileceğinden, anında başka bir makineye de devredilemiyordur.

Bu, Azure Uzaktan İşleme'yi kullandığınızda, işleme isteklerinizi işlemek için gerekli donanım özelliklerine sahip bir bulut sunucusunun özel olarak ayrılmış olması gerektiği anlamına gelir. Oturum, bu sunucuyla etkileşimde bulunan her şeyi ifade eder. İlk kullanım için bir makine ayırma (kiralama) isteğiyle başlar, modelleri yüklemeye ve işlemeye yönelik tüm komutlarla devam eder ve kirayı bulut sunucusunda serbest bırakmakla biter.

Oturumları yönetme

Oturumları yönetmenin ve oturumlarla etkileşim kurmanın birden çok yolu vardır. Oturumları oluşturmanın, güncelleştirmenin ve kapatmanın dilden bağımsız yolu, oturum yönetimi REST API'sini kullanır. C# ve C++'da bu işlemler ve RenderingSessionsınıfları RemoteRenderingClient aracılığıyla kullanıma sunulur. Unity uygulamaları için bileşen tarafından ARRServiceUnity sağlanan başka yardımcı program işlevleri de vardır.

Etkin bir oturuma bağlandıktan sonra, modelleri yükleme ve sahneyle etkileşim kurma gibi işlemler sınıfı aracılığıyla RenderingSession kullanıma sunulur.

Birden çok oturumu aynı anda yönetme

Bir cihazdan birden çok oturuma tam olarak bağlanmak mümkün değildir. Ancak, tek bir uygulamadan istediğiniz kadar oturum oluşturabilir, gözlemleyebilir ve kapatabilirsiniz. Uygulamanın bir oturuma bağlanması gerekmediği sürece HoloLens 2 gibi bir cihazda da çalıştırılması gerekmez. Bu tür bir uygulamanın kullanım örneği, oturumları merkezi bir mekanizma aracılığıyla denetlemek istemeniz olabilir. Örneğin, birden çok tabletin ve HoloLens cihazının oturum açabildiği bir web uygulaması oluşturulabilir. Daha sonra uygulama tabletlerde hangi CAD modelinin görüntüleneceği gibi seçenekleri görüntüleyebilir. Bir kullanıcı seçim yaparsa, paylaşılan bir deneyim oluşturmak için bu bilgiler tüm HoloLens cihazlarına iletilir.

Oturum aşamaları

Her oturum birden çok aşamadan geçer.

Oturum başlatma

ARR'ye yeni bir oturum oluşturmasını istediğinizde, ilk olarak bir oturum UUID'sini döndürmeniz gerekir. Bu UUID, oturum hakkındaki bilgileri sorgulamanıza olanak tanır. UUID ve oturumla ilgili bazı temel bilgiler 30 gün boyunca kalıcı hale getirilir, böylece oturum durdurulduktan sonra bile bu bilgileri sorgulayabilirsiniz. Bu noktada oturum durumu Başlatılıyor olarak bildirilir.

Ardından Azure Remote Rendering, oturumunuzu barındırabilecek bir sunucu bulmaya çalışır. Bu arama için iki parametre vardır. İlk olarak, yalnızca bölgenizdeki sunucuları ayırır. Bunun nedeni, bölgeler arasındaki ağ gecikme süresinin iyi bir deneyimi garanti etmek için çok yüksek olmasıdır. İkinci faktör, belirttiğiniz istenen boyutdur . Her bölgede, Standart veya Premium boyut isteğini karşılayabilen sınırlı sayıda sunucu vardır. Sonuç olarak, istenen boyuttaki tüm sunucular şu anda bölgenizde kullanılıyorsa oturum oluşturma başarısız olur. Hatanın nedeni sorgulanabilir.

Önemli

Standart sunucu boyutu istemeniz ve isteğin yüksek talep nedeniyle başarısız olması, Premium sunucu istemenin de başarısız olacağı anlamına gelmez. Bu nedenle, sizin için bir seçenekse Premium sunucu boyutuna geri dönmeyi deneyebilirsiniz.

Hizmet uygun bir sunucu bulduğunda, azure uzaktan işleme konağına dönüştürmek için uygun sanal makineyi (VM) üzerine kopyalaması gerekir. Bu işlem birkaç dakika sürer. Daha sonra VM önyüklendi ve oturum durumu Hazır'a geçiş yaptı.

Bu noktada, sunucu yalnızca girişinizi bekliyor. Bu aynı zamanda hizmet için faturalandırıldığınız noktadır.

Oturuma Bağlan

Oturum hazır olduktan sonra oturuma bağlanabilirsiniz. Cihaz bağlıyken modelleri yüklemek ve değiştirmek için komutlar gönderebilir. Her ARR konağı bir kerede yalnızca bir istemci cihazına hizmet eder, bu nedenle bir istemci bir oturuma bağlandığında, işlenen içerik üzerinde özel denetime sahiptir. Bu, işleme performansının denetiminizin dışındaki nedenlerden dolayı hiçbir zaman değişmeyeceğini de gösterir.

Önemli

Bir oturuma yalnızca bir istemci bağlanabilir , ancak oturumlarla ilgili geçerli durumları gibi temel bilgiler bağlanmadan sorgulanabilir.

Cihaz bir oturuma bağlıyken, diğer cihazların bağlanma girişimleri başarısız olur. Ancak bağlı cihazın bağlantısı isteğe bağlı olarak veya bir tür hata nedeniyle kesildiğinde oturum başka bir bağlantı isteğini kabul eder. Önceki tüm durum (yüklü modeller ve benzeri) bir sonraki bağlantı cihazı temiz bir sayfa alacak şekilde atılır. Bu nedenle oturumlar farklı cihazlar tarafından birçok kez yeniden kullanılabilir ve çoğu durumda oturum başlatma ek yükünü son kullanıcıdan gizlemek mümkün olabilir.

Önemli

Uzak sunucu hiçbir zaman istemci tarafı verilerinin durumunu değiştirmez. Tüm veri mutasyonları (dönüşüm güncelleştirmeleri ve yük istekleri gibi) istemci uygulaması tarafından gerçekleştirilmelidir. Tüm eylemler istemci durumunu hemen güncelleştirir.

Oturum sonu

Yeni bir oturum istediğinizde, genellikle bir ila sekiz saat arasında bir maksimum kira süresi belirtirsiniz. Bu süre, konağın girişinizi kabul edeceği süredir.

Oturumun sona ermesinin iki normal nedeni vardır. Oturumun el ile durdurulmasını istersiniz veya en uzun kiralama süresi dolar. Her iki durumda da, konağa yönelik tüm etkin bağlantılar hemen kapatılır ve hizmet bu sunucuda kapatılır. Daha sonra sunucu Azure havuzuna geri verilir ve başka amaçlar için talep edilebilir. Oturumun durdurulması geri alınamaz veya iptal edilemez. Durdurulan bir oturumda oturum durumunu sorgulamak, el ile kapatılıp kapatılmadığına veya kira süresi üst sınırına ulaşıldığına bağlı olarak Durduruldu veya Süresi Doldu sonucunu döndürür.

Bazı hatalar nedeniyle oturum da durdurulabilir.

Her durumda, oturum durdurulduktan sonra daha fazla faturalandırılamazsınız.

Uyarı

Oturuma bağlanıp bağlanmadığınız ve ne kadar süreyle faturalamayı etkilemez. Hizmet için ne kadar ödeme yaptığınız oturum süresine bağlıdır; bu, sunucunun sizin için özel olarak ayrıldığı süre ve istenen donanım özellikleri (ayrılan boyut) anlamına gelir. Bir oturum başlatırsanız, beş dakika boyunca bağlanın ve oturumu durdurmazsanız, kira süresi dolana kadar çalışmaya devam eder, tam oturum kiralama süresi için faturalandırılırsınız. Buna karşılık, maksimum kira süresi çoğunlukla bir güvenlik ağıdır. Sekiz saatlik kira süresine sahip bir oturum isteyip istemediğiniz fark etmez, daha sonra oturumu el ile durdurursanız yalnızca beş dakika kullanın.

Oturumun kira süresini uzatma

Etkin bir oturumun kiralama süresini uzatabilirsiniz( daha uzun süre ihtiyacınız olduğu ortaya çıkarsa).

Örnek kod

Aşağıdaki kodda oturum başlatma, hazır durumu bekleme, bağlanma ve ardından bağlantıyı kesme ve kapatma işleminin basit bir uygulaması gösterilmektedir.

RemoteRenderingInitialization init = new RemoteRenderingInitialization();
// fill out RemoteRenderingInitialization parameters...

RemoteManagerStatic.StartupRemoteRendering(init);

SessionConfiguration sessionConfig = new SessionConfiguration();
// fill out sessionConfig details...

RemoteRenderingClient client = new RemoteRenderingClient(sessionConfig);

RenderingSessionCreationOptions rendererOptions = new RenderingSessionCreationOptions();
// fill out rendererOptions...

CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(rendererOptions);

RenderingSession session = result.Session;
RenderingSessionProperties sessionProperties;
while (true)
{
    var propertiesResult = await session.GetPropertiesAsync();
    sessionProperties = propertiesResult.SessionProperties;
    if (sessionProperties.Status != RenderingSessionStatus.Starting &&
        sessionProperties.Status != RenderingSessionStatus.Unknown)
    {
        break;
    }
    // REST calls must not be issued too frequently, otherwise the server returns failure code 429 ("too many requests"). So we insert the recommended delay of 10s
    await Task.Delay(TimeSpan.FromSeconds(10));
}

if (sessionProperties.Status != RenderingSessionStatus.Ready)
{
    // Do some error handling and either terminate or retry.
}

// Connect to server
ConnectionStatus connectStatus = await session.ConnectAsync(new RendererInitOptions());

// Connected!

while (...)
{
    // per frame update

    session.Connection.Update();
}

// Disconnect
session.Disconnect();

// stop the session
await session.StopAsync();

// shut down the remote rendering SDK
RemoteManagerStatic.ShutdownRemoteRendering();

Birden çok RemoteRenderingClient ve RenderingSession örnek koddan korunabilir, değiştirilebilir ve sorgulanabilir. Ancak bir kerede yalnızca tek bir RenderingSession cihaz bağlanabilir.

Sanal makinenin ömrü örneğe RemoteRenderingClient veya RenderingSession örneğe bağlı değildir. RenderingSession.StopAsync oturumu durdurmak için çağrılmalıdır.

Kalıcı oturum kimliği aracılığıyla RenderingSession.SessionUuid() sorgulanabilir ve yerel olarak önbelleğe alınabilir. Bu kimlikle, bir uygulama bu oturuma bağlanmak için çağırabilir RemoteRenderingClient.OpenRenderingSessionAsync .

True olduğundaRenderingSession.IsConnected, modelleri yüklemeye, RenderingSession.Connection varlıkları işlemeye ve işlenen sahne hakkındaki bilgileri sorgulamaya yönelik işlevleri içeren bir örneğini RenderingConnectiondöndürür.

API belgeleri

Sonraki adımlar