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微服务,微在哪

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

  1. java int不将0忽略_Java微服务:蛋糕是骗人的,但您不能忽略它

    java int不将0忽略 构建微服务实际上意味着什么? 通过微服务框架的眼光回答 忽略微服务的趋势已变得不可能. 有些人会说这只是另一个难以忍受的流行语,而另一些人会背诵打破巨石的优势或采取逆势方法 ...

  2. java 拉起服务_技术开发者应该如何构建小团队的微服务方案?

    作者 | 徐鹏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 我们的产品是Linkflow,企业运营人员使用的客户数据平台(CDP).产品的一个重要部分类似企业版的"捷径&q ...

  3. 异常:java.lang.IllegalStateException: No instances found of configserver(里面是一个微服务名)

    异常:java.lang.IllegalStateException: No instances found of configserver(里面是一个微服务名) 参考文章: (1)异常:java.l ...

  4. idea 构建java 微服务_使用 IDEA 从 0 开始搭建 Spring Cloud 微服务

    以下内容均来源于一个微服务初学者的实践,仅供参考. 微服务架构 首先启动 Spring Cloud Eureka 注册中心,其他部分都作为服务注册到 Eureka ,并通过注册的服务名互相访问.Spr ...

  5. Java微服务_医疗管理项目_基于若依快速开发框架

    一.项目简介 项目简介:尚医疗是专门为各大医院.门]诊提供的一款医疗管理平台.系统包含:系统 管理.药品进销存管理.看病就诊.收费管理.检查管理.数据统计等核心模块.通过尚医 疗系统可以快速方便的管理 ...

  6. 微服务实践:全栈小团队“洪荒之力”改造阿里服务CRM技术体系

    本文不重点介绍业务系统,更偏重于经验分享.首先进行了业务介绍,接着和大家简单分享了微服务,着重和大家讲述了微服务的实践,包括微服务技术实践.微服务团队实践.DT下的微服务. 以下为内容整理: 作为全球 ...

  7. 当我们谈微服务,我们在谈什么?谈谈我对微服务的理解!

    作者:fredal fredal.xin/talking-msa-understand-msa 阅读目录 微服务是什么 微服务是什么样的 服务化的前提 服务的发布与引用 服务的注册与发现 服务的远程通 ...

  8. 2020 年微服务领域开源数字化报告发布,阿里扛起微服务大旗

    2020 年 8 月 18 日,由阿里云主办的首届云原生微服务大会于线上隆重召开,大会邀请25位全球顶级球微服务领域先行者和权威技术专家深入探讨云原生语境下,微服务的挑战和趋势. 国产微服务框架表现抢 ...

  9. 微服务架构深度解析与最佳实践-第一部分:微服务发展历程和定义

    微服务架构的概念,现在对于大家应该都不陌生,无论使用 Apache Dubbo.还是 Spring Cloud,都可以去尝试微服务,把复杂而庞大的业务系统拆分成一些更小粒度且独立部署的 Rest 服务 ...

  10. 推荐一篇微服务硬核文章 6 张图带你搞懂微服务

    我是非典型理科男号主.点击上方蓝字关注. 关注后你可以收获最硬核的知识分享, 最有趣的互联网故事 推荐老王的一篇关于微服务的文章. 通过文章你可以了解到 单体架构到微服务架构的变化,ServiceMe ...

最新文章

  1. LightOJ 1422:Halloween Costumes(区间DP入门)
  2. java与python多态的区别_如果未调用父构造函数(与Java不同),多态性在Python中如何工作? - java...
  3. UBUNTU下双显示器设置
  4. 2018广技师C语言专插本试题,2018年成功插本广技师 ,分享备考经验!附:复习时间表...
  5. Frameset导致Cookies和Session丢失的原因及解决办法
  6. 如何把高版本的sqlserver 还原到低版本的 sqlserver
  7. SpringCloud工作笔记055---SpringBoot中配置事物管理
  8. vue可缓存的单页面多标签页
  9. 孙鑫VC学习笔记:第十三讲 (六) 关于释放内存
  10. 小知识·OTG工作原理
  11. 【实用】MAC电脑如何进行截图,mac下QQ截图工具的用法
  12. android 远程组件,安卓手机远程协助控制神器 Teamviewer
  13. epoch如何设置_最易懂的方式介绍 神经网络模型中的Epoch、Iteration、Batchsize
  14. 红帽的PAAS平台openshift
  15. (一)数据分析——企业的贤内助(数据分析的价值)
  16. Excel 日期相减 DATEDIF 函数用法实例
  17. 怎么调大计算机浏览器内字体,浏览器字体大小怎么设置,教你浏览器字体大小怎么设置-win7旗舰版...
  18. html+css+js简单实现图片轮播效果
  19. 50个CSS编辑工具
  20. 记一次手机本地时间修改引起的https请求失效的bug分享 转 萧竹

热门文章

  1. I love exam HDU - 6968
  2. 2017 ICPC沈阳区域赛
  3. C - Digital Path 计蒜客 - 42397 05-29
  4. HDU 2504 又见GCD
  5. P4015 运输问题
  6. 牛客网 【每日一题】4月23日题目精讲 边的染色
  7. 【学习笔记】无向图、有向图的三元环、四元环计数问题(根号分支+bitset)
  8. 数论六之计算几何干货——计算几何模板解释全集 及 模板检验训练场
  9. P6672-[清华集训2016]你的生命已如风中残烛【结论】
  10. P3243-[HNOI2015]菜肴制作【拓扑排序,优先队列】