1、背景(abstract)
笔者算是一个极客类型的程序员了。喜欢探索一些程序内在的原理、稳定性、自动化运维、健壮性,很多时间也会
去对程序的内存使用率、cpu使用率锱铢必较。尽量克扣掉不必要的cpu和内存资源,这在一定程序上能节省成本,比如
笔者曾经在阿里云托管java web服务器,1GHz/1G的虚拟主机,使用了springMVC,由于使用的jar包比较多,占用cpu和
内存资源多,远程ssh连接到服务器时几乎不能在有空闲的资源响应我的请求。那个程序不“疾”而终。然后就没有然后了。
做过个人站的小伙伴应该体会过到这种痛,对于刚起步的站长,托管费用那是相当不小的开销,很多人没熬过盈利/收支平衡
就悄无声息的关闭网站了。一次偶然的机会在国外论坛看到一个框架light4j,性能不错。抱着试试看的心态,有了这篇文章。
2、light4j介绍
根据项目发起人Steve hu项目最早命名是Light (weight)Java,取轻量简洁之意,后因为Oracle联系到他,迫于一些原因改成Light4j。
框架主要使用J2SE中的API,一方面这些API经过社区的打磨验证,整体来说稳定性和性能相对来说自然比第三方框架好,笔者空闲之余看过
一些组件的代码,正如作者所说基本没有使用第三方框架,大道至简大概是作者的本意吧。
Light4j默认使用HTTP2协议,同时还支持支持基于HTTPS(http +ssl),HTTP2相对于HTTP1.1做了更大的改进和升级,Light4j在JDK8平台也
独创的使用了HTTP2,目前还没有其他Java Web容器/服务器在JDK8环境下使用HTTP2。这是一个亮点。
作者早起从事过J2EE开发,那个时候项目编译时间一次要半小时以上,深受其害,因此也有了这个框架的产生。笔者工作早起又有类
似的经历,给某药业集团开发过仓储管理系统(WMS),使用J2EE即使,修改代码后编译一次web项目半个多小时,编译以后再运行,是否正确
还不能确定,发现问题再重新编译一次,又是半个小时,真是骂爹骂娘都没用。编译好了,然后备份恢复oracle数据,一次2小时,并不能保证成功,
一次项目升级一直到早晨4点还没成功。
据Steve Hu介绍,目前该框架已经在加拿大,美国的确有稳定客户。行业涉及:银行,医疗、政府、企业。
某医疗行业,病人通过穿戴式的医疗材料/设备采集数据,使用light4j重构项目以后,服务器处理量变多;还有一些银行行业都获得了良好的口碑
和稳定的合作关系。目前国内有某银行正在洽谈合作、还有阿里巴巴也在洽谈相关合作。
框架目前主要有两个分支 2.x(JDK11)和 1.6(JDK8),国内目前使用JDK1.8比较多,可以下载1.6分支代码回来学习,使用。
3、评测数据
我们先来看看这个框架在国外网站的评测(2019-07-09数据)
json序列化:https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=json&l=zik0vz-f
light4j排第4,spring排53
light4j在json序列化方面是spring的18.92倍
纯文本处理:https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=plaintext&l=zik0vz-f
light4j排行14,spring排56
文本处理方面,light4j是spring的50.55倍。
web项目,我们一般使用接口返回json,另外则是返回html(纯文本),通过上面评测数据看得出,light4j的确在这两个方面比spring
快了很多。单位时间内处理的数据量大了,接口响应延时也会变短。当然以上数据都是简单测试数据,还不能反应真实环境中情况。
以下是官网的一些微服务测试数据。spring阵营最大吞吐量243240.17,light4j最大吞吐量1344512.65,light4j是spring的50.52倍。