微服务go还是java,Java微服务 vs Go微服务,究竟谁更强!?

前言

Java微服务能像Go微服务一样快吗?

这是我最近一直在思索地一个问题。

去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nelson和Peter Nagy就对此做过一系列基础的的测试用以比较。接下来就给大家介绍下。

在程序员圈子里,普遍的看法是Java老、慢、无聊 ,而Go是快、新、酷

为了尽可能的进行一个相对公平的测试,他们使用了一个非常简单的微服务,没有外部依赖关系(比如数据库),代码路径非常短(只是操纵字符串),使用了小型的、轻量级的框架(Helidon for Java和Go工具包for Go),试验了不同版本的Java和不同的jvm。

对决双雄

我们先来看下擂台两边的选手:

身穿深色战服的选手是JAVA

Java是由被甲骨文收购的Sun Microsystems开发的。它的1.0版本是1996年发布的,最新的版本是2020年的Java15。主要的设计目标是Java虚拟机和字节码的可移植性,以及带有垃圾收集的内存管理。它是全世界最流行的语言之一,在开源环境下开发。

我们先看下JAVA的问题,大家普遍认为它最大的问题就是速度慢,已经慢到让人觉得不再是合理的,而是更具历史意义的。不过这么多年来,Java诞生了很多不同的垃圾收集算法用来加快它运行的速度。

Oracle实验室最近已经开发了一个新的Java虚拟机GraalVM,它有一个新的编译器和一些令人兴奋的新特性,比如能够将Java字节码转换成一个本机映像,可以在没有javavm的情况下运行等。

而它的对手就是年轻充满活力的GO

GO是由谷歌的罗伯特·格里默、罗伯·派克和肯·汤姆森创建的。他们对UNIX、B、C、Plan9、UNIX窗口系统等做出了重大贡献。GO是开源的,在2012年发布了1.0版本(比JAVA晚了16年),在2020年发布了1.15版本。无论是在采用方面,还是在语言和工具生态系统本身方面,它都在快速增长。

GO受C、Python、JavaScript和C++等多种语言的影响。被设计成高性能网络和多处理的最佳语言。

StackOverflow有27872个带“Go”的问题,而Java只有1702730个。足见长江后浪推前浪。

Go是一种静态类型的编译语言。它有称为goroutines的轻量级进程(这些不是OS线程),它们之间有独特的通信通道(类型化的,FIFO)。Go是许多CNCF项目的首选语言,例如Kubernetes、Istio、Prometheus和Grafana

赛前对比

从个人感觉来说,Go相比JAVA来说,优点在于:

Go更容易实现复合、纯函数、不变状态等功能模式。

Go处于生命周期的早期,因此它没有向后兼容性的沉重负担—Go仍然可以轻易打破某些限制来改进。

Go编译成一个本机静态链接的二进制文件-没有虚拟机层-二进制文件拥有运行程序所需的一切,这对于“从头开始”的容器来说非常好。

Go体积小、启动快、执行快(目前是的)

Go没有OOP,继承,泛型,断言,指针算法

Go写法上较少的括号

Go没有循环依赖、没有未使用的变量或导入、没有隐式类型转换的强制

Go样板代码少得多

缺点是:

Go工具生态系统还不成熟,尤其是依赖关系管理——有几个选项,没有一个是完美的,特别是对于非开源开发;仍然存在兼容性挑战。

构建具有新的/更新的依赖项的代码非常慢(比如Maven著名的“下载Internet”问题)

导入将代码绑定到存储库,这使得在存储库中移动代码成为一场噩梦。

调试、评测等仍然是一个挑战

用到了指针

需要实现一些基本的算法

没有动态链接

没有太多旋钮来调优执行或垃圾收集、概要文件执行或优化算法。

比赛开始

使用JMeter来运行负载测试。这些测试多次调用这些服务,并收集有关响应时间、吞吐量(每秒事务数)和内存使用情况的数据。对于Go,收集驻留集大小;对于Java,跟踪本机内存。

在测量之前,使用1000次服务调用对应用程序进行预热。

应用程序本身的源代码以及负载测试的定义都在这个GitHub存储库中:https://github.com/markxnelson/go-java-go

第一回合

在第一轮测试中,在一台“小型”机器上进行了测试,是一台2.5GHz双核Intel core i7笔记本电脑,16GB内存运行macOS。测试运行了100个线程,每个线程有10000个循环,上升时间为10秒。Java应用程序运行在JDK11和Helidon2.0.1上。使用Go 1.13.3编译的Go应用程序。

结果如下:

702fe587fe9beb6ec692d0feb5a8a5be.png

7def2ee3b462d6a8044202be17685df1.png

可以看出,第一回合是Go赢了!

JAVA占的内存太多了;预热对JVM有很大的影响—我们知道JVM在运行时会进行优化,所以这是有意义的

在第一回合的基础上,意犹未尽的又引入GraalVM映像以使 Java 应用程序的执行环境更接近于 Go 应用程序的环境,添.........

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

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

相关文章

Defi安全-Mono攻击事件分析--etherscan+phalcon

MonoX攻击事件相关信息 在Ethereum和Polygon网络都发生了,攻击手段相同,以Ethereum为例进行分析: 攻击者地址:MonoX Finance Exploiter | Address 0xecbe385f78041895c311070f344b55bfaa953258 | Etherscan 攻击合约&#xff1a…

特斯拉自动驾驶靠自研芯片,国产智能汽车怎么办?

文章来源:量子位从这个月开始,特斯拉终于跌破30万,进入补贴行列,与国产汽车展开正面竞争。在国产汽车和特斯拉之间该如何选择,除了续航里程外,最重要的可能就是智能驾驶系统了。智能驾驶系统该怎么比较&…

【星·企业】竞逐卫星互联网“新基建”,「九天微星」完成2.7亿元B 轮融资

图为九天微星一箭七星“瓢虫系列”主星示意图来源:中科创星据了解,「九天微星」将用此轮融资在河北唐山和四川宜宾分别建设互联网卫星平台、载荷自动化产线,同时强化宽带通信系统研发能力,加速地面终端产品投产。九天微星卫星工厂…

3D原子映射有助于研究生命的起源

Chi Ma/Royal Ontario Museum来源:IEEE电气电子工程师一种相对较新的研究原子的技术可能会对地球上生命的起源提供更多的线索。科学家利用三维原子图(特别是原子探针层析成像)发现,太阳系中最古老的分子流体本可以支持氨基酸的发展…

混合现实未来的八大应用场景

来源:诚迈科技近日,福布斯发布了一篇关于混合现实未来的八个值得关注的领域和应用场景。文中提到:随着时间的推移,技术永远在不断进展,而未来技术中很可能是AR和VR的结合形式。有报告显示:2024年&#xff0…

4个重要的量子理论实验综述

文章原载于:大数据01 量子理论量子理论是一个容易让人迷惑的理论,因此,如果我们想准确地了解其概况,就需要非常谨慎。与大多数自牛顿著作和其他17世纪晚期科学家著作问世以来出现的物理学成果一样,量子理论是一个以数学…

前沿|《细胞》:绕过眼睛植入幻觉,科学家成功在盲人脑海中呈现指定图像!...

该文章内容转载自学术头条对于全球 5000 多万盲人来说,重见光明是一个遥不可及的梦想。而为了与盲人朋友进行交互,我们发明了盲文,用各种凸起的字符集合来表达各种意思。但这种通过手指触摸来识别的方式太过低效。随着脑科学研究的深入&#…

mysql error1045 yes,MySQLERROR1045(28000)错误的解决办法

错误现象:ERROR 1045 (28000): Access denied for userODBClocalhost(using password: NO)ERROR 1045 (28000): Access denied for userODBClocalhost(using password: YES)windows下,以上两个错误的解决方法,本人亲测有效,现分享…

软件测试常考面试题-软件测试面试宝典 ---面试过程中踩过的坑

问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设计文档等&am…

Soft robotics:造仿生昆虫机器人柔性骨骼新技术,只需2小时,成本不到7块!

来源:量子位原标题:只需2小时,成本不到7块,你我皆可制作的3D机器人机器人的骨架能像昆虫那般灵活、健壮吗?这个问题一直困扰着研究人员。以往,要么制作工艺太过复杂,耗的时间长;要么…

2019-2020年半导体行业深度报告

来源:华安证券新科技起点,不可缺芯半导体位于电子行业中游。通过集成电路、分立器件、被动器件在 PCB 上组合形 成模组,构成了手机、电脑、工业、航空航天、军事装备等电子产品的核心。这些产 品又直接影响到国家的发展、社会的进步以及个人的…

5G 智慧城市安全参考架构概述

来源:安全内参2020年5月12日,IMT-2020(5G)推进组安全工作组发布了《5G智慧城市安全需求与架构白皮书》,本文节选自该白皮书,主要概述了5G 智慧城市安全参考框架。该框架是参考GB/T 37971-2019《信息安全技术 智慧城市安全体系框架…

vue 学习笔记—路由篇

一.关于三种路由 动态路由 就是path:good/:ops 这种 用 $route.params接收  <router-link>是用来跳转 <router-view></router-view>用来盛放内容的容易 在routes 里面进行配置 [{ path:,name:,component:}] path为router-link的路径 component为 …

MEMS传感器的未来在哪?

来源&#xff1a;MEMS技术1 引言陀螺是用于测量载体相对惯性空间旋转运动中运动角速度和角度的传感器&#xff0c;是运动控制、姿态监测、导航制导等领域的核心器件&#xff0c;在工业和国防领域具有广泛且重要的应用。陀螺从原理上可分为基于高速旋转刚体的定轴性与进动性工作…

黑科技:绕过眼睛植入幻觉,科学家成功在盲人脑海中呈现指定图像!

来源 | 学术头条&#xff08;ID:SciTouTiao&#xff09;头图 | CSDN付费下载自视觉中国对于全球 5000 多万盲人来说&#xff0c;重见光明是一个遥不可及的梦想。而为了与盲人朋友进行交互&#xff0c;我们发明了盲文&#xff0c;用各种凸起的字符集合来表达各种意思。但这种通过…

ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析

作者&#xff1a;baolongniu of Tencent Security Platform Department关于DokuWikiDokuWiki是一个开源wiki引擎程序&#xff0c;运行于PHP环境下。DokuWiki程序小巧而功能强大、灵活&#xff0c;适合中小团队和个人网站知识库的管理。漏洞简介DokuWiki最新 2016-06-26a版本存在…

[Codevs] 1014 棋盘染色

1049 棋盘染色 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description有一个55的棋盘&#xff0c;上面有一些格子被染成了黑色&#xff0c;其他的格子都是白色&#xff0c;你的任务的对棋盘一些格子进行染色&#xff0c;使得所有的黑色格子能连成一块&…

专访王田苗:机器人是“刚需”,市场正处于逆周期增长

来源&#xff1a;亿欧【本文三大核心点】一、未来老龄化社会的到来与新生代快节奏生活工作的方式让智能机器人处于长期刚性需求。二、人工智能算法、软体材料、5G互联网开放软件平台、多机与人机协作、云服务租赁共享模式等技术给新一代机器人发展带来了大量的产业机遇。三、中…

php算法入门,a011.PHP实战:加密解密,简单算法入门

原标题&#xff1a;a011.PHP实战&#xff1a;加密解密&#xff0c;简单算法入门在PHP编程中&#xff0c;很多时候我们会遇到传递信息的问题&#xff0c;而传递过程中为了安全&#xff0c;我们肯定是要进行加密和解密的&#xff0c;这里&#xff0c;我们来说一说使用PHP怎么进行…

tomcat的安装及配置

1.首先进tomcat官网下载zip压缩文件&#xff1a;http://tomcat.apache.org/download-90.cgi 2.解压缩到指定文件压&#xff08;后面配置环境变量会用到&#xff09; 3.配置环境变量 4.打开解压后文件中的bin文件夹&#xff0c;运行startup.bat 如上图结果则配置成功 5.打开浏览…