common-technical-practices
npx skills add https://github.com/tencentblueking/bk-ci --skill common-technical-practices
Agent 安装分布
Skill 文档
éç¨ææ¯å®è·µæå
Skill æ¦è¿°
æ¬ Skill æ¶µçäº BK-CI å端å¼åä¸å¸¸ç¨ç 7 大éç¨ææ¯å®è·µï¼è¿äºææ¯æ¯æ¨ªè·¨å¤ä¸ªæ¨¡åç æ¨ªåå ³æ³¨ç¹ï¼Cross-Cutting Concernsï¼ï¼ä¸ Spring Boot æ¡æ¶ç´§å¯éæã
æ ¸å¿ä¸»é¢
| ä¸»é¢ | 说æ | ææ¡£ |
|---|---|---|
| AOP åé¢ç¼ç¨ | æ¦æªå¨ãæ¥å¿åé¢ãæéåé¢ | [1-aop-aspect.md] |
| åå¸å¼é | Redis éãå¹¶åæ§å¶ãæ»éé¢é² | [2-distributed-lock.md] |
| éè¯æºå¶ | éè¯çç¥ãéé¿ç®æ³ãå¹çæ§ | [3-retry-mechanism.md] |
| åæ°æ ¡éª | JSR-303 注解ãèªå®ä¹æ ¡éªå¨ | [4-parameter-validation.md] |
| æ§è½çæ§ | Micrometer ææ ãPrometheus | [5-performance-monitoring.md] |
| 宿¶ä»»å¡ | Spring Scheduledãåå¸å¼è°åº¦ | [6-scheduled-tasks.md] |
| 审计æ¥å¿ | æä½å®¡è®¡ãè¡ä¸ºè¿½è¸ªãåè§æ§ | [7-audit-logging.md] |
â ï¸ ä¸ utility-components çåºå«
å®ä½å¯¹æ¯
| Skill | å®ä½ | å ³æ³¨ç¹ | å ¸ååºæ¯ |
|---|---|---|---|
| common-technical-practices (æ¬ Skill) | æ¡æ¶çº§å®è·µ | å¦ä½å¨ Spring Boot ä¸ä½¿ç¨è¿äºææ¯ | AOP åé¢ãåå¸å¼éãéè¯æºå¶ãåæ°æ ¡éªãæ§è½çæ§ã宿¶ä»»å¡ã审计æ¥å¿ |
| utility-components | å·¥å ·çº§ç»ä»¶ | å¦ä½ä½¿ç¨ç¹å®çå·¥å ·ç±»åç»ä»¶ | JWT 认è¯ã表达å¼è§£æãçº¿ç¨æ± 使ç¨ã责任é¾å®ç° |
使ç¨éæ©
éè¦å®ç°æ¨ªåå
³æ³¨ç¹ï¼AOPãéãéè¯ãçæ§ï¼
â ä½¿ç¨ common-technical-practices (æ¬ Skill)
éè¦ä½¿ç¨ç¹å®å·¥å
·ç±»ï¼JWTã表达å¼ãçº¿ç¨æ± ã责任é¾ï¼
â ä½¿ç¨ utility-components
示ä¾å¯¹æ¯:
- éè¦ æ·»å æ§è½çæ§åé¢ â
common-technical-practices(reference/5-performance-monitoring.md) - éè¦ ä½¿ç¨çº¿ç¨æ± æ¹éå¤ç â
utility-components(reference/3-thread-pool-loop-util.md) - éè¦ å®ç°åå¸å¼é â
common-technical-practices(reference/2-distributed-lock.md) - éè¦ å®ç° JWT è®¤è¯ â
utility-components(reference/1-jwt-security.md)
ææ¯å®è·µæ¶æ
横åå ³æ³¨ç¹è§å¾
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â BK-CI ä¸å¡é»è¾å± â
â (Process/Project/Store/Auth/Repository/Dispatch...) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
ââââââââââââââââââââââ¼âââââââââââââââââââââ
â â â
ââââââ¼âââââ ââââââ¼âââââ ââââââ¼âââââ
â AOP â â åæ° â â 审计 â
â åé¢ â â æ ¡éª â â æ¥å¿ â
âââââââââââ âââââââââââ âââââââââââ
â â â
ââââââââââââââââââââââ¼âââââââââââââââââââââ
â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â éç¨ææ¯å®è·µå± â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â ⢠åå¸å¼éï¼å¹¶åæ§å¶ï¼ â
â ⢠éè¯æºå¶ï¼å®¹éå¤çï¼ â
â ⢠æ§è½çæ§ï¼å¯è§æµæ§ï¼ â
â â¢ å®æ¶ä»»å¡ï¼è°åº¦ç®¡çï¼ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ä½¿ç¨æå
åºæ¯ 1ï¼å®ç° AOP åé¢
éæ±: æ·»å æ¥å¿åé¢ãæéåé¢ãæ§è½çæ§åé¢
æ¥éª¤:
- æ¥é reference/1-aop-aspect.md
- äºè§£åç¹è¡¨è¾¾å¼è¯æ³
- éæ©éç¥ç±»åï¼Before/After/Aroundï¼
- å®ç°åé¢é»è¾
å ¸åé®é¢:
- å¦ä½å®ä¹åç¹è¡¨è¾¾å¼ï¼
- Around éç¥å¦ä½è·åæ¹æ³åæ°ï¼
- å颿§è¡é¡ºåºå¦ä½æ§å¶ï¼
åºæ¯ 2ï¼ä½¿ç¨åå¸å¼é
éæ±: å¹¶åæ§å¶ãèµæºç«äºãæ°æ®ä¸è´æ§ä¿è¯
æ¥éª¤:
- æ¥é reference/2-distributed-lock.md
- éæ©åéçéç²åº¦
- 使ç¨
RedisLock.ktå·¥å ·ç±» - å¤çéè¶ æ¶åæ»é
å ¸åé®é¢:
- å¦ä½é¿å æ»éï¼
- éè¶ æ¶æ¶é´å¦ä½è®¾ç½®ï¼
- å¯éå ¥éå¦ä½å®ç°ï¼
åºæ¯ 3ï¼é ç½®éè¯æºå¶
éæ±: å¤çä¸´æ¶æ§æ éãç½ç»æå¨ãæå¡é级
æ¥éª¤:
- æ¥é reference/3-retry-mechanism.md
- éæ©éè¯çç¥ï¼åºå®å»¶è¿/ææ°éé¿ï¼
- é ç½®éè¯æ¬¡æ°åè¶ æ¶
- ç¡®ä¿æä½å¹çæ§
å ¸åé®é¢:
- ä»ä¹æ åµä¸åºè¯¥éè¯ï¼
- å¦ä½å®ç°ææ°éé¿ï¼
- éè¯æ¬¡æ°ä¸éå¦ä½ç¡®å®ï¼
åºæ¯ 4ï¼æ·»å åæ°æ ¡éª
éæ±: æ¥å£åæ°æ ¡éªãæ°æ®å®æ´æ§æ£æ¥
æ¥éª¤:
- æ¥é reference/4-parameter-validation.md
- ä½¿ç¨ JSR-303 注解ï¼@NotNull/@Size/@Validï¼
- ç¼åèªå®ä¹æ ¡éªå¨ï¼å¦éï¼
- é ç½®æ ¡éªåç»
å ¸åé®é¢:
- å¦ä½èªå®ä¹æ ¡éªæ³¨è§£ï¼
- åµå¥å¯¹è±¡å¦ä½æ ¡éªï¼
- æ ¡éªéè¯¯æ¶æ¯å¦ä½å½é åï¼
åºæ¯ 5ï¼å®ç°æ§è½çæ§
éæ±: æ·»å æ§è½åç¹ãçæ§æ ¢æ¥è¯¢ãåæç¶é¢
æ¥éª¤:
- æ¥é reference/5-performance-monitoring.md
- 使ç¨
@BkTimed注解æWatcherå·¥å ·ç±» - é ç½® Prometheus ææ éé
- åææ§è½æ°æ®
å ¸åé®é¢:
- å¦ä½æ·»å èªå®ä¹ææ ï¼
- Micrometer å¦ä½ä½¿ç¨ï¼
- å¦ä½çæ§æ°æ®åºæ ¢æ¥è¯¢ï¼
åºæ¯ 6ï¼åå»ºå®æ¶ä»»å¡
éæ±: å®ææ¸ çãæ°æ®åæ¥ãç»è®¡æ¥è¡¨
æ¥éª¤:
- æ¥é reference/6-scheduled-tasks.md
- 使ç¨
@Scheduled注解é ç½® Cron è¡¨è¾¾å¼ - æ·»å åå¸å¼é鲿¢å¹¶åæ§è¡
- å®ç°ä»»å¡çæ§
å ¸åé®é¢:
- Cron 表达å¼å¦ä½ç¼åï¼
- å¦ä½é¿å ä»»å¡é夿§è¡ï¼
- åå¸å¼ç¯å¢ä¸å¦ä½è°åº¦ï¼
åºæ¯ 7ï¼è®°å½å®¡è®¡æ¥å¿
éæ±: æä½å®¡è®¡ãè¡ä¸ºè¿½è¸ªãåè§æ§è¦æ±
æ¥éª¤:
- æ¥é reference/7-audit-logging.md
- 使ç¨å®¡è®¡æ¥å¿å·¥å ·ç±»
- è®°å½å ³é®æä½ï¼å建/ä¿®æ¹/å é¤ï¼
- åå¨å®¡è®¡æ°æ®
å ¸åé®é¢:
- åªäºæä½éè¦å®¡è®¡ï¼
- 审计æ¥å¿å¦ä½åå¨ï¼
- å¦ä½è¿½æº¯å岿ä½ï¼
æ ¸å¿ç±»ä¸æä»¶éæ¥
AOP åé¢
| ç±»/æä»¶ | è·¯å¾ | 说æ |
|---|---|---|
BkAspect |
common-web/aop/BkAspect.kt |
åºç¡åé¢ç±» |
LogAspect |
common-web/aop/LogAspect.kt |
æ¥å¿åé¢ |
åå¸å¼é
| ç±»/æä»¶ | è·¯å¾ | 说æ |
|---|---|---|
RedisLock |
common-redis/RedisLock.kt |
Redis åå¸å¼é |
RedisOperation |
common-redis/RedisOperation.kt |
Redis æä½å·¥å · |
éè¯æºå¶
| ç±»/æä»¶ | è·¯å¾ | 说æ |
|---|---|---|
RetryUtils |
common-service/utils/RetryUtils.kt |
éè¯å·¥å ·ç±» |
åæ°æ ¡éª
| ç±»/æä»¶ | è·¯å¾ | 说æ |
|---|---|---|
BkField |
common-web/annotation/BkField.kt |
èªå®ä¹æ ¡éªæ³¨è§£ |
æ§è½çæ§
| ç±»/æä»¶ | è·¯å¾ | 说æ |
|---|---|---|
BkTimed |
common-service/prometheus/BkTimed.kt |
æ§è½çæ§æ³¨è§£ |
Watcher |
common-api/util/Watcher.kt |
æ§è½çæ§å·¥å · |
审计æ¥å¿
| ç®å½ | è·¯å¾ | 说æ |
|---|---|---|
common-audit/ |
common/common-audit/ |
审计æ¥å¿æ¨¡å |
å¼åè§è
1. AOP åé¢å¼å
- â
åé¢ç±»æ¾å¨
*.aopå ä¸ - â
使ç¨
@Aspect+@Component注解 - â åç¹è¡¨è¾¾å¼å°½é精确ï¼é¿å è¿åº¦æ¦æª
- â
注æå颿§è¡é¡ºåºï¼ä½¿ç¨
@Orderï¼
2. åå¸å¼é使ç¨
- â éç²åº¦è¦ç»ï¼é¿å 大é
- â 设置åççè¶ æ¶æ¶é´ï¼å»ºè®® 10-30 ç§ï¼
- â ä½¿ç¨ try-finally ç¡®ä¿ééæ¾
- â é¿å å¨éå æ§è¡èæ¶æä½
3. éè¯æºå¶é ç½®
- â ä» å¯¹ ä¸´æ¶æ§æ é éè¯ï¼ç½ç»æå¨ãè¶ æ¶ï¼
- â ä¸è¦å¯¹ ä¸å¡é误 éè¯ï¼åæ°é误ãæéä¸è¶³ï¼
- â ç¡®ä¿æä½å¹çæ§
- â ä½¿ç¨ææ°éé¿é¿å éªå´©
4. åæ°æ ¡éªè§è
- â Controller å±å¿ é¡»æ ¡éªå ¥å
- â ä½¿ç¨æ å JSR-303 注解
- â å¤ææ ¡éªä½¿ç¨èªå®ä¹æ ¡éªå¨
- â æ ¡éªå¤±è´¥è¿åæç¡®é误信æ¯
5. æ§è½çæ§åç¹
- â å ³é®ä¸å¡æµç¨å¿ é¡»åç¹
- â æ ¢æ¥è¯¢ï¼>1sï¼å¿ é¡»çæ§
- â ææ å½åéµå¾ª Prometheus è§è
- â é¿å é«åºæ°æ ç¾ï¼å¦ userIdï¼
6. 宿¶ä»»å¡å¼å
- â 使ç¨åå¸å¼éé¿å å¹¶åæ§è¡
- â 任塿§è¡æ¶é´ä¸è¦ä¸ä¸å¡é«å³°éå
- â é¿æ¶é´ä»»å¡è¦æè¿åº¦çæ§
- â ä»»å¡å¤±è´¥è¦æåè¦æºå¶
7. 审计æ¥å¿è®°å½
- â è®°å½ è° å¨ ä»ä¹æ¶é´ åäº ä»ä¹æä½
- â ææä¿¡æ¯è¦è±æ
- â 审计æ¥å¿ä¸å¯ä¿®æ¹
- â ä¿çè¶³å¤é¿çåå¨å¨æï¼è³å° 1 å¹´ï¼
ä¸å ¶ä» Skill çå ³ç³»
common-technical-practices (æ¬ Skill)
â ä¾èµ
backend-microservice-development # å端微æå¡å¼ååºç¡
design-patterns # 设计模å¼
â 被ä¾èµ
process-module-architecture # Process 模å使ç¨è¿äºææ¯
auth-module-architecture # Auth 模å使ç¨è¿äºææ¯
... # å
¶ä»ä¸å¡æ¨¡å
åç½®ç¥è¯:
backend-microservice-development– äºè§£ Spring Boot åºç¡design-patterns– äºè§£å¸¸è§è®¾è®¡æ¨¡å¼
ç¸å ³ Skill:
microservice-infrastructure– å¾®æå¡åºç¡è®¾æ½ï¼äºä»¶é©±å¨ãæå¡éä¿¡ï¼database-design– æ°æ®åºè®¾è®¡ï¼ä¸å®¡è®¡æ¥å¿åå¨ç¸å ³ï¼
è¯¦ç»ææ¡£å¯¼èª
| ææ¡£ | å 容 | è¡æ° | å ¸åé®é¢ |
|---|---|---|---|
| 1-aop-aspect.md | AOP åé¢ç¼ç¨ | 74 | å¦ä½å®ä¹åç¹ï¼Around éç¥å¦ä½ä½¿ç¨ï¼ |
| 2-distributed-lock.md | åå¸å¼é | 164 | å¦ä½é¿å æ»éï¼éè¶ æ¶å¦ä½å¤çï¼ |
| 3-retry-mechanism.md | éè¯æºå¶ | 75 | å¦ä½å®ç°ææ°éé¿ï¼å¹çæ§å¦ä½ä¿è¯ï¼ |
| 4-parameter-validation.md | åæ°æ ¡éª | 74 | å¦ä½èªå®ä¹æ ¡éªæ³¨è§£ï¼åµå¥å¯¹è±¡å¦ä½æ ¡éªï¼ |
| 5-performance-monitoring.md | æ§è½çæ§ | 77 | å¦ä½æ·»å èªå®ä¹ææ ï¼æ ¢æ¥è¯¢å¦ä½çæ§ï¼ |
| 6-scheduled-tasks.md | 宿¶ä»»å¡ | 65 | Cron 表达å¼å¦ä½åï¼åå¸å¼è°åº¦å¦ä½åï¼ |
| 7-audit-logging.md | 审计æ¥å¿ | 69 | åªäºæä½éè¦å®¡è®¡ï¼å®¡è®¡æ¥å¿å¦ä½åå¨ï¼ |
常è§é®é¢ FAQ
Q1: AOP åé¢ä¸çæï¼
A: æ£æ¥ï¼
- åé¢ç±»æ¯å¦å äº
@Aspectå@Component - åç¹è¡¨è¾¾å¼æ¯å¦æ£ç¡®
- ç®æ æ¹æ³æ¯å¦æ¯ Spring Bean ç public æ¹æ³
Q2: åå¸å¼éæ»éå¦ä½ææ¥ï¼
A:
- æ£æ¥éæ¯å¦è®¾ç½®äºè¶ æ¶æ¶é´
- 确认 finally åä¸éæ¾äºé
- ä½¿ç¨ Redis å½ä»¤æ¥çéç¶æï¼
GET lock_key
Q3: éè¯æºå¶å¯¼è´éªå´©ï¼
A:
- ä½¿ç¨ ææ°éé¿ èéåºå®å»¶è¿
- 设置 æå¤§éè¯æ¬¡æ°ï¼å»ºè®® 3-5 次ï¼
- æ·»å çæå¨ å¿«é失败
Q4: åæ°æ ¡éªå¤±è´¥è¿å 500ï¼
A:
- 确认æå
¨å±å¼å¸¸å¤ç卿è·
MethodArgumentNotValidException - è¿å 400 èé 500
- éè¯¯ä¿¡æ¯æ ¼å¼ç»ä¸
Q5: æ§è½çæ§ææ ä¸åï¼
A:
- 确认
@BkTimedæ³¨è§£çæ¹æ³æ¯ Spring Bean - æ£æ¥ Prometheus é ç½®
- é¿å å¨å¾ªç¯ä¸ä½¿ç¨ Watcher
Q6: 宿¶ä»»å¡é夿§è¡ï¼
A:
- æ·»å åå¸å¼é
- æ£æ¥æ¯å¦æå¤ä¸ªå®ä¾åæ¶è¿è¡
- 确认 Cron è¡¨è¾¾å¼æ£ç¡®
Q7: 审计æ¥å¿ä¸¢å¤±ï¼
A:
- æ£æ¥å®¡è®¡æ¥å¿å卿¯å¦æ£å¸¸
- ç¡®è®¤å¼æ¥åå ¥çéåæ²¡ææº¢åº
- æ·»å æ¥å¿æä¹ åæºå¶
æ»ç»
æ¬ Skill æ¶µçäº BK-CI å端å¼åä¸ 7 大éç¨ææ¯å®è·µï¼è¿äºææ¯æ¯æ¨ªè·¨å¤ä¸ªæ¨¡åçåºç¡è®¾æ½ï¼ææ¡å®ä»¬å¯¹äºå¼åé«è´¨éãé«å¯é çå¾®æå¡è³å ³éè¦ã
å¦ä¹ è·¯å¾:
- å
äºè§£ Spring Boot åºç¡ï¼
backend-microservice-developmentï¼ - æéæ·±å ¥å ·ä½ææ¯ï¼AOP/é/éè¯/…ï¼
- å¨å®é å¼åä¸åºç¨å¹¶æ»ç»ç»éª
æä½³å®è·µ:
- â æ¨ªåå ³æ³¨ç¹ä½¿ç¨ AOP
- â å¹¶åæ§å¶ä½¿ç¨åå¸å¼é
- â ä¸´æ¶æ§æ é使ç¨éè¯
- â æ¥å£å ¥åå¿ é¡»æ ¡éª
- â å ³é®æµç¨å¿ é¡»çæ§
- â 宿¶ä»»å¡é¿å å¹¶å
- â æææä½å¿ 须审计
å¼å§ä½¿ç¨è¿äºææ¯å®è·µï¼è®©ä½ çä»£ç æ´å å¥å£®åå¯ç»´æ¤ï¼ð