SkySpark Entegrasyonu
Projeleri otomatik olarak keşfet, fonksiyonları senkronize et ve her commit'in versiyonlu geçmişini koru.
İki entegrasyon yüzeyi
Sunucunun SkySpark ile konuşmasının iki yolu vardır:
- Dosya Sistemi — Projeleri numaralandırmak ve örneğin çalışması gerekmeden kullanıcı tanımlı fonksiyonları çıkarmak için SkySpark ana dizininin altındaki
config/dosyasını okur. - HTTP + Haystack — Sorgular yürütür, ifadeleri değerlendirir ve fonksiyonları çalışan bir örneğine karşı commit eder.
Dosya sistemi keşfi sunucu başlatılırken çalışır. HTTP çağrıları, bir istemci queryHaystack, executeAxonCode veya commitAxonFunction çağırdığında isteğe bağlı olarak gerçekleşir.
Otomatik keşif
Konfigürasyon dosyasında skyspark.autoDiscover: true ayarlanmışsa, sunucu başlatılırken SkySpark ana dizininde yürür:
/path/to/skyspark/
├── config/ ← numaralandırılmış
│ ├── project-a/
│ ├── project-b/
│ └── sensorRead/
└── ...
Bulunan her proje klasörü için sunucu:
- Projenin meta veri dosyasını okur ve geçerli bir Haystack projesi olduğunu doğrular.
- Kullanıcı tanımlı fonksiyonlar (
funckayıtları) listesini alır. - Bu fonksiyonları yerel Axon indeksine indexler ve
project:<name>etiketi ile etiketler.
Sonuç: searchAxonExamples statik kütüphane örnekleri ile birlikte gerçek SkySpark projelerinden fonksiyonları gösterebilir.
Fonksiyon senkronizasyonu
Keşif yalnızca numaralandırır. Senkronizasyon gerçek fonksiyon kaynak kodunu alır.
autoSyncFunctions: true ayarlanmışsa, senkronizasyon başlatılırken otomatik olarak çalışır. Aksi takdirde bir istemci discoverProjectFunctions aracılığıyla tetikleyebilir:
{
"tool": "discoverProjectFunctions",
"arguments": { "project": "sensorRead" }
}
Eşzamanlılık
syncConcurrency (varsayılan 10) kaç fonksiyonun paralel olarak alındığını kontrol eder. Hızlı LAN'daki örnekler için artırın, yavaş veya hız sınırlı örnekler için azaltın.
Versiyon Oluşturma
functionVersioning: true ve maxVersions: 4 (varsayılanlar) ayarlanmışsa, her commitAxonFunction çağrısı:
- Mevcut sürümü SkySpark'tan okur.
- Yeni sürümü yazar.
- Önceki sürümü
.data/versions/<project>/<function>-v<N>.axoniçinde arşivler. maxVersionsyaşından daha eski revizyonları budanır.
Eski bir sürümü geri yüklemek şu anda SkySpark'a el ile dosya kopyalama olmakla birlikte — henüz restoreFunctionVersion aracı yoktur.
Birincil proje konsepti
Yürütme ve commit araçlarının tek bir proje seçmesi gerekir. Birincil proje bu seçimdir:
"primaryProject": {
"instance": "localhost8080",
"project": "sensorRead"
}
İstemciler bunu çalışma zamanında değiştirebilir:
{ "tool": "setPrimaryProject", "arguments": { "instance": "localhost8080", "project": "plantRoom" } }
Sonraki executeAxonCode ve commitAxonFunction çağrıları bir sonraki anahtara kadar plantRoom hedefine alınır.
Sorguları çalıştırma
queryHaystack ham bir Haystack sorgu dizesi alır ve elde edilen ızgarayı JSON olarak döndürür:
{
"tool": "queryHaystack",
"arguments": {
"query": "read(site)"
}
}
Sonuç:
{
"meta": { "ver": "3.0" },
"cols": [ { "name": "id" }, { "name": "dis" }, { "name": "site" } ],
"rows": [
{ "id": "@p:sensorRead:r:1a2b", "dis": "Main Campus", "site": true }
]
}
Sorgular birincil projenin kimlik doğrulama bağlamı ile yürütülür.
Yedek kimlik bilgileri
Otomatik keşif başarısız olursa (yanlış yol, SkySpark aynı konakta yüklü değil, vb.), sunucu açık bağlantı bloğuna geri döner:
"fallback": {
"host": "skyspark.example.com",
"port": 443,
"project": "demo",
"username": "readonly",
"password": "<use-env-var>",
"protocol": "https"
}
Parolayı yapılandırma dosyasına commit etmek yerine ortam değişkeni ikame etmeyi (SKYSPARK_PASSWORD) tercih edin.
Bağlantı sorunlarını giderme
SKYSPARK_UNREACHABLE— örnek yapılandırılan konak/portta bağlantı kabul etmiyor.curl http://<host>:<port>/aboutkomutunu kontrol edin.SKYSPARK_AUTH_FAILED— kimlik bilgileri yanlış veya kullanıcı hedef proje için gerekli izne sahip değil.PROJECT_NOT_FOUND— birincil proje örneğinde mevcut değil. Mevcut olanları görmek içinlistSkySparkProjectskomutunu çalıştırın.