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

做积极的人,而不是积极废人

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

JAVA系微服务框架

No1-Spring Cloud

介绍

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

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

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

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

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

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

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

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

压测30秒

压测前的内存占用

如图,内存占用304M。

压测时的内存占用

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

概览

总结

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

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

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

介绍

背靠Eclipse的Eclipse Vert.x是一个用于在JVM上构建响应式应用程序的工具包。定位上与Spring Boot不冲突,甚至可以将Vert.x结合Spring Boot使用。众多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;

  • 性能还可以,与Spring Boot相仿;

Micronaut

  • Grails团队新宠;

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

  • 相比Spring Boot已经比较全面;

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

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

  • 多语言;

  • 依赖注入;

  • 内置多种云本地功能;

  • 很新,刚发布1.0.0

Javalin

  • 上手极为容易;

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

  • JAR小,4~5M;

  • 多语言;

  • 有KOA的影子;

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

  • 符合当今趋势;

  • 多语言;

  • 嵌入式服务器Jetty;

Quarkus

  • 启动快;

  • JAR小,大约10M;

  • 文档很少;

来源:http://t.cn/Ai8xQ3lT

热门内容:   

  

  • System.currentTimeMillis()竟然存在性能问题,这我能信?

  • 团队开发中 Git 最佳实践,不给队友拖后腿!

  • 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?

  • 面试问你Spring如何解决循环依赖的时候,不要一脸懵逼了!

  • 面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...

  • 为什么说「中台」程序员未来会最值钱?

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

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

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

惊呆了,Spring Boot居然这么耗内存!相关推荐

  1. 惊呆了! | Spring Boot 使用 @Value 读取配置还能这样用

    " Hi ! 我是小小,今天是本周的第三篇,Spring Boot 中使用@Value读取配置文件 配置文件配置 直接配置 在src/main/resources下添加配置文件,applic ...

  2. 在 Spring Boot 中,如何干掉 if else!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://t.cn/E9beQIN 需求 这里虚拟一个业 ...

  3. 让 Spring Boot 启动更快一点

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 "Spring有多快?" 这是 2018 Sp ...

  4. 掌握 Spring Boot 运行内存及内存参数设置:助力高效应用部署与优化

    pring Boot 是当今非常流行的 Java 应用框架之一,在企业级应用开发中被广泛使用.应用部署和优化是企业级应用开发的一个非常重要的方面.在这篇博客中,我们将学习如何掌握 Spring Boo ...

  5. 国内最全的Spring Boot系列之五

    ​历史文章(累计400多篇文章) <国内最全的Spring Boot系列之一> <国内最全的Spring Boot系列之二> <国内最全的Spring Boot系列之三& ...

  6. 详解 | Spring Boot 最核心的 3 个注解详解

    Hi !我是小小,开始本周的第一篇,本周第一篇内容是关于Spring Boot 最核心的三个注解,将会对这三个注解进行详细解释. 前言 Spring Boot 最大的特点是无需 XML 配置文件,能够 ...

  7. spring boot demo(spring jdbc访问数据)

    Accessing Relational Data using JDBC with Spring 您将使用Spring JdbcTemplate 构建应用,访问数据库中数据. 下面的简单数据访问逻辑, ...

  8. 【2021最新版】Spring Boot面试题总结(92道题含答案解析)

    文章目录 1.什么是Spring Boot? 2.为什么要用SpringBoot? 3.Spring Boot有哪些优点? 4.Spring Boot的核心注解是哪个?它主要由哪几个注解组成的? 5. ...

  9. 【Spring Boot官方文档原文理解翻译-持续更新中】

    [Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...

最新文章

  1. linux c 各头文件作用总结
  2. zookepper 安装
  3. Spring IOC 注入方式
  4. bike with a famous logo
  5. 解决 Ubuntu 无法更新软件问题
  6. 为什么薄膜干涉的厚度要很小_薄膜干涉的薄膜为什么不能太厚?1.这里的厚是用什么来衡量的?2.假如一个厚为1mm的薄膜,是否薄?...
  7. python 复制文件夹校验_Python多任务复制文件夹
  8. JavaBean的get、set方法生成器
  9. Vista系统自带IIS 7.0设置技巧详解
  10. CallBack函数 回调函数
  11. qml 不刷新 放大还原_【显示器选择详解】你的电脑能否带动高分辨率,高刷新率显示器?...
  12. ViewPager左右滑动
  13. 【答题卡识别】基于matlab GUI hough变换答题卡成绩统计(带面板)【含Matlab源码 1828期】
  14. contos7改分辨率_centos桌面分辨率修改
  15. 【语音识别】基于支持向量机SVM实现脑电信号分期睡眠监测matlab 源码
  16. LeetCode刷题之1818. 绝对差值和
  17. IPtables 扩展模块 Multiport/IPRange
  18. 微信广告数据源创建查询与上报-PHP
  19. python atan_Python atan或atan2,我应该使用什么?
  20. ZYNQ入门,EBAZ4205开发平台从头开始搭建

热门文章

  1. Isight 命令行运行任务
  2. 52深入理解C指针之---不透明指针
  3. KBEngine服务器环境搭建
  4. 键盘码 ascii码
  5. 为python安装numpy和scipy(federo)
  6. 【NCEPU】韩绘锦:图信号处理与图卷积神经网络
  7. 青少年编程竞赛交流群周报(第040周)
  8. 【建模必备】遗传算法的基本原理与步骤(变异)
  9. Matlab编程与数据类型 -- 分支条件选择语句if/end
  10. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)