前言
之前我寫過一篇文章——《這個開源組織裡的專案都是精品》,裡面列舉了Dromara開源組織的4個java專案,每一個都輕量且實用,受到了很多小夥伴的喜愛。Dromara這個開源組織裡的專案只針對Java,細看了下,都是能提高生產效率,告別加班的神器。這次我又從中挑出了5個精品專案,推薦給大家。
如果你沒看過上一篇系列文章,那也建議你去回顧下:
Cubic
首先我要介紹的是Cubic,一站式問題定位平臺!執行緒棧監控、執行緒池監控、動態arthas命令集、依賴分析等等等,強不強大,香不香?
官方網站:https://cubic.jiagoujishu.com/
Gitee託管倉庫:https://gitee.com/dromara/cubic
Github託管倉庫:https://github.com/dromara/cubic
介紹
一站式問題定位平臺,還在為線上問題而煩惱嗎?
執行緒棧監控、執行緒池監控、動態arthas命令集、依賴分析等等等,致力於應用級監控,幫助開發人員快速定位問題。
有什麼特性
-
1、相容性:整體監控不管你是IDC、ECS、Docker部署,都可完美相容
-
2、易用: 無需任何配置,開箱即用,基於agent無侵入接入,升級應用端無感知
-
3、強大: 支援對應用的基礎監控、堆疊監控、執行緒池監控等等
-
4、高擴充套件:提供良好的擴充套件介面,給你自主選擇
使用後能帶來怎樣工作效率上的提升
許可權認證 |
---|
例項列表 |
例項心跳監測 |
例項基礎資訊採集 |
伺服器資訊採集 |
JVM基礎資訊採集 |
啟動引數採集 |
依賴包檢測 |
arthas動態命令集支援 |
歷史執行緒棧獲取(分鐘級) |
實時執行緒棧獲取 |
執行緒池監控 |
功能展示
例項中心(展示當前例項資訊)
基礎資訊(點選例項-》展示當前例項的基礎資訊)
依賴監控(點選例項-》展示當前例項的依賴包資訊)
Arthas命令操作
執行緒池監控
實時執行緒棧
歷史執行緒棧
想要了解更多請參考:https://gitee.com/dromara/cubic
Sureness
丟掉Shiro吧,也別再用Spring Security了,簡單易用多語言多框架支援,基於RESTAPI的強大國產鑑權框架,效率神器!
官方網站:https://usthe.com/sureness
Gitee託管倉庫:https://gitee.com/dromara/sureness
Github託管倉庫:https://github.com/dromara/sureness
介紹
在主流的前後端分離架構中,如何通過有效快速的認證鑑權來保護後端提供的REST API
變得尤為重要。對現存框架,不原生支援RESTful
的Apache Shiro
,
還是深度繫結Spring
的Spring Security
,或多或少都不是我們的理想型。
於是乎Sureness
誕生了,我們希望能解決這些,提供一個面向REST API,無框架依賴,可以動態修改許可權,多認證策略,更快速度,易用易擴充套件的認證鑑權框架。
特性
Sureness 是我們在深度使用
Apache Shiro
之後,吸取其優點全新設計開發的一個認證鑑權框架
面向REST API
的認證鑑權,基於RBAC
(使用者-角色-資源)主要關注於對API
的安全保護
無特定Web框架依賴,開箱即用(已有Spring Boot,Quarkus,Javalin,Ktor,Micronaut,Jfinal,Solon
等整合樣例)
支援動態修改許可權配置(動態修改配置每個API
誰有權訪問)
支援Websocket
,主流HTTP
容器Servlet
,JAX-RS
,Spring Reactive
支援多種認證策略,JWT, Basic Auth, Digest Auth
... 可擴充套件自定義認證方式
基於改進的字典匹配樹擁有的高效能
良好的擴充套件介面, 樣例和文件助急速理解擴充套件使用
Sureness
的低配置,易擴充套件,不耦合其他框架,希望能對系統多場景快速安全的保護
對比
~ | Sureness | Shiro | Spring Security |
---|---|---|---|
多框架支援 | 支援 | 需改動支援 | 不支援 |
REST API | 支援 | 需改動支援 | 支援 |
Websocket | 支援 | 不支援 | 不支援 |
過濾鏈匹配 | 優化的字典匹配樹 | ant匹配 | ant匹配 |
註解支援 | 支援 | 支援 | 支援 |
Servlet | 支援 | 支援 | 支援 |
JAX-RS | 支援 | 不支援 | 不支援 |
許可權動態修改 | 支援 | 需改動支援 | 需改動支援 |
效能速度 | 較快 | 較慢 | 較慢 |
學習曲線 | 簡單 | 簡單 | 陡峭 |
基準測試顯示Sureness對比無許可權框架應用損耗0.026ms效能,Shiro損耗0.088ms,Spring Security損耗0.116ms
效能差距會隨著api匹配鏈的增加而進一步拉大
詳見基準測試
原生支援樣例
- [x] Sureness整合Spring Boot樣例(配置檔案方案) sample-bootstrap
- [x] Sureness整合Spring Boot樣例(資料庫方案) sample-tom
- [x] Sureness整合Quarkus樣例 sample-quarkus
- [x] Sureness整合Javalin樣例 sample-javalin
- [x] Sureness整合Ktor樣例 sample-ktor
- [x] Sureness整合Spring Webflux樣例 sample-spring-webflux
- [x] Sureness整合Micronaut樣例 sample-micronaut
- [x] Sureness整合MicroProfile樣例 sample-microProfile
- [x] Sureness整合Jfinal樣例 sample-jfinal
- [x] Sureness整合Solon樣例 sample-solon
- [x] Sureness整合Spring Gateway樣例 sample-spring-gateway
- [x] Sureness整合Zuul樣例 sample-zuul
- [x] Sureness整合Session樣例 sureness-session
- [x] Sureness整合分散式快取Session樣例 sureness-redis-session
- [x] More samples todo
想要了解更多請參考:https://gitee.com/dromara/sureness
TLog
十分鐘即可接入,一款神器的日誌框架,支援眾多的框架和主流RPC,讓你的日誌馬上升級,變得可追溯!
Gitee託管倉庫:https://gitee.com/dromara/TLog
Github託管倉庫:https://github.com/dromara/TLog
介紹
隨著微服務盛行,很多公司都把系統按照業務邊界拆成了很多微服務,在排錯查日誌的時候。因為業務鏈路貫穿著很多微服務節點,導致定位某個請求的日誌以及上下游業務的日誌會變得有些困難。
這時候很多童鞋會開始考慮上SkyWalking,Pinpoint等分散式追蹤系統來解決,基於OpenTracing規範,而且通常都是無侵入性的,並且有相對友好的管理介面來進行鏈路Span的查詢。
但是搭建分散式追蹤系統,熟悉以及推廣到全公司的系統需要一定的時間週期,而且當中涉及到鏈路span節點的儲存成本問題,全量採集還是部分採集?如果全量採集,就以SkyWalking的儲存來舉例,ES叢集搭建至少需要5個節點。這就需要增加伺服器成本。況且如果微服務節點多的話,一天下來產生幾十G上百G的資料其實非常正常。如果想儲存時間長點的話,也需要增加伺服器磁碟的成本。
當然分散式追蹤系統是一個最終的解決方案,如果您的公司已經上了分散式追蹤系統,那TLog並不適用。
TLog提供了一種最簡單的方式來解決日誌追蹤問題,它不收集日誌,也不需要另外的儲存空間,它只是自動的對你的日誌進行打標籤,自動生成TraceId貫穿你微服務的一整條鏈路。並且提供上下游節點資訊。適合中小型企業以及想快速解決日誌追蹤問題的公司專案使用。
為此TLog適配了三大日誌框架,支援自動檢測適配。支援dubbo,dubbox,spring cloud三大RPC框架,更重要的是,你的專案接入TLog,可能連十分鐘就不需要 :)
專案特性
目前TLog的支援的特性如下:
- 通過對日誌打標籤完成輕量級微服務日誌追蹤
- 提供三種接入方式:javaagent完全無侵入接入,位元組碼一行程式碼接入,基於配置檔案的接入
- 對業務程式碼無侵入式設計,使用簡單,10分鐘即可接入
- 支援常見的log4j,log4j2,logback三大日誌框架,並提供自動檢測,完成適配
- 支援dubbo,dubbox,springcloud三大RPC框架
- 支援Spring Cloud Gateway和Soul閘道器
- 適配HttpClient和Okhttp的http呼叫標籤傳遞
- 支援三種任務框架,JDK的TimerTask,Quartz,XXL-JOB
- 支援日誌標籤的自定義模板的配置,提供多個系統級埋點標籤的選擇
- 支援非同步執行緒的追蹤,包括執行緒池,多級非同步執行緒等場景
- 幾乎無效能損耗,快速穩定,經過壓測,損耗在0.01%
接入方式
使用後你的每行日誌會變成以下格式
想要了解更多請參考:https://gitee.com/dromara/TLog
ImageCombiner
無需P圖,用Java也能合成很好看的圖,簡單的使用方式,服務端批量合圖利器!
官方網站:http://dromara.gitee.io/image-combiner
Gitee託管倉庫:https://gitee.com/dromara/image-combiner
介紹
ImageCombiner是一個專門用於Java服務端圖片合成的工具,沒有很複雜的功能,追求簡單實用,從實際業務場景出發,提供簡單的介面,幾行程式碼即可實現圖片拼合(當然用於合成水印也可以),特別適合圖片營銷、產品分享等需要實時生成圖片場景。
特性
素材上支援圖片、文字、矩形三種,支援元素的定位、縮放、旋轉、圓角、透明度、顏色、字型、字號、刪除線、居中繪製、文字自動換行等特性,足夠覆蓋圖片合成的日常需求。專案不依賴任何框架,完全基於JDK本身編寫,沒有各種花裡胡哨的東西,效能還是相當不錯的。
效率提升
通過對Graphics2D的封裝和元素模型的提煉,遮蔽了影像處理細節,把複雜的編碼簡化為設定各個元素的位置、屬性即可,作者日常工作中,一個約含十餘個元素的複雜圖片合成,開發加除錯(主要是對比設計稿還原度)20分鐘即可搞定,極大的釋放了生產力。
效果預覽
最簡單的例子
public void simpleDemo() throws Exception {
//合成器
ImageCombiner combiner = new ImageCombiner("http://xxx.com/image/bg.jpg", OutputFormat.JPG);
//加圖片元素
combiner.addImageElement("http://xxx.com/image/product.png", 0, 300)
.setAlpha(.8f) //透明度(0.0~1.0)
.setRotate(45) //旋轉(0~360)
.setBlur(20); //高斯模糊(1~100);
//加文字元素
combiner.addTextElement("週末大放送", 0, 150, 1400)
.setCenter(true) //居中繪製(會忽略x座標,改為自動計算)
.setColor(Color.Red) //顏色
//執行圖片合併
combiner.combine();
//可以獲取流(並上傳oss等)
InputStream is = combiner.getCombinedImageStream();
//也可以儲存到本地
combiner.save("d://image.jpg");
想要了解更多請參考:https://gitee.com/dromara/image-combiner
MaxKey
MaxKey單點登入認證系統是業界領先的企業級IAM身份管理和認證框架,產品化程度很高,多家知名公司的選擇!
Gitee託管倉庫:https://gitee.com/dromara/MaxKey
Github託管倉庫:https://github.com/dromara/MaxKey
介紹
MaxKey單點登入認證系統(Single Sign On System),諧音馬克思的鑰匙寓意是最大鑰匙,是業界領先的企業級IAM身份管理和認證產品,支援OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等標準協議,提供簡單、標準、安全和開放的使用者身份管理(IDM)、身份認證(AM)、單點登入(SSO)、RBAC許可權管理和資源管理等。
特性
- 標準認證協議:
序號 | 協議 | 支援 |
---|---|---|
1.1 | OAuth 2.x/OpenID Connect | 高 |
1.2 | SAML 2.0 | 高 |
1.3 | JWT | 高 |
1.4 | CAS | 高 |
1.5 | FormBased | 中 |
1.6 | TokenBased(Post/Cookie) | 中 |
1.7 | ExtendApi | 低 |
1.8 | EXT | 低 |
- 登入支援
序號 | 登入方式 | 支援 |
---|---|---|
2.1 | 動態驗證碼 | 字母/數字/算術 |
2.2 | 雙因素認證 | 簡訊/時間令牌/郵件 |
2.3 | 簡訊認證 | 騰訊雲簡訊/阿里雲簡訊/網易雲信 |
2.4 | 時間令牌 | 登入易/Google/Microsoft Authenticator/FreeOTP/支援TOTP或者HOTP |
2.5 | 域認證 | Kerberos/SPNEGO/AD域 |
2.6 | LDAP | OpenLDAP/ActiveDirectory/標準LDAP伺服器 |
2.7 | 社交賬號 | 微信/QQ/微博/釘釘/Google/Facebook/其他 |
2.8 | 掃碼登入 | 企業微信/釘釘掃碼登入 |
- 提供標準的認證介面以便於其他應用整合SSO,安全的移動接入,安全的API、第三方認證和網際網路認證的整合。
- 提供使用者生命週期管理,支援SCIM 2協議,基於Apache Kafka代理,通過聯結器(Connector)實現身份供給同步。
- 認證中心具有平臺無關性、環境多樣性,支援Web、手機、移動裝置等, 如Apple iOS,Andriod等,將認證能力從B/S到移動應用全面覆蓋。
- 多種認證機制並存,各應用系統可保留原有認證機制,同時整合認證中心的認證;應用具有高度獨立性,不依賴認證中心,又可用使用認證中心的認證,實現單點登入。
- 基於Java EE平臺,採用Spring、MySQL、Tomcat、Redis、Apache Kafka等開源技術,微服務架構,擴充套件性強。
- 開源、安全、自主可控,許可證 Apache 2.0 License & MaxKey版權宣告。
介面預覽
想要了解更多請參考:https://gitee.com/dromara/MaxKey
最後
其實Dromara開源社群還有最知名的專案(也是star最多的專案)——Hutool,那我為什麼不寫呢。我想說,這框架普及率太高了,幾乎是可以取代apache common包,guava包的存在,程式設計師應該每個人都用下。一篇文章不足以寫出Hutool這個框架的全面性和強大。以後留一篇專門介紹Hutool這個框架。
以上推薦的開源專案,也是Dromara Java社群裡的精品專案,很多都已經是GVP專案了,用好這些框架/工具,真的能讓工作效率大大提升。
最後,看到這的童鞋,點贊,分享,在看點起來啊!