iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
AI & Data

ML/DL實作-「營養抗老」專題製作系列 第 8

Day 8_ML/DL實作-「營養抗老」專題 | 穩定性與可觀測性(Cache/指標/文件/打包)

  • 分享至 

  • xImage
  •  

🎯 目標

/api/recommendations 加入快取與速率保護,降低 DB 壓力

內建健康檢查/應用指標(metrics & tracing 起手式)

自動化文件(OpenAPI)與 Postman/HTTP 檔

可重現的啟動:Docker Compose(App + MySQL)與環境參數

🛠 工作項目

快取(Caffeine)

依 effectId 緩存 3–5 分鐘(可調):@Cacheable(cacheNames="recos", key="#effectId")

失效策略:寫入 evidence 後(未來 ETL)用事件或管理端點清除

基本限流(rate limit)

簡易版:每 IP 每分鐘 N 次(Servlet filter 或 Bucket4j);先保守設 N=60

健康檢查與監控

加入 spring-boot-starter-actuator

開 health, info, metrics, httpexchanges 端點

指標關注:http.server.requests, jdbc.connections.active, 自訂 recommendations.calctime

OpenAPI 文件

加 springdoc-openapi-starter-webmvc-ui

自動產出 /v3/api-docs、Swagger UI /swagger-ui.html

替 /api/recommendations 補註解(參數說明/範例回應)

Postman / .http 測試檔

提供 postman_collection.json 或 requests.http(VS Code REST Client)

設定管理

application.yml → application-local.yml(mac 開發),application-prod.yml(未來)

把 DB、port、cache TTL 全改為環境參數(支援 SPRING_DATASOURCE_*)

Docker 化(在 M4 Air 可用)

Dockerfile(基於 eclipse-temurin:21-jre)

docker-compose.yml:app + mysql:8.4(掛載初始化 SQL)

Makefile:make up / down / logs

📦 交付物

pom.xml:加入

spring-boot-starter-actuator

springdoc-openapi-starter-webmvc-ui

com.github.ben-manes.caffeine:caffeine

config/:application.yml, application-local.yml

controller/RecommendationController.java:保留 Day7 參數驗證

service/RecommendationServiceImpl.java:加 @Cacheable、記錄計時到 MeterRegistry

config/CacheConfig.java(Caffeine Bean)

Dockerfile, docker-compose.yml, Makefile

docs/postman_collection.json 或 requests.http

README_DAY8.md:啟動、測試、清 cache、看 metrics 教學

✅ 驗收清單

curl http://localhost:8081/actuator/health → UP

curl "http://localhost:8081/api/recommendations?effectId=E001" → 首次 > 後續更快(快取命中)

curl http://localhost:8081/actuator/metrics/http.server.requests → 有路徑指標

打開 http://localhost:8081/swagger-ui.html → 能瀏覽與測試 API

docker compose up -d → App + DB 一起起;docker compose logs -f app 可觀察啟動

超過速率時回 429(若啟用限流)

上一篇
Day 7_ML/DL實作-「營養抗老」專題-強化 /api/recommendations
下一篇
Day 9_DrugBank 交互查詢 MVP(只讀、可查、可擴充)
系列文
ML/DL實作-「營養抗老」專題製作13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言