MXC mimarisi ve kapsayıcılık modelleri

MXC, iş yükü niyetini iş yükünü çalıştıran platform mekanizmasından ayırır. Konak uygulamanız kaynak izinlerini açıklamak ve yürütme talep etmek için .NET, TypeScript veya Rust SDK'sını kullanır. MXC, isteği geçerli konakta containment arka ucunun işlemlerine çevirir.

Bu tasarım, her arka ucun aynı özellikleri veya yalıtım özelliklerini sağladığını iddia etmeden uygulamalara tutarlı bir tümleştirme yüzeyi sağlar.

Mimari katmanları

MXC tümleştirmesi dört ana katmana sahiptir:

Katman Sorumluluk
Ana uygulama veya aracı çalışma zamanı Görevi sınıflandırır, güvenilir ilke varsayılanlarını seçer, girişler sağlar ve çıktı ile onayı işler
MXC SDK ve ilke sözleşmesi Desteği bulur, iş yükü amacını sürümlenmiş bir yapılandırmaya dönüştürür, sandbox'ları başlatır ve yaşam döngüsü ile tanılamayı kullanıma sunar
MXC yürütme katmanı Yapılandırmayı doğrular, arka uçu çözümler ve desteklenen kontratı platform işlemlerine çevirir
Containment arka ucu Yürütme ortamını oluşturur ve platformun ve backend'in desteklediği ilke özelliklerini uygular

Ana uygulama, ilke kararlarının sorumluluğunu sürdürür. Kodlama aracısı bir model veya kaynak izni önerebilir, ancak güvenilir mantık veya insan onayı olmadan kendi yetkisini seçmemeli veya genişletmemelidir. Konağın MXC dışında çalıştırdığı kod, iş yükünün yalıtımı dışında kalır.

İlke, yapılandırma ve çalışma zamanı ayarları

İlke, iş yükünün nelere erişebileceğini açıklar. Yürütme isteği neyin çalıştırılacağını, nerede çalıştırılacağını ve hangi kapsayıcının kullanılacağını ekler. Çalışma zamanı ayarları, zaten çalışmakta olan bir ara sunucunun uç noktası gibi yürütme için gereken değerleri sağlar.

V1 SDK'ları bu ayarları tek bir ContainerRequest içinde taşır. Dosya sistemi, ağ ve kullanıcı arabirimi özellikleri erişimi; komut, çalışma dizini, ortam, zaman aşımı ve yalıtım özellikleri ise yürütmeyi açıklar. SDK, isteği kararlı 1.0.0 şema sözleşmesine dönüştürür, bu nedenle bir şema sürümü belirtmezsiniz.

JSON yürütme yapılandırması, serileştirilmiş bir SDK nesnesiyle birbirinin yerine kullanılamaz. Örneğin, isteğin ui.allowInputInjection ve timeoutMs özellikleri yapılandırmanın ui.injection ve process.timeout ayarlarına karşılık gelir. SDK türlerini veya oluşturduğunuz yapılandırma sürümünün şemasını kullanın.

Tek seferlik ve durum bilgisi olan yaşam döngüleri

MXC iki yaşam döngüsü deseni destekler.

Tek seferlik yürütme korumalı alanı oluşturur, bir iş yükü çalıştırır ve korumalı alanı yok eder. Bağımsız kodlama ajanı araçları, oluşturulan komutlar, derlemeler, testler ve betikler için kullanın. Her eylem için yeni bir dar sandbox, korunan durumu sınırlar ve geniş bir ilke oluşturma baskısını azaltır.

durum farkındalıklı yürütme beş aşamadan oluşur: tedarik etme, başlatma, yürütme, durdurma ve tedariki kaldırma. Sağlama, çağıranın daha sonraki aşamalara değişmeden geçirdiği opak bir ContainerId döndürür ve çağıran, sonlandırmadan önce birden çok komut yürütebilir. Bu deseni yalnızca iş yükü ajan profili, yüklü araçlar, yapılandırma veya işletim sistemi ortamı gibi kalıcı duruma bağlı olduğunda kullanın. MXC 1.0'da V1 SDK yaşam döngüsü API'leri IsolationSession ve WSLc'yi destekler.

Durum bilgisi olan yürütme, MXC'yi durum sahibi yapmaz. Arka uç korumalı alan kaynağının sahibidir ve çağıran tanımlayıcısını depolar ve yaşam döngüsünü yönetir. Yürütmenin durdurulması ve kaynak tahsisinin kaldırılması işlemleri farklı işlemlerdir; durdurma sonrasında tam olarak hangi durumun korunduğu arka uca bağlıdır.

Çalıştırma, spawn ve PTY yürütmesi, ortamın ne kadar süreyle var olduğunu değil, konağınızın çalışan bir işlemle nasıl etkileşime geçtiğini açıklar. Çalıştırma çağrısı, yürütme tamamlandığında yakalanan çıkışı döndürür. Spawn çağrısı, iş yükü çalışırken host’unuza canlı standart giriş, çıkış ve hata akışları verir. PTY çağrısı, iş yükünü, boyutu da dahil olmak üzere ana bilgisayarınızın denetlediği bir sözde terminale bağlar. Desteklenen birleşimler için seçili SDK ve arka ucu denetleyin.

Ana bilgisayar sorumlulukları

Bir yürütme zaman aşımı ayarlayın ve iş yükü hatasını, başlatma hatasını ve iptali ayrı ayrı işleyin. SDK beklemesini iptal etmek, iş yükünü sonlandırmakla aynı olmayabilir. SDK'nın sonlandırma ve kaynak serbest bırakma protokolünü izleyin ve yürütmenin ve isteğe bağlı ret yakalamanın tamamlanabilmesi için gerekli beklemeyi tamamlayın.

Durum bilgisi olan yürütme için, daha sonraki bir aşama başarısız olduğunda bile temizlemeyi düzenleyin. Başarısız bir durdurma, uygulamanızın sahip olduğu kaynakların provizyonunu kaldırma girişimini engellememelidir.

Korumalı alan kaldırma işlemi genellikle izin verilmiş ana bilgisayar dizinlerine yapılan yazma işlemlerini veya izin verilen ağ hizmetleri aracılığıyla gerçekleştirilen eylemleri geri almaz. Çıktı konumlarını kasıtlı olarak seçin ve sonraki görevler bunları kullanmadan önce hangi sonuçların tutulacaklarına karar verin.

Kapsayıcı türü seçin

İş yükünüzün hedefleri ve kısıtlamalarıyla başlayın, örneğin:

İş yükü gereksinimi Başlangıç türü Neden?
Düşük başlatma yüküne sahip seçili ana bilgisayar araçlarına ve dizin yollarına ihtiyaç duyan komutlar İşlem yalıtımı Görev kapsamındaki izinlerle konak ortamında çalışır
Ayrı bir Windows profili veya etkileşimli oturum gerektiren iş yükü Oturum izolasyonu MXC dosyası, ağ veya kullanıcı arabirimi filtrelemesi olmadan iş yükünü, kullanıcısını ve oturum durumunu etkileşimli kullanıcının ortamından ayırır
Ayrı bir çekirdek veya konuk işletim ortamı gerektiren iş yükü Sanallaştırılmış ortam Seçilen arka ucun özelliklerine bağlı olarak VM veya mikro VM sınırı kullanır

Windows'ta işlem yalıtımı, düşük başlangıç maliyetiyle seçili konak kaynaklarına ihtiyaç duyan birçok iş yükü için uygun olduğundan yaygın bir türdür.

Oturum yalıtımı, kullanıcıları ve oturumları ayırır, ancak iş yükünün erişebileceği şeyleri kısıtlamaz. Windows'de IsolationSession, dosya sistemi ve kullanıcı arabirimi ilkelerini reddeder. İsteğinin çıkış, giriş ve konak geri döngülerini allow olarak, herhangi bir ağ kuralı veya proxy olmadan ayarlaması gerekir. İş yükünün bu kısıtlamalara ihtiyacı varsa, bunları uygulatabilen bir arka uç seçin. Ayrıntılar için bkz. Arka uç seçimi ve ayarları.

process gibi soyut bir intent, MXC'nin platforma özgü bir arka uç çözümlemesine olanak tanır. Belirli bir işletim ortamına veya yaşam döngüsüne ihtiyacınız olduğunda somut bir backend seçin. Soyut bir intentin veya daha güçlü bir yalıtım mekanizmasının her dosya, ağ veya kullanıcı arabirimi denetimi için destek garantisi vermediğini unutmayın.

Seçim kılavuzu ve ayrıntılı arka uç belgelerinin bağlantıları için bkz. MXC kapsayıcı seçenekleri ve platform desteği.

Mimaride Öğrenme Modu

Öğrenme Modu, Windows ProcessContainer iş yükleri için ilke yazma ve tanılama işlemlerine yardımcı olur. Bkz. Öğrenme Modu ile MXC ilkeleri oluşturma ve iyileştirme.

Kodlama ajanları için tasarım kılavuzu

Bir kapsayıcı türü seçmenize yardımcı olması için bir kodlama aracısı kullanırken, bunu değerlendirmesini isteyin:

  1. Uygulamanın hangi işletim sistemlerini ve işlemci mimarilerini desteklemesi gerekir?
  2. İş yükünün hangi dosyalara, ağ yollarına, kullanıcı arabirimi özelliklerine, cihazlarına ve konak araçlarına ihtiyacı var?
  3. Her komut bağımsız mı yoksa komutlar arasında kimlik ve durum kalıcı mı olmalıdır?
  4. Hangi başlangıç zamanı, kaynak kullanımı, dağıtım ve etkileşim kısıtlamaları uygulanır?
  5. İş yükünün Windows, Linux, tam masaüstü veya başka bir işletim ortamına ihtiyacı var mı?
  6. İş yükünün güven varsayımları ve verileri için hangi yalıtım sınırı uygundur?
  7. Her bir kullanılabilir arka uç hangi istenen ilke özelliklerini zorunlu kılabilir?

Aracı uygun yalıtım türlerini karşılaştırmalı, varsayımlarını ve ödünleşimlerini belirtmeli ve desteklenmeyen gereksinimleri tanımlamalıdır. Ardından uygun bir kapsayıcı türü seçebilir ve ilkeyi oluşturabilirsiniz.