点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试资料

作者:襄垣

juejin.im/post/5c89f266f265da2d8763b5f9

概述

SprintBoot总体来说,搭建还是比较容易的,特别是SpringCloud全家桶,简称亲民微服务,但在发展趋势中,容器化技术已经成熟,面对巨耗内存的SprintBoot,小公司表示用不起。如今,很多刚诞生的JAVA微服务框架大多主打“轻量级”,主要还是因为SprintBoot太重。

JAVA系微服务框架No1-Spring Cloud

介绍

有Spring大靠山在,更新、稳定性、成熟度的问题根本不需要考虑。在JAVA系混的技术人员大约都听说过Spring的大名吧,所以不缺程序员……,而且这入手的难度十分低,完全可以省去一个架构师。

但是,你必然在服务器上付出:

  • 至少一台“服务发现 ”的服务器;

  • 可能有一个统一的网关Gateway;

  • 可能需要一个用于“分布式配置管理”的配置中心;

  • 可能进行“服务追踪”,知道我的请求从哪里来,到哪里去;

  • 可能需要“集群监控”;

  • 项目上线后发现,我们需要好多服务器,每次在集群中增加服务器时,都感觉心疼;

压测30秒

压测前的内存占用

如图,内存占用304M。

压测时的内存占用

如图,内存占用1520M(1.5G),CPU上升到321%

概览

总结

一个SprintBoot的简单应用,最少1G内存,一个业务点比较少的微服务编译后的JAR会大约50M;而SprintCloud引入的组件会相对多一些,消耗的资源也会相对更多一些。

启动时间大约10秒左右: Started Application in 10.153 seconds (JVM running for 10.915)

JAVA系响应式编程的工具包Vert.x

介绍

背靠Eclipse的Eclipse Vert.x是一个用于在JVM上构建响应式应用程序的工具包。定位上与SprintBoot不冲突,甚至可以将Vert.x结合SprintBoot使用。众多Vert.x模块提供了大量微服务的组件,在很多人眼里是一种微服务架构的选择。

华为微服务框架Apache ServiceComb就是以Vert.x为底层框架实现的,在"基准测试网站TechEmpower"中,Vert.x的表现也十分亮眼。

压测30秒

压测前的内存占用

如图,内存占用65M。

压测时的内存占用

如图,内存占139M,CPU占2.1%,给人的感觉似乎并没有进行压测。

概览

总结

Vert.x单个服务打包完成后大约7M左右的JAR,不依赖Tomcat、Jetty之类的容器,直接在JVM上跑。

Vert.x消耗的资源很低,感觉一个1核2G的服务器已经能够部署许多个Vert.x服务。除去编码方面的问题,真心符合小项目和小模块。git市场上已经出现了基于Vert.x实现的开源网关- VX-API-Gateway帮助文档

https://duhua.gitee.io/vx-api-gateway-doc/

对多语言支持,很适合小型项目快速上线。

启动时间不到1秒:Started Vert.x in 0.274 seconds (JVM running for 0.274)

JAVA系其他微服务框架

SparkJava

  • jar比较小,大约10M

  • 占内存小,大约30~60MB;

  • 性能还可以,与SprintBoot相仿;

Micronaut

  • Grails团队新宠;

  • 可以用 Java、Groovy 和 Kotlin 编写的基于微服务的应用程序;

  • 相比SprintBoot已经比较全面;

  • 性能较优,编码方式与SprintBoot比较类似;

  • 启动时间和内存消耗方面比其他框架更高效;

  • 多语言;

  • 依赖注入;

  • 内置多种云本地功能;

  • 很新,刚发布1.0.0

Javalin

  • 上手极为容易;

  • 灵活,可以兼容同步和异步两种编程思路;

  • JAR小,4~5M;

  • 多语言;

  • 有KOA的影子;

  • 只有大约2000行源代码,源代码足够简单,可以理解和修复;

  • 符合当今趋势;

  • 多语言;

  • 嵌入式服务器Jetty;

Quarkus

  • 启动快;

  • JAR小,大约10M;

  • 文档很少;

热门内容:   

    

  • Java 的 JSP 已经被淘汰了吗?

  • 如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)

  • SpringBoot+Mybatis+Swagger2环境搭建

  • 微服务架构的四大金刚利器

  • “12306”的架构到底有多牛逼?

  • 别在 Java 代码里乱打日志了,这才是正确的打日志姿势

  • 假如有人把支付宝存储服务器炸了

  • SpringBoot微信点餐开源系统

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡ 

请给SpringBoot多一些内存相关推荐

  1. 请给 SpringBoot 多一些内存

    点击关注公众号,实用技术文章及时了解 来源:juejin.im/post/5c89f266f265da2d8763b5f9 概述 SprintBoot总体来说,搭建还是比较容易的,特别是SpringC ...

  2. 面试题:请介绍⼀下 JMM(Java 内存模型)

    面试题:请介绍⼀下 JMM(Java 内存模型) 关键词 CPU缓存一致性协议(例如MESI),多个CPU核心之间缓存不会出现不同步的问题 Store Buffer.Load Buffer和L1之间却 ...

  3. springboot运行时内存溢出_栈溢出的检测

    说到stack(栈),大家很可能就会想起stack overflow(栈溢出),著名的程序问答网站http://stackoverflow.com 就是以此命名的.因为栈通常是从高地址向低地址增长的, ...

  4. SpringBoot如何处理java内存溢出

    在上线的项目中,本地测试没有问题,部署上去就会出现java 内存溢出 java.lang.OutOfMemoryError: Java heap space 解决方案: -Xms512m -Xmx51 ...

  5. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  6. microcosm(SpringBoot工具包)

    项目的工具包,以功能分包,功能之间尽量减少相互依赖,每个功能作为最小单元供服务依赖. Try to reduce mutual dependence between functions and fun ...

  7. mc服务器java占用过大_如何排查java应用中CPU使用率高或内存占用高的问题

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:MnameHZJ my.oschina.net/u/1420452/blog/224 ...

  8. 从零开始学习springboot之springboot搭建

    博主刚开始实习不久,还是小白一枚,被公司的各种新奇技术搞得眼花缭乱了好久,主要是用springboot和dubbo构建起来的项目.看完之后才知道springboot真的是java开发者的福音啊 话不多 ...

  9. 网络瓶颈、线程死锁、内存泄露溢出、栈堆、ajax

    网络瓶颈:网络传输性能及稳定性的一些相关元素 线程死锁:多个线程因竞争资源造成的一种僵局 下面我们通过一些实例来说明死锁现象. 先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥 ...

最新文章

  1. 【转载 | 笔记】IIS无法删除应该程序池 因为它包含X个应用程序
  2. windows系统托盘tray
  3. 下载输入python之小说下载器version2.0
  4. 自定义Mac睡眠时间,保持运行状态
  5. 3.企业应用架构模式 --- 映射到关系数据库
  6. 机器学习项目-金融反欺诈模型
  7. Day41——Dp专题
  8. Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
  9. Java篇 - 四种引用(Reference)实战
  10. 不同按钮进入同一个页面显示不同的div
  11. ESRGAN - Enhanced Super-Resolution Generative Adversarial Networks论文翻译——中英文对照
  12. webview加载gif图片
  13. 图解LeetCode——768. 最多能完成排序的块 II(难度:困难)
  14. 博弈论——2.4古诺模型练习题
  15. 怎么监测facebook上竞争对手的广告
  16. 【使用switch语句】 用C语言编程实现输入年、月、日,编程求这一日是该年中的第几天。
  17. Fdfs 配置分布式文件系统
  18. mBlock机器人组装教程_能自我组装的机器人M-block,来自mit人工智能实验室
  19. 路由器: IP与网关 不在同一段 解决方法
  20. 1_3.数据交换技术*

热门文章

  1. OpenJDK 编译-Linux环境
  2. NTFS for Mac OS X:使用Brew安裝NTFS-3G
  3. WPF解析TTF 字体
  4. HTTP请求报文和HTTP响应报文(转)
  5. 《转》java设计模式--工厂方法模式(Factory Method)
  6. c语言将字母与数字分开存放,2017年计算机二级《C语言》考前提分试题及答案9...
  7. 关于Python 3.9,那些你不知道的事
  8. 在线等:“实习拿到两个不太好的offer,去腾讯还是去阿里?”
  9. Uber 前无人驾驶工程师告诉你,国内无人驾驶之路还要走多久?
  10. 华为全球最快AI训练集群Atlas 900诞生