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经过社区的打磨验证,整体来说稳定性和性能相对来说自然比第三方框架好,笔者空闲之余看过

一些组件的代码,正如作者所说基本没有使用第三方框架,大道至简大概是作者的本意吧。

作者早起从事过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倍。

光看上面的数据还是比较吸引人的。笔者接下来将引导大家像,springboot那样,通过网站下载一个demo回来了解这个框架。

light4j中文钉钉群 21975907,欢迎小伙伴加入一起学习。

light4j一个轻量级的低延时、高吞吐量、内存占用量小的API平台的更多相关文章

  1. Solon,一个轻量级的应用开发框架。发布官网喽!!!

    官网发布: https://solon.noear.org/ 项目简介: Solon,是一个轻量级的应用开发框架.更快.更小.更自由! 支持JDK8+:主框架0.1Mb:组合不同的插件应对不同需求:方 ...

  2. 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。

    学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端 from:https://baijia.baidu.com/s?id=1587367874517247282&wfr ...

  3. 低延时的P2P HLS直播技术实践

    本文根据4月21日OSC源创会·武汉站的现场分享为蓝本,重新整理.以下是演讲内容: 近几年,随着直播.短视频等视频领域对带宽要求的提升以及CDN行业竞争的加剧,很多CDN公司开始往P2P-CDN方向发 ...

  4. [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解

    技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解    http://www.52im.net/thread-1309-1-1.html   本文来自腾讯资深研发工程师罗成的技术分享, ...

  5. kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

    一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...

  6. EasyNVR无插件直播服务器软件览器低延时播放监控摄像头视频(EasyNVR播放FLV视频流)

    背景描述 EasyNVR的使用者应该都是清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可 ...

  7. EasyNVR无插件摄像机直播之:摄像机网页低延时无插件直播实现

    背景需求 对于摄像机直播,客户反馈的最多就是实现web直播.摆脱插件,可以自定义集成等问题, 对于熟悉EasyNVR已经完美的解决了这些问题.然而对于web播放也存在一些问题,通常我们web播放RTM ...

  8. 浏览器低延时播放监控摄像头RTSP海康大华硬盘录像机NVR视频(EasyNVR播放FLV视频流)

    背景描述 EasyNVR的使用者应该都是清楚的知道,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理后可 ...

  9. HALC:用于长读取错误纠正的高吞吐量算法

    背景: 第三代PacBio SMRT长读取可以有效地解决第二代测序技术的读长问题,但包含大约15%的测序错误.已经设计了几种纠错算法以有效地将错误率降低到1%,但是它们丢弃了大量未校正的碱基,因此导致 ...

随机推荐

  1. web api .net C# mvc API返回XML文档的解析并取值

    [HttpGet] public System.Net.Http.HttpResponseMessage GetNotify() { var xmlstring = @" <xml&g ...

  2. Selenium_webdriver+java+TestNG入门UI自动化

    web ui自动化测试需要的工作:Eclipse(JAVA编译器).selenium(库文件).webdriver(浏览器驱动).testng的lib; 如图: 第一步:先部署坏境,下载seleniu ...

  3. vue-cli配置移动端自适应flexible.js

    第一部分:项目中引入lib-flexible 一.项目中安装lib-flexible npm install lib-flexible --save-dev 二.在项目入口文件main.js中引入li ...

  4. Caused by: org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 5000

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'brandControl ...

  5. spring mvc @RequestMapping method 不写的话,默认GET、POST都支持,根据前端方式自动适应

    @RequestMapping(value="/") method 不写的话,默认GET.POST都支持,根据前端方式自动适应.

  6. Linux:使用awk命令获取文本的某一行,某一列;sed插入指定的内容到指定文件中

    awk相关用法: 1.打印文件的第一列(域)                 : awk '{print $1}' filename2.打印文件的前两列(域)                 : aw ...

  7. python语言(四)关键字参数、内置函数、导入第三方模块、OS模块、时间模块

    一.可变参数 定义函数时,有时候我们不确定调用的时候会传递多少个参数(不传参也可以).此时,可用包裹(packing)位置参数(*args),或者包裹关键字参数(**kwargs),来进行参数传递,会 ...

  8. Redis笔记搬迁

      Redis原理 从不同的角度来详细介绍redis 存储方式 数据结构 Redis的过期策略 数据淘汰策略 高可用 主从复制 分布式缓存 哨兵 缓存异常 缓存穿透 缓存雪崩 缓存与数据库数据一致性 ...

  9. Linux/Windows 配置config 使用ssh连接

    Linux 产看本地是否有ssh 公私钥 1 cd ~/.ssh 2 ls -a 有的话继续(没有 ssh-keygen 生成) 将公钥内容复制到要连接的服务器用户下 方法一 ssh-copy-id ...

  10. nginx 反向代理配置示例

    Nginx反向代理在生产环境中使用很多的. 场景1: 域名没有备案,可以把域名解析到香港一台云主机上,在香港云主机做个代理,而网站数据是在大陆的服务器上. server { listen ; serv ...