#Java

記一次訂單號事故.

記一次訂單號事故

在高併發的場景下,應該是唯一值的訂單號重複問題,即使以毫秒或亂數器做為參數取號,也有機會產生出重複的單號,再加上多實例的場景,不同實例間很有可能在同一時間又產生同樣的單號,這篇文章除了優化取號參數外,針對多實例的部份也把實例的 IP 列入取號參數內,確保同時間不同實例也可以產生不同的單號,最後在資料庫端,也要對單號的欄位設定 unique 的屬性,確保不允許重複的單號,並在程式端做出相對應的錯誤處理機制。


GraalVM.

GraalVM

GraalVM

GraalVM 是由甲骨文開發的多語言編譯器,GraalVM 具有支援多語言編譯的能力。

GraalVM 主要支援 Java 系的語言,包括 Java、Kotlin、Scala,以及 LLVM 所支援的語言,包括 Rust、C++、C,後來支援更多的語言,包括 JavaScript、Python、Ruby、R 等,都可以被 GraalVM 的多語言架構支援,除了多語言編譯的特性外,GraalVM 宣稱具有高效能的特性。由 GraalVM 編譯後的二進位檔,配合 GraalVM 本身的 runtime 可以把整個 GraalVM 的專案整合進其他專案內,支援的發布對象包括 Java、Node.js、Oracel 自己的資料庫平台,當然編譯後的 GraalVM 專案加 runtime 也可以獨立運作。

GraalVM 本身的目標和微軟的 .NET 和 CLR 相當類似,查看 GraalVM 的 Release Notes 可以看到一直有在發布新的進度,但開發者社群的經營與聲量卻非常小,感覺 Oracle 真的非常不擅長經營開源的「生意」。