LogiCommonJava 通用功能組件
LogiCommon 是滴滴開源的 Java 版本的認(rèn)證、鑒權(quán)、管理、任務(wù)調(diào)度通用功能組件和公共模塊,包括 Logi-security、Logi-job。
LogiCommon 會盡量保持與具體業(yè)務(wù)的解耦,以簡單易用,輕量高效,盡可能減少用戶感知的方式做到多平臺適配,同時提供可擴(kuò)展的接口,讓用戶自由擴(kuò)展 LogiCommon 的功能,以滿足具體的業(yè)務(wù)。
- Logi-security 主要提供基礎(chǔ)功能服務(wù),主要分為認(rèn)證、鑒權(quán)、管理三部分功能。其中認(rèn)證包括了登錄、注冊、注銷等功能;鑒權(quán)包括了確定用戶的界面權(quán)限、資源權(quán)限的功能;管理包括了用戶、項目、角色、部門的基本操作的功能和操作日志、消息通知的調(diào)控功能;
- Logi-job 是分布式的定時調(diào)度服務(wù)
1.logi-security
1.1 介紹
logi-security 提供項目大多都需要基礎(chǔ)的一些功能(用戶、角色、權(quán)限、登錄、注冊、操作記錄),這些功能開發(fā)簡單但是開發(fā)起來又比較繁瑣和有一定的工作量(開發(fā)、測試、聯(lián)調(diào)、編寫接口文檔等等),所以打算把這類的功能抽取出來,整合進(jìn) Logi-security,讓這些項目開發(fā)人員更加專注于核心功能,避免時間花費在繁瑣的基礎(chǔ)功能的開發(fā)。
1.2 功能支持
主要提供:用戶、項目、角色、部門、界面權(quán)限、資源權(quán)限、操作日志、消息通知
- 用戶模塊:提供了注冊、登錄、認(rèn)證功能,以及用戶信息的展示等基礎(chǔ)功能;
- 項目模塊:提供了創(chuàng)建、刪除、展示、更改運行狀態(tài)等功能;
- 部門模塊:提供了部門信息導(dǎo)入、部門樹形結(jié)構(gòu)展示等功能;
- 界面權(quán)限模塊:提供界面權(quán)限信息的導(dǎo)入、界面功能展示控制等功能;
- 資源權(quán)限模塊:提供對項目具體資源的權(quán)限管理;
- 操作日志模塊:記錄用戶的操作記錄,展示記錄;
- 消息通知模塊:用戶擁有的角色、擁有的資源權(quán)限變更等通知。
1.3 使用方式
1.3.1 添加Maven
<dependency> <groupId>io.github.zqrferrari</groupId> <artifactId>logi-security-spring-boot-starter</artifactId> <version>1.6.3</version> </dependency>
1.3.2 配置文件
logi-security基于springBoot框架開發(fā),需添加以下配置信息:
logi.security.app-name: ES logi.security.resource-extend-bean-name: myResourceExtendImpl # ---------------數(shù)據(jù)源信息--------------- logi.security.username=root logi.security.password=123456 logi.security.url=jdbc:mysql://localhost:3306/logi_security?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai logi.security.driver-class-name=com.mysql.jdbc.Driver
- app-name:表示應(yīng)用的名稱,涉及到 logi-security 的數(shù)據(jù)庫操作都會帶上這個條件(查詢、保存等操作);
- resource-extend-bean-name:resourceExtend的實現(xiàn)類在spring容器bean的名稱,logi-security 中資源權(quán)限管理模塊,需要獲取具體資源的信息,所以用戶需實現(xiàn) ResourceExtend 接口并指定實現(xiàn)類在spring容器中bean的名稱;
1.3.3 需要實現(xiàn)接口
用戶可選的實現(xiàn) ResourceExtend 接口,如果不實現(xiàn),則資源權(quán)限管理模塊的功能不能完整使用。接口詳情見代碼
1.3.4 導(dǎo)入數(shù)據(jù)
logi-security相關(guān)界面并沒提供【角色權(quán)限元數(shù)據(jù)、資源類別數(shù)據(jù)、部門信息數(shù)據(jù)、操作日志相關(guān)(操作頁面、操作對象、對象分類)】的創(chuàng)建功能,logi-security提供了數(shù)據(jù)導(dǎo)入的接口。 建議全部都導(dǎo)入,簡單的數(shù)據(jù)也行。
2.logi-job
2.1 介紹
是分布式的定時調(diào)度服務(wù)。
2.2 功能支持
主要提供:分布式定時調(diào)度服務(wù)、任務(wù)管理、分布式鎖等功能
- 分布式定時調(diào)度服務(wù):添加指定注解,并實現(xiàn)規(guī)定的接口,編寫待調(diào)度的方法;
- 任務(wù)管理模塊:提供查看任務(wù)列表、任務(wù)詳情、手動執(zhí)行任務(wù)、變更任務(wù)狀態(tài)、任務(wù)日志等功能;
- 分布式鎖機(jī)制:確保多系統(tǒng)下,對于臨界資源的保護(hù),和調(diào)節(jié)調(diào)度秩序,防餓死。
2.3 使用方式
2.3.1 添加Maven
<dependency> <groupId>io.github.zqrferrari</groupId> <artifactId>logi-job-spring-boot-starter</artifactId> <version>1.0.10</version> </dependency>
2.3.2 配置信息
logi-job基于springBoot框架開發(fā),在使用的時候需要在配置文件中增加幾項配置信息,如下:
spring: logi-job: jdbc-url: jdbc:mysql://localhost:3306/es_manager_test?useUnicode=true&characterEncoding=utf8&jdbcCompliantTruncation=true&allowMultiQueries=true&useSSL=false username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver max-lifetime: 60000 init-sql: true init-thread-num: 10 max-thread-num: 20 #調(diào)度最大線程數(shù) log-exipre: 3 #日志保存天數(shù),以天為單位 app_name: arius_test02 #應(yīng)用名,用戶隔離機(jī)器和環(huán)境 claim-strategy: com.didiglobal.logi.job.core.consensual.RandomConsensual #調(diào)度策略,有兩種隨機(jī)和廣播,默認(rèn)是隨機(jī)
2.3.3 使用樣例
package com.didichuxing.datachannel.arius.admin.task.metadata; import com.didichuxing.datachannel.arius.admin.metadata.job.cluster.monitor.esMonitorJob.MonitorJobHandler; import com.didiglobal.logi.job.annotation.Task; import com.didiglobal.logi.job.common.TaskResult; import com.didiglobal.logi.job.core.job.Job; import com.didiglobal.logi.job.core.job.JobContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; // @Task 注解自帶了 @Component @Task(name = "esMonitorJob", description = "monitor調(diào)度任務(wù)", cron = "0 0/1 * * * ? *", autoRegister = true) public class ESMonitorJobTask implements Job { private static final Logger LOGGER = LoggerFactory.getLogger(ESMonitorJobTask.class); @Autowired private MonitorJobHandler monitorJobHandler; @Override public TaskResult execute(JobContext jobContext) throws Exception { LOGGER.info("class=ESMonitorJobTask||method=execute||msg=start"); monitorJobHandler.handleJobTask(""); return TaskResult.SUCCESS; } }
3.logi-log
3.1 介紹
集成了:logi-log-log、logi-log-log4j2。
3.2 添加maven
<dependency> <groupId>io.github.zqrferrari</groupId> <artifactId>logi-log-log</artifactId> <version>1.0.4</version> </dependency>
3.2 logi-log-log
logi-log-log是基于slf4j封裝的組件,為用戶提供日志相關(guān)功能。各個業(yè)務(wù)可以選擇log4j,logback,log4j2,只要配置上橋接就可以使用。
