java微服务,微在哪_Java:ChronicleMap第3部分,快速微服务
java微服務,微在哪
標準Java Maps需要在啟動時進行初始化。 了解如何利用可從文件初始化的ChronicleMaps并顯著減少微服務啟動時間,以及如何在JVM之間共享Maps。
內(nèi)置的Map實現(xiàn)(例如HashMap和ConcurrentHashMap速度很快,但是必須先使用映射進行初始化,然后才能用于查找值。 而且,它們的大小受到諸如堆和RAM大小之類的實際手段的限制。 最后,它們對于運行它的JVM是本地的。
初始化過程可能會減慢微服務的關鍵啟動速度,尤其是在從遠程REST接口或遠程數(shù)據(jù)庫讀取映射時。 在本文中,您將學習如何使用內(nèi)存映射的ChronicleMap實例在幾秒鐘而不是幾分鐘內(nèi)啟動微服務應用程序,以及在有關CronicleMap的系列文章的第三篇文章中,如何在JVM之間共享Maps。
在第一篇文章中詳細了解CronicleMap的基礎知識。
在第二篇文章中閱讀有關文件映射的CronicleMap對象的更多信息。
創(chuàng)建共享地圖
如本系列第二篇文章所述,我們可以輕松地創(chuàng)建一個文件映射Map,如下所示:
private static Map<Long, Point> createFileMapped() { try { return ChronicleMap .of(Long. class , Point. class ) .averageValueSize( 8 ) .valueMarshaller(PointSerializer.getInstance()) .entries(10_000_000) .createPersistedTo( new File( "my-map" )); } catch (IOException ioe) { throw new RuntimeException(ioe); } } 已建立
現(xiàn)在,任何有權訪問“ my-map”文件的JVM都可以訪問Map對象。 映射的更新將通過共享文件在參與的JVM之間共享。
初始化地圖
如第二篇文章中所示,我們可以創(chuàng)建并初始化一個
像這樣的Map :
在筆記本電腦上運行時(2015年中的MacBook Pro,16 GB,2.2 GHz Intel Core i7),創(chuàng)建和填充筆記本電腦大約需要10秒鐘。
Map一千萬個條目。
如果從外部檢索Map內(nèi)容(而不是通過pointFrom()方法在本地創(chuàng)建),則可能需要更長的時間來填充Map 。 例如,如果我們獲得50 Mbit / s的REST吞吐量,并且每個JSON Point表示消耗25個字節(jié),則填充Map大約需要60秒。
啟動一個新的JVM
現(xiàn)在已經(jīng)有一個預先存在的映射文件,我們可以直接從該文件開始,如以下代碼片段所示:
return ChronicleMap .of(Long. class , Point. class ) .averageValueSize( 8 ) .valueMarshaller(PointSerializer.getInstance()) .entries(10_000_000) .createOrRecoverPersistedTo( new File( "my-map" ));這將直接從現(xiàn)有的“我的地圖”文件中創(chuàng)建一個Map 。
在我的筆記本電腦上運行此程序?qū)a(chǎn)生5秒鐘的開始時間。 可以將其與60秒REST示例進行比較,從而將啟動時間減少90%。
在同一節(jié)點上運行多個JVM
我們可以選擇在同一物理服務器節(jié)點上運行多個JVM。 通過這樣做,我們受益于操作系統(tǒng)通過公開共享內(nèi)存使文件映射可用于每個JVM的能力。 這構(gòu)成了JVM之間有效且低延遲的通信方式。 與每個JVM / OS都必須維護自己的獨立映射的情況相比,存在一個公用的映射內(nèi)存池這一事實使內(nèi)存管理效率更高。
摘要
ChronicleMaps可以通過共享文件在參與的JVM之間共享
使用共享文件可以大大減少啟動時間
如果JVM在同一臺物理計算機上運行,??則性能和效率將進一步提高 通過ChronicleMap共享的文件提供了JVM之間的低延遲通信方式
翻譯自: https://www.javacodegeeks.com/2019/08/java-chroniclemap-fast-microservices.html
java微服務,微在哪
總結(jié)
以上是生活随笔為你收集整理的java微服务,微在哪_Java:ChronicleMap第3部分,快速微服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 坠怎么读 坠组词
- 下一篇: 桦可以组什么词 桦可以组哪些词