日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

Java:ChronicleMap第3部分,快速微服务

發布時間:2023/12/3 26 豆豆
默认站点 收集整理的這篇文章主要介紹了 Java:ChronicleMap第3部分,快速微服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標準Java地圖需要在啟動時進行初始化。 了解如何利用可從文件初始化的ChronicleMaps并顯著減少微服務啟動時間,以及如何在JVM之間共享Maps。

內置的Map實現(例如HashMap和ConcurrentHashMap速度很快,但是必須先使用映射進行初始化,然后才能將其用于查找值。 而且,它們的大小受到諸如堆和RAM大小之類的實際手段的限制。 最后,它們對于運行它的JVM是本地的。

初始化過程可能會減慢微服務的關鍵啟動速度,尤其是在從遠程REST接口或遠程數據庫讀取映射時。 在本文中,您將學習如何使用內存映射的ChronicleMap實例在幾秒鐘而不是幾分鐘內啟動微服務應用程序,以及在有關CronicleMap的系列文章的第三篇文章中,如何在JVM之間共享Maps。

在第一篇文章中詳細了解CronicleMap的基礎知識。

在第二篇文章中閱讀有關文件映射的CronicleMap對象的更多信息。

創建共享地圖

如本系列第二篇文章所述,我們可以輕松地創建一個文件映射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); } }

已建立
現在,任何有權訪問“ my-map”文件的JVM都可以訪問Map對象。 映射的更新將通過共享文件在參與的JVM之間共享。

初始化地圖

如第二篇文章中所示,我們可以創建并初始化一個
像這樣的Map :

final Map<Long, Point> m3 = LongStream.range( 0 , 10_000_000) .boxed() .collect( toMap( Function.identity(), FillMaps::pointFrom, (u, v) -> { throw new IllegalStateException(); }, FillMaps::createFileMapped ) );

在我的筆記本電腦(2015年中的MacBook Pro,16 GB,2.2 GHz Intel Core i7)上運行時,創建和填充筆記本電腦大約需要10秒鐘。
Map一千萬個條目。

如果Map內容是從外部檢索的(而不是通過pointFrom()方法在本地創建的),則填充Map可能會花費更長的時間。 例如,如果我們獲得50 Mbit / s的REST吞吐量,并且每個JSON Point表示消耗25個字節,則填充Map大約需要60秒。

啟動一個新的JVM

現在已經有一個預先存在的映射文件,我們可以直接從該文件開始,如以下代碼片段所示:

return ChronicleMap .of(Long. class , Point. class ) .averageValueSize( 8 ) .valueMarshaller(PointSerializer.getInstance()) .entries(10_000_000) .createOrRecoverPersistedTo( new File( "my-map" ));

這將直接從現有的“我的地圖”文件中創建一個Map 。

在我的筆記本電腦上運行此程序將產生5秒鐘的開始時間。 可以將其與60秒REST示例進行比較,從而將啟動時間減少90%。

在同一節點上運行多個JVM

我們可以選擇在同一物理服務器節點上運行多個JVM。 通過這樣做,我們受益于操作系統通過公開共享內存使文件映射可用于每個JVM的能力。 這構成了JVM之間有效且低延遲的通信方式。 與每個JVM / OS都必須維護自己的獨立映射的情況相比,存在一個公用的映射內存池這一事實使內存管理效率更高。

摘要

ChronicleMaps可以通過共享文件在參與的JVM之間共享
使用共享文件可以大大減少啟動時間
如果JVM在同一臺物理計算機上運行,??則性能和效率將進一步提高 通過ChronicleMap共享的文件提供了JVM之間低延遲的通信方式

翻譯自: https://www.javacodegeeks.com/2019/08/java-chroniclemap-fast-microservices.html

總結

以上是默认站点為你收集整理的Java:ChronicleMap第3部分,快速微服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網站內容還不錯,歡迎將默认站点推薦給好友。