取得領先
VMware 提供培訓和認證,以加速你的進展。
了解更多我們很高興宣佈 Spring Statemachine 1.0.0 版本已發佈。首先,我要感謝所有以任何方式為此貢獻的人。構件可從 Maven Central 或 Spring Repository 取得。
此第一個版本實際包含的內容
讓我們快速回顧一下這個專案是如何誕生的,以及它是如何從第一個 github 匯入演變為一個發佈版本。這也提供了一些關於一個新的 spring 專案是如何誕生或可能誕生的背景資訊。這個專案是在今年年初從為 Spring Hadoop 完成的基礎工作啟動的。
對於在達拉斯舉行的 SpringOne 2014,我們正在將一個新的容器分組功能推入 Spring YARN,這在 YARN 容器之上增加了更高層級的功能。現在,Spring XD 的 YARN 運行時 和新的 Spring Cloud Dataflow YARN 部署器 都是基於這個功能。與 Hadoop YARN 資源管理器的通訊本質上是非同步的,所以我試圖在不使用適當的狀態機概念的情況下實現這部分程式碼時遇到了很多麻煩。相信我,我真的非常努力地避免使用適當的狀態,在大約一周後,我不得不面對現實,面對我試圖超越我自己的程式碼的事實。我最終得到了一些勉強可用的東西,但如果我觸摸該程式碼的任何部分,地獄就會降臨。我 rm 了所有東西,並對自己說:「該死的 Janne,我需要一個狀態機。」
在我完成狀態機的基本實現後,我所有的問題都消失了,僅僅是因為狀態機現在控制了所有必須按特定順序發生的邏輯,同時所有與 YARN 資源管理器的通訊仍然是非同步發生的。是的,現在我們已經進入發佈階段,這給了我們一個選項,可以用這個版本替換 Spring YARN 內部狀態機。
我想到一個主意,將這個特定的狀態機程式碼 fork 到它自己的專案中,稍微增強一下,然後啟動一個新的 Spring 專案,看看它是否能引起任何關注,這可能是一個非常好的主意。老實說,我對這項超過 50 年歷史的技術引起如此多的興趣感到有點驚訝。好的和堅實的概念不會消亡,也不需要消亡!
關於我在此過程中從一個想法到一個發佈版本所面臨的挑戰的一些話
Aphyr's
Jepsen 框架,如果說得委婉一點,它將所有東西都拆開了,但最終讓我發現了當你從一個單一 JVM 中走出來並開始使用分散式 JVM 時的所有類型的錯誤。這是一段痛苦但有趣的旅程。很多人問我們是否有路線圖?簡單的回答是有和沒有。有,因為我們肯定有很多我們想實現的東西,沒有,因為這個專案是由社群的要求驅動的。我開始遵循 UML 狀態機規範 來實現基本功能,但最終大約 50% 的額外功能是由使用者要求的。UML 規範對其某些規範功能的描述非常模糊,並將很多細節留給了實現本身。如果你想要什麼,請說出來並前往 GitHub Issues。想要貢獻,請 PR 一些東西(即使是一個簡單的錯字修復也非常感謝!)。
到目前為止我們所知道的
Spring Security
、Spring Session
輕鬆整合的方法,以保護狀態機動作。對於執行,我們正在尋找替換或嘗試使用 Reactor 來代替普通的 Framework 任務排程/執行。嘗試一下,感受一下,聞一下,讓我們知道你的想法!