溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Networknt Light 4J分析報(bào)告是怎樣的

發(fā)布時(shí)間:2021-12-28 15:28:50 來源:億速云 閱讀:156 作者:柒染 欄目:云計(jì)算

這篇文章將為大家詳細(xì)講解有關(guān)Networknt Light 4J分析報(bào)告是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

Networknt Light 4J分析報(bào)告

一、整體介紹

Light 4J是networknt.com的核心產(chǎn)品。一個(gè)基于Java SE快速、輕量級(jí)并且高效的微服務(wù)框架。其包含十多個(gè)子模塊,用于不同風(fēng)格的API構(gòu)建,包括OAuth3,Portal,Logging,Messaging和Metrics等基礎(chǔ)設(shè)施服務(wù)。此外,還有一系列工具可幫助提高開發(fā)人員和操作人員的工作效率。

1、性能情況

在Light 4J官方的benchmark的測(cè)試報(bào)告中,將它與 Spring Boot 及其他微服務(wù)平臺(tái)作了性能比較。Light 4J比Spring Boot內(nèi)嵌Tomcat的主流微服務(wù)框架平臺(tái)快44倍,并且只需要1/5內(nèi)存,性能與 Go 語(yǔ)言并肩,擁有更低的平均延遲。

     Framework

Language

Max Throughput

Avg Latency

Transfer

Go FastHttp

Go

1,396,685.83

99.98ms

167.83MB

Light-4j

Java

1,344,512.65

2.36ms

169.25MB

Spark

Java

194,553.83

13.85ms

32.47MB

Go Http

Go

170,313.02

15.01ms

20.95MB

Spring Boot Undertow

Java

44,260.61

38.94ms

6.42MB

Spring Boot Tomcat

Java

33,086.22

82.93ms

3.98MB

2、Github情況

Light 4J目前共有71個(gè)Github子項(xiàng)目,其中Java項(xiàng)目39個(gè),最高熱度的項(xiàng)目為L(zhǎng)ight 4J本身,2167 star,354 fork,低于Spring Boot、Spring Cloud、Dubbo等項(xiàng)目。其余幾個(gè)核心子項(xiàng)目,如light-oauth3、light-rest-4j、light-proxy等項(xiàng)目?jī)H有一兩百的star。

Light 4J項(xiàng)目目前共有23個(gè)代碼貢獻(xiàn)者,但目前關(guān)注的開發(fā)者開始逐漸加入, 形成開發(fā)梯隊(duì)。

3、Light 4J能力清單

模塊

描述

server

基于Undertow實(shí)現(xiàn)http請(qǐng)求

security

基于OAuth3實(shí)現(xiàn)JWT的校驗(yàn)和解析,并支持mock

config

支持獨(dú)立應(yīng)用的外配配置文件,支持docker配置文件

Utility

一個(gè)工具集

client

封裝了httpclient和httpasyncclient的能力,支持緩存和jwt信息的讀取

validator

支持基于sawgger的請(qǐng)求參數(shù)和url路徑校驗(yàn),支持基于json-schema-validator的請(qǐng)求包體校驗(yàn)

audit

支持以json的格式,將請(qǐng)求和響應(yīng)報(bào)文輸出到日志文件中

info

提供一個(gè)/server/info端點(diǎn),可以輸出應(yīng)用的各個(gè)組件配置信息

mask

為特定數(shù)據(jù)脫敏,比如卡號(hào)等信息

status

構(gòu)建http錯(cuò)誤類型模型,使用唯一的錯(cuò)誤編號(hào)來幫助應(yīng)用排查問題

swagger-codegen

使用swagger規(guī)范生成API接口程序

balance

復(fù)雜均衡模塊,默認(rèn)支持輪詢和本地優(yōu)先,可擴(kuò)展開發(fā)

body

支持將http body格式化成Java Map或List

cluster

支持通過服務(wù)名的方式進(jìn)行服務(wù)發(fā)現(xiàn)

consul

Light 4j的consul注冊(cè)中心實(shí)現(xiàn)

correlation、traceability

鏈路跟蹤模塊

CORS

http CORS 訪問控制模塊

zookeeper

Light 4j的zookeeper注冊(cè)中心實(shí)現(xiàn)

data-source

各種數(shù)據(jù)庫(kù)接入實(shí)現(xiàn)

decryptor、encode-decode

加解密模塊,支持AES

rate-limit

請(qǐng)求速率限制模塊

prometheus

支持prometheus格式數(shù)據(jù)接口

email-sender

郵件發(fā)送模塊

ip-whitelist

請(qǐng)求白名單

metrics

交易統(tǒng)計(jì)模塊

二、框架設(shè)計(jì)思路及技術(shù)核心

Light 4J面向微服務(wù)架構(gòu)進(jìn)行設(shè)計(jì),力求高吞吐、低延遲、輕量級(jí)?;赨ndertow Core Http server核心組件進(jìn)行實(shí)現(xiàn),集成了盡可能少的第三方依賴庫(kù)。在架構(gòu)設(shè)計(jì)時(shí),主要遵循以下設(shè)計(jì)原則:

  1. 專門為微服務(wù)進(jìn)行設(shè)計(jì),并對(duì)容器化部署進(jìn)行適配優(yōu)化

  2. 摒棄復(fù)雜的JavaEE,僅基于純粹的HTTP進(jìn)行實(shí)現(xiàn)

  3. 以安全第一為設(shè)計(jì)原則,內(nèi)嵌了OAuth3.0實(shí)現(xiàn)和分布式網(wǎng)關(guān)的實(shí)現(xiàn)

  4. 設(shè)計(jì)中考慮了如何在微服務(wù)上實(shí)現(xiàn)分布式事物

  5. 將各個(gè)不同功能都設(shè)計(jì)為插件形式,易于框架的定制和擴(kuò)展

  6. 服務(wù)消費(fèi)方直接支持服務(wù)的發(fā)現(xiàn),無(wú)需通過服務(wù)網(wǎng)關(guān)、服務(wù)代理等機(jī)制進(jìn)行實(shí)現(xiàn)

  7. 日志可以結(jié)合ElasticSearch,、LogStash、Kibana提供監(jiān)控和報(bào)警能力

  8. 內(nèi)嵌的服務(wù)調(diào)用統(tǒng)計(jì)和鏈路跟蹤功能

  9. 實(shí)現(xiàn)了自己的依賴注入機(jī)制,無(wú)需引入Spring等復(fù)雜框架

Light 4J框架將Handler請(qǐng)求攔截機(jī)制作為核心,在Handler中處理框架邏輯和業(yè)務(wù)邏輯。Handler可分為兩種,一種是chain類型Handler,類似過濾器,會(huì)處理每個(gè)請(qǐng)求;另一種path類型Handler僅處理特定http路徑請(qǐng)求。

配置chain handler有兩個(gè)步驟:1、在yml配置文件中handlers的位置增加實(shí)現(xiàn)類定義(外部引入),格式為“包名.類名@別名”;2、在yml配置文件中的的chains位置增加該別名,別名的順序代表處理的順序,cross-cutting concerns處理鏈?zhǔn)情_發(fā)是結(jié)構(gòu), 用戶可以override或者加入自己的cross-cutting concerns處理鏈去支持其它標(biāo)準(zhǔn)或者應(yīng)用, 比如opentracing, istio 等。

配置http handler有三個(gè)步驟:1、基于LightHttpHandler接口實(shí)現(xiàn)http請(qǐng)求處理類;2、在yml配置文件中handler位置定義該實(shí)現(xiàn)類的,格式為“包名.類名”;3、在yml配置文件中paths的位置配置http請(qǐng)求對(duì)應(yīng)的請(qǐng)求方式、路徑、實(shí)現(xiàn)類。

Handlers配置示例:

Networknt Light 4J分析報(bào)告是怎樣的

Chains配置示例:

Networknt Light 4J分析報(bào)告是怎樣的

Paths配置示例:

Networknt Light 4J分析報(bào)告是怎樣的

自定義Handlers實(shí)現(xiàn)示例:

Networknt Light 4J分析報(bào)告是怎樣的

三、總結(jié)

1、性能方面

Light 4J相比較與現(xiàn)有的Spring Boot、Spring Cloud或Dubbo,由于功能上的簡(jiǎn)化,性能上確實(shí)會(huì)來帶較大的提升,同時(shí)它也提供了基礎(chǔ)的服務(wù)注冊(cè)與發(fā)現(xiàn)機(jī)制,支持zookeeper,支持容器上云部署。

不同于大應(yīng)用(monolithic application), 微服務(wù)(microservices application)的每一個(gè)服務(wù)本身所處理的邏輯相對(duì)簡(jiǎn)單, 不應(yīng)該把大量的業(yè)務(wù)邏輯處理和數(shù)據(jù)庫(kù)交互放在單個(gè)服務(wù)(service API)中。而service to service的交互相對(duì)更加頻繁 (servicemesher)。 很多復(fù)雜的業(yè)務(wù)邏輯處理應(yīng)該分布在多個(gè)服務(wù)中,然后通過service to service的交互來完成。所以框架本身的性能和service to service的交互中的相應(yīng)時(shí)間就極其重要。對(duì)于大規(guī)模容器上云部署, 可以顯著地節(jié)約成本。

基于一個(gè)用戶的測(cè)試報(bào)告:

For the same functionality, 

Framework      throughput         latency          memory

Spring-Boot       213/s              66.07ms         1.5GB

Light-4j            2319/s             11.39ms         300MB

2、生態(tài)方面

Light 4J主要的弱點(diǎn)在于其生態(tài)的相對(duì)薄弱。 Light 4J目前并沒有完善的生態(tài)體系,社區(qū)方面熱度也較低,主項(xiàng)目?jī)H有2.2k的star,其他項(xiàng)目基本都只有幾十到幾百的star。相比于Spring健全的生態(tài)體系,能力上會(huì)弱很多,比如熔斷、限流、配置中心這些能力目前處于沒有實(shí)現(xiàn)或僅有簡(jiǎn)單方案的狀態(tài),與不同第三方中間件的對(duì)接,都要以Handler的模式進(jìn)行二次開發(fā)適配。

3、能力方面

Light 4J框架Handler請(qǐng)求攔截機(jī)制對(duì)于開發(fā)者透明并且可延遲配置, 開發(fā)者可以集中精力在業(yè)務(wù)邏輯從而提高工作效率。  雖然Light 4J本身提供了較多微服務(wù)架構(gòu)下所需的能力, 有些并沒有跟蹤行業(yè)標(biāo)準(zhǔn)。例如Light 4J框架內(nèi)部提供了鏈路跟蹤模塊不支持Open Tracing . 用戶可以按自己的標(biāo)準(zhǔn)設(shè)計(jì)并開發(fā)擴(kuò)展模塊 (cross-cutting concerns middleware handler)。

關(guān)于Networknt Light 4J分析報(bào)告是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI