簡單的部落格系統,可以進行張貼文章以及撰寫評論回復留言等基本功能,如果是管理員身分的話可額外使用使用者管理、群組管理、權限管理等功能設置系統
可以在使用者資料上查看當前張貼文章數、評論數、按讚數等訊息,系統也能進行全文搜尋 利用文章內文 標題 作者等進行查詢
當使用者收藏其他作者的文章時 若該作者更改其文章內容或發佈新文章時,可從注冊mail中收到通知 利用kafka 線性序傳輸的特性 可保證資料不丟失 且
功能還在持續擴充中
- 作者追蹤
- 個人收藏
- 個人文章
- 個人儀錶板
- 管理員儀錶板
- 分析報告
- 評論審核
- 富文本編輯器
- 使用springboot aop 用動態代理 對指定功能進行增強,再透過kafka傳輸寄送郵件訊息,透過kafka線性序列傳輸特點,可提高傳輸速度以及保證資料不丟失,確保郵件傳遞效率
- 因應jwt無狀態的情況,為避免被有心人士擷取登入,設置黑名單並存放置redis中進行校驗
- 避免登入時訪問資料庫次數過多,使用緩存quava-cache存儲使用者資訊,減少資料庫訪問次數
- 使用redis 儲存驗證碼 refresh-token
- 使用redisson鎖 透過aop 進行 方法判斷 設置delay時間 避免重複提交表單內容
- 使用redis緩存 紀錄收藏數 按讚數等訊息 並設置過期時間避免數據更新 且取消緩存空值 避免緩存穿透問題
- aop 紀錄 請求地址 以及花費時間等
- 使用ApplicationEvent 監聽 Authetication 驗證狀況,如登入驗證成功,則記錄當下登入時間以及其他訊息,並保存置db中 並在登出時寫入登出時間
- 使用Jsoup 過濾前端文章內文,避免sql注入等問題
- 使用OpenApi生成文件以及後端測試接口
- kafka 使用手動提交ack確保商業邏輯處理正確後才確認消費該筆消息成功,設置retry機制保證消息可正確消費成功,添加死信對列若消息消費失敗紀錄致database中顯示於前端提示
使用springboot + vue 的前後端分離項目,使用spring-security進行功能的權限驗證管理、因項目是採取前後分離因此設定可採不同源訪問
前端採用vite搭建vue3項目 搭配vuetify進行前端頁面撰寫、使用pinia、router 進行路由管理以及使用者資料全局狀態管理
後端使用springboot搭建spring項目、使用restful建置controller功能項,並且統一管理錯誤處理、回應物件處理等增加統一性
搭配docker、dockerfile、docker-compos 進行容器化處理 以及maven-plugin 進行docker-build push等處理 上傳項目至docker-hub
前端項目網址: https://github.com/yaiiow159/blog-frontend
目前正在進行: 撰寫前端後端的CI/CD流程
前端使用axios來傳遞前端資料至後端,後端使用dto接收資料,並使用mapstructer來轉換dto至po物件並在dao層進行crud操作
系統可以針對容器化配置以及本地化配置有分別使用不同配k
前端使用技術: vue3 + pinia(全局狀態管理) + sass + router(路由管理) + axios(前後端資料傳遞)
後端使用技術: springboot3 (spring配置框架) + spring-security(權限控制) + spring-data-jpa(dao層操作) + spring-scheduled(定時任務) + springboot-mail(郵件發送)
消息隊列: kafka + zookeeper
資料庫:mysql
非關係型資料庫:redis
文檔生成以及測試: openApi3
容器化: docker、docker-compose
容器化管理平台: portainer
雲服務技術: GCP(google-storage、computer-engine)
因應項目是前後端分離項目,導入openApi 可以針對後端Api進行測試 驗證回傳結果 測試前須先使用jwt token開放權限
http://localhost:9090/swagger-ui/index.html
http://localhost:9090/v3/api-docs
項目有針對容器化環境進行項目配置,可使用dockerFile搭配docker-compose 集成 搭建項目所需環境,並搭配portainer檢控容器狀況 此構思是因應快速部屬環境以及部屬至雲服務