## :-: **項目亮點功能介紹**
1. **服務注冊&發現與調用:**
基于Nacos來實現的服務注冊與發現,使用使用Feign來實現服務互調, 可以做到使用HTTP請求遠程調用時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。
2. **負載均衡:**
將服務保留的rest進行代理和網關控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進行正常的網關管控和負載均衡。其中擴展和借鑒國外項目的擴展基于JWT的Zuul限流插件,方面進行限流。
3. **服務鑒權:**
通過JWT的方式來加強服務之間調度的權限驗證,保證內部服務的安全性。
4. **熔斷機制:**
因為采取了服務的分布,為了避免服務之間的調用“雪崩”,采用了Hystrix的作為熔斷器,避免了服務之間的“雪崩”。
5. **監控:**
利用Spring Boot Admin 來監控各個獨立Service的運行狀態;利用turbine來實時查看接口的運行狀態和調用頻率;通過Zipkin來查看各個服務之間的調用鏈等。
6. **鏈路調用監控:**
同時實現了Zipkin和SkyWalking作為本項目的全鏈路性能監控, 從整體維度到局部維度展示各項指標,將跨應用的所有調用鏈性能信息集中展現,可方便度量整體和局部性能,并且方便找到故障產生的源頭,生產上可極大縮短故障排除時間。
7. **數據權限**
利用基于Mybatis的DataScopeInnerInterceptor攔截器實現了數據權限功能
8. **SaaS(多租戶)的無感解決方案**
本項目支持3種常見的租戶解決方案和無租戶方案,同一套代碼,修改一個配置即可實現租戶模式只有切換。
9. **緩存抽象**
采用CacheOps操作緩存,內置2種實現:Caffeine、 Redis,可以讓項目應急時在無Redis環境正常運行
10. **優雅的Bean轉換**
```
采用Dozer、BeanUtil等組件來對 DTO、DO、PO等對象的優化轉換
```
1. **前后端統一表單驗證**
嚴謹的表單驗證通常需要 前端+后端同時驗證, 但傳統的項目,均只能前后端各做一次檢驗, 后期規則變更,又得前后端同時修改。 故在\`hibernate-validator\`的基礎上封裝了\`lamp-validator-starter\`起步依賴,提供一個通用接口,可以獲取需要校驗表單的規則,然后前端使用后端返回的規則, 以后若規則改變,只需要后端修改即可。
1. **防跨站腳本攻擊(XSS)**
```
* 通過過濾器對所有請求中的 表單參數 進行過濾
* 通過Json反序列化器實現對所有 application/json 類型的參數 進行過濾
```
1. **當前登錄用戶信息注入器**
```
* 通過注解實現用戶身份注入
```
1. **在線API**
由于原生swagger-ui某些功能支持不夠友好,故采用了國內開源的\`knife4j\`,并制作了stater,方便springboot用戶使用。
1. **代碼生成器**
基于Mybatis-plus-generator自定義了一套代碼生成器, 通過配置數據庫字段的注釋,自動生成枚舉類、數據字典注解、SaveDTO、UpdateDTO、表單驗證規則注解、Swagger注解等。
1. **定時任務調度器**:
```
基于xxl-job進行了功能增強。(如:指定時間發送任務、執行器和調度器合并項目、多數據源)
```
1. **大文件/斷點/分片續傳**
前端采用webupload.js、后端采用NIO實現了大文件斷點分片續傳,啟動Eureka、Zuul、File服務后,直接打開docs/chunkUploadDemo/demo.html即可進行測試。 經測試,本地限制堆棧最大內存128M啟動File服務,5分鐘內能成功上傳4.6G+的大文件,正式服耗時則會受到用戶帶寬和服務器帶寬的影響,時間比較長。
1. **分布式事務**
集成了阿里的分布式事務中間件:seata,以 \*\*高效\*\* 并且對業務 \*\*0侵入\*\* 的方式,解決 微服務 場景下面臨的分布式事務問題。
1. **跨表、跨庫、跨服務的關聯數據自動注入器**
用于解決跨表、跨庫、跨服務分頁數據的屬性或單個對象的屬性 回顯關聯數據之痛, 支持對靜態數據屬性(數據字典)、動態主鍵數據進行自動注入。
1. **灰度發布**
為了解決頻繁的服務更新上線,版本回退,快速迭代,公司內部協同開發,本項目采用修改ribbon的負載均衡策略來實現來灰度發布。
- 項目介紹
- 項目聲明
- 項目簡介
- 架構設計
- 項目亮點功能介紹
- 技術棧介紹
- 核心功能
- 運行環境
- 項目更新日志
- 文檔更新日志
- F&Q
- 部署教程
- 環境準備
- JDK安裝
- JDK1.8,17共存
- maven
- 分布式緩存Redis
- 單機版
- 集群
- 注冊&配置中心alibaba/nacos
- 介紹
- Nacos安裝
- Nacos配置中心
- Nacos注冊發現
- Nacos生產部署方案
- 服務監控-BootAdmin
- 基本介紹
- 如何使用
- 整合Admin-Ui
- 客戶端配置
- 鏈路追蹤
- 基本介紹
- SkyWalking-1
- Skywalking-1
- 消息隊列
- Kafka
- docker安裝kafka
- Linux集群
- Maven私服
- nexus安裝部署
- nexus使用介紹
- 全文搜索elasticsearch
- windows集群搭建
- docker安裝es
- ElasticHD
- linux集群部署
- 統一日志解決方案
- 日志解決方案設計
- 介紹與相關資料
- ELK安裝部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服務監控-Prometheus
- Prometheus安裝配置
- Prometheus介紹
- grafana
- 持續集成部署CICD
- 自動化部署Jenkins
- 安裝部署win
- 打包發布遠程執行
- 安裝部署linux
- jenkins+gitlab+docker容器化工程自動化部署
- Git
- CICD說明
- 阿里云效
- CentOS_MYSQL安裝
- docker
- 安裝
- Docker安裝Nginx
- Docker部署啟動springboot
- dockerCompose
- harbor
- Docker私有鏡像倉庫
- Portainer
- Docker遠程連接設置
- 打包工程
- 必要啟動模塊
- 核心模塊
- 登錄認證
- 緩存功能
- 日志模塊
- 分布式鎖
- 消息隊列
- 異常處理
- 系統接口
- 參數驗證
- es檢索
- 數據導出
- 系統設計
- 系統總體架構
- 擴展模塊(可選)
- 限流熔斷alibaba/sentinel
- 使用Sentinel實現gateway網關及服務接口限流
- Sentinel使用Nacos存儲規則及同步
- 服務調用Feign
- Feign基本介紹
- 如何使用
- 負載均衡
- 請求超時
- 請求攔截器
- 分布式任務調度
- XXL-JOB
- 分布式事務
- TX-LCN
- Seata
- Seata原理解析
- 數據庫分庫分表
- swagger文檔
- 分布式ID生成器解決方案
- 服務網關CloudGateway
- 基本介紹
- 使用網關
- 路由配置
- 全局過濾器
- 服務認證授權架構設計
- 認證服務流程
- 授權服務流程
- 系統冪等性設計與實踐
- 分布式日志鏈路跟蹤
- 實時搜索系統設計
- 應用性能
- 壓力測試工具
- Apache JMeter介紹和安裝
- ApacheJMeter使用
- JVM
- JVM性能調優
- 常見JVM內存錯誤及解決方案
- JVM 分析工具詳解
- Spring Cloud性能調優
- Linux運維
- Linux 常用命令
- Linux開啟端口