Wir freuen uns, die Veröffentlichung von SuspendApp 0.4.0 ankündigen zu können. SuspendApp ist eine leistungsstarke Methode, um mit Hilfe von Structured Concurrency über ressourcensichere Anwendungen nachzudenken.
Diese Version führt ein neues Integrationsmodul für Ktor ein. Wir empfehlen allen Kotlin-Benutzern, auf die neueste Version von SuspendApp zu aktualisieren, um die Vorteile des neuen Ktor-Moduls zu nutzen und Feedback zu geben. Vielen Dank an die Community für Ihre kontinuierliche Unterstützung und Ihre Beiträge. Nachfolgend finden Sie eine Zusammenfassung der wichtigsten Änderungen. Das vollständige Changelog finden Sie auf unserer Github-Seite.
App aussetzen Ktor
Das SuspendApp Ktor Modul bietet eine Integrationsschicht zwischen Ktor und dem Resource Typ von Arrow Fx Coroutines, so dass Sie problemlos Zero-Downtime-Anwendungen mit Kubernetes erstellen können.
Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Es wird häufig für die Vernetzung von Anwendungen verwendet, aber es macht keine Annahmen darüber. Daher müssen Sie manuell eine gewisse Orchestrierung berücksichtigen, damit unsere Anwendungen bestehende Verbindungen ordnungsgemäß ablaufen lassen und Topologieänderungen zulassen können, bevor sie heruntergefahren werden.
Genau das ermöglicht die neue Ktor-Integration! Der bestehende embdeddedServer wird in die Ressourcen-DSL von Arrow mit Unterstützung für das automatische Nachladen eingebunden!
fun main() = SuspendApp {
resourceScope {
val engine = server(
factory = Netty,
port = 8080,
host = "192.168.52.64",
watchPaths = listOf("classes", "resources")
) { ping() }
awaitCancellation()
}
}
fun Application.ping(): Routing =
routing {
get("/ping") { call.respondText("pong") }
}
Das Beispiel lässt einen Ktor embdedServer laufen und fährt ihn nach einer Verzögerung mit einer preWait = 30.seconds der Topologie Zeit geben, sich zu verändern, und dann stop der Ktor engine mit einer grace = 500.milliseconds und timeout = 500.milliseconds Zeitraum, wann immer ein SIGTERM oder SIGINT Ereignis eintritt.
Diese Technik ist eine hervorragende Alternative, um dieses Verhalten über Kotlin-Code zu steuern, anstatt Kubernetes preStop und /bin/sleep aus yml Konfigurationen zu verwenden. Diese Parameter können auch leicht über Umgebungskonfigurationen und Konfigurationsdateien parametrisiert und gesteuert werden.
Dieses Ktor-Modul ist für Kotlin JVM, Linux und macOS verfügbar. Dies sind die einzigen Ziele, die von Ktor embdedServer unterstützt werden.
Wenn Sie Feedback haben, lassen Sie es uns im #arrow-Kanal auf KotlinLang Slack oder in den Issues im SuspendApp-Repository wissen.
Xebia Functional (ehemals 47 Degrees) Kotlin
Wir, das funktionale Team bei Xebia, sind große Fans von Kotlin und erforschen die vielen Möglichkeiten, die es für die Backend-Szene bietet. Wir sind stolze Betreuer von
Verfasst von
Simon Vergauwen
Arrow maintainer & Principal Engineer @ Xebia Functional from Antwerp, Belgium Working with Kotlin since 2015 & Fanatic OSS'er
Contact




