java微服务,微在哪_Java:ChronicleMap第3部分,快速微服务

java微服务,微在哪

标准Java Maps需要在启动时进行初始化。 了解如何利用可从文件初始化的ChronicleMaps并显着减少微服务启动时间,以及如何在JVM之间共享Maps。

内置的Map实现(例如HashMapConcurrentHashMap速度很快,但是必须先使用映射进行初始化,然后才能用于查找值。 而且,它们的大小受到诸如堆和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微服务,微在哪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel离散度图表怎么算_Excel数据分析——离散值排除-excel直方图

今天举例的数据继续沿用昨天做出来的结果&#xff0c;至于这组数据还要接着用多久~~可能要混到我讲不下去为止吧~~~我们通过两个不同的拟合公式得到了两组不同的残差值&#xff0c;数据情况如下&#xff1a;有没有觉得看上面那张散点图有点糊啊&#xff1f;没错&#xff0c;问题…

drools dmn_Drools DMN最新开源引擎性能改进

drools dmn我们一直在寻求改善Drools DMN开源引擎的性能。 我们最近审查了DMN用例&#xff0c;其中输入数据节点的实际输入总体有所不同。 这突出显示了引擎的次佳性能&#xff0c;我们在最新版本中对此进行了改进。 我想分享我们的发现&#xff01; 基准制定 当我们开始为此用…

制作FAT12软盘以查看软盘的根目录条目+文件属性+文件内容

【-1】Before for specific info , please visit http://wiki.osdev.org/Loopback_Device 【0】我们先上干货&#xff0c;看到效果后&#xff0c;我们再说明每个步骤的缘由&#xff1b; 【1】进入挂载目录&#xff0c;添加相关文件&#xff08;依个人意愿&#xff09; Attenti…

如何取消高亮显示重复项_如何将重复数据突出显示?

将表格中一列数据中重复的&#xff0c;使用特殊颜色突出显示或者使用一些符号标记出来。例如&#xff1a;一个供应商&#xff0c;可以邀请别的供应商加入成为联合体&#xff0c;报表要显示所有供应商&#xff0c;然后供应商最后一列显示所有联合体&#xff0c;当联合体供应商跟…

Maven的maven-source-plugin插件详解

maven-source-plugin 这个插件专门负责将项目源文件打成包的&#xff0c;该插件在 pom.xml 中的配置如下&#xff1a; <build><plugins><plugin><artifactId>maven-source-plugin</artifactId><version>3.0.1</version><configu…

Maven Java Web Project打包详解/如何打包

文章目录打包部署构件&#xff08;Artifacts&#xff09;打源码包方式一&#xff1a; 命令行方式方式二&#xff1a;使用 IDE将源码包发布到本地 Maven 仓库中涉及到案例项目的结构&#xff1a; 打包部署构件&#xff08;Artifacts&#xff09; war 格式的部署构件可以直接放…

四位共阳极数码管显示函数_数码管模块.doc

数码管模块数码管1、概 述数码管模块采用四位共阳极数码管&#xff0c;用于显示数字和少数特殊字符。可以在机器人项目中使用该模块&#xff0c;用于显示速度、时间、分数、温度、距离等传感器的值。同时&#xff0c;Makeblock提供易于编程的Arduino库&#xff0c;使用户能够方…

java中的可检查和不检查_检查Java测试中发生了什么

java中的可检查和不检查有人想到了在Java单元测试中使用try和catch块的想法&#xff1a; Test public void test() { try { callSomeCode(); } catch (Exception e) { assertEquals( "foo" , e.getMessage()); } } 上面的内容很诱人&#xff0c;但不起作用 。 如果…

FAT12中,如何定位大于一个扇区(512B)的文件内容

【0】README 0.1&#xff09;本文旨在于 演示在FAT12中&#xff0c; 如何取定位大于 512B 的文件内容&#xff0c;和查看它&#xff1b;0.2&#xff09;如何制作FAT12文件系统&#xff0c;以及如何向文件中添加temp.txt文件&#xff0c;参见&#xff1a; { http://blog.csdn.n…

通过Struts2的拦截器实现文件上传/上传文件功能

struts.xml配置内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd&qu…

java获取ram_Java:ChronicleMap第2部分,超级RAM映射

java获取ram诸如无处不在的HashMap类的标准Java Map最终受到可用RAM的限制。 阅读本文并了解如何创建几乎无限大小甚至超过目标计算机RAM大小的Java Map。 内置的Map实现&#xff0c;例如HashMap和ConcurrentHashMap &#xff0c;只要它们相对较小&#xff0c;就可以正常工作。…

lifi与wifi的论文_Wifi_(毕业论文).doc

Wifi_(毕业论文)绪论2第一章 Wi-Fi技术概述31.1 无线局域网络31.1.1 IEEE 802.11系列标准31.1.2 无线局域网络概述31.2 Wi-Fi概念的引入41.2.1 Wi-Fi技术41.2.2 怎样使用Wi-Fi41.2.3 谁可以使用Wi-Fi5第二章 Wi-Fi技术的分析62.1 Wi-Fi与其他技术的对比分析6参 考 文 献8绪论Wi…

os引导程序boot从扇区拷贝os加载程序loader文件到内存(boot copy kernel to mem in the same method)

【0】README 0.1&#xff09; 本代码旨在演示 在boot 代码中&#xff0c;如何 通过 loader文件所在根目录条目 找出该文件的 在 软盘所有全局扇区号&#xff08;簇号&#xff09;&#xff0c;并执行内存中的 loader 代码&#xff1b;0.2&#xff09; 此代码非常重要&#xff0…

Struts2的资源文件和国际化(i18n)

文章目录资源文件的命名资源文件基名的指定struts.xml 文件指定资源文件的基名struts.properties 文件指定资源文件的基名通过标签 i18n 指定资源文件的基名资源文件的位置包级资源文件类级资源文件全局级资源文件默认资源文件资源文件的加载顺序Action 中加载资源文件在 JSP 中…

java设计模式之装饰模式_Java中的装饰器设计模式

java设计模式之装饰模式装饰器设计模式允许在运行时将附加职责或行为动态附加到对象。 它是一种结构模式&#xff0c;利用聚合来组合这些行为。 在本教程中&#xff0c;我们将学习实现装饰器模式。 UML图&#xff1a; 让我们从装饰器模式的UML表示开始&#xff1a; Concrete…

qml 自定义消息框_Qt qml 自定义消息提示框

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/a844651990/article/details/78376767Qt qml 自定义消息提示框QtQuick有提供比较传统的信息提示框Mes…

计算机器内存数量+引入和显示ARDS成员

【1】README 1.1&#xff09; 本代码在于读取内存中多个 内存段的地址范围描述符结构体&#xff08;ARDS&#xff09;&#xff0c;有多少个内存段可以用&#xff1b;1.2&#xff09; source code and images in the blog from orange’s implemention of a os 1.3&#xff09;…

Maven Java 项目中,pom.xml 文件的依赖标签作用解读(<dependency/>)

该标签会让 Maven 自动到本地仓库或远程仓库去查找构件&#xff0c;找到后会自动创建项目级别的资源库&#xff0c;然后会将资源库同步到依赖此构件的模块的 classpath 中&#xff0c;也就是模块的依赖库中&#xff0c;如下图所示&#xff1a; classpath 就是类路径&#xff0…

自我审视记录本_春天重新审视战略模式

自我审视记录本这篇博客文章希望展示另一种方法&#xff0c;该方法如何通过依赖注入实现策略模式。 作为DI框架&#xff0c;我选择Spring框架 首先&#xff0c;让我们看一下如何以经典方式实施策略模式。 作为起点&#xff0c;我们有一个HeroController &#xff0c;应该在He…

如何用python编程机器人培训_机器人编程怎么入门?

打个广告(更新于2017.03.30)坐标上海&#xff0c;上海微创医疗器械(集团)有限公司&#xff0c;机器人子公司在研产品主要是腹腔镜手术机器人、骨科手术机器人等招聘&#xff1a;机器人算法工程师软件工程师机器人控制工程师具体岗位要求&#xff0c;请移步另一个回答&#xff1…