[TOC]
## 一、分布式鎖
>[warning] 不配置 `zlt.lock.lockerType` 參數,則默認為 `REDIS`
### 1.1. 編碼方式
```java
/**
* 代替jdk的synchronized和Lock
*/
@Autowired
private DistributedLock locker;
?
public void test() {
try?(
????????ZLock?lock?=?locker.tryLock("lockKey",?10,?TimeUnit.SECONDS);
????????)?{
? ? ? ?if (lock != null) {
? ? ? ? ? ?// 此處是業務代碼
? ? ? } else {
? ? ? ? ? ?throw new LockException("鎖等待超時");
? ? ? }
? }
}
```
### 1.2. 注解方式
```java
/**
* 等同于 locker.lock("test")
*/
@Lock(key = "test")
public void test() {}
/**
* 等同于 locker.tryLock("test", 10, TimeUnit.SECONDS)
*/
@Lock(key = "test", waitTime = 10)
public void test2() {}
```
>[info] 注解加在類上則該類所有方法都會自動加鎖
### 1.3. Redis鎖
依賴:
```xml
<dependency>
<groupId>com.zlt</groupId>
<artifactId>zlt-redis-spring-boot-starter</artifactId>
</dependency>
```
配置:
```yml
zlt:
lock:
lockerType: REDIS
```
### 1.4. Zookeeper鎖
依賴:
```xml
<dependency>
<groupId>com.zlt</groupId>
<artifactId>zlt-zookeeper-spring-boot-starter</artifactId>
</dependency>
```
配置:
```yml
zlt:
lock:
lockerType: ZK
```
## 二、分布式id生成器
```java
//生成long型id
long id = IdGenerator.getId();
//生成String型id
String id = IdGenerator.getIdStr();
```
## 三、分布式事務
### 3.1. 同步強一致性(不推薦)
基于`tx-lcn`應用例子可看`zlt-demo\txlcn-demo`工程
### 3.2. 同步最終一致性
基于`seata`應用例子可看`zlt-demo\seata-demo`工程
### 3.3. 異步最終一致性
基于`MQ`應用例子可看`zlt-demo\rocketmq-demo\rocketmq-transactional`工程
## 四、分庫分表sharding-sphere
應用例子可看`zlt-demo\sharding-jdbc-demo`工程
## 五、消息隊列
### 5.1. 集成Spring-Cloud-Stream+RocketMQ
應用例子可看`zlt-demo\rocketmq-demo\rocketmq-produce`和`zlt-demo\rocketmq-demo\rocketmq-consume`工程
## 六、搜索中心
### 6.1. 啟動好搜索中心服務端
參考 [擴展模塊](http://www.hmoore.net/zlt2000/microservices-platform/919420) 中的`搜索中心`章節
### 6.2. 依賴`search-client`工程
需要搜索的服務需要依賴該工程
### 6.3. 添加@EnableSearchClient注解
需要在啟動類或者配置類中添加該注解,開啟搜索中心功能
### 6.4. 使用通用搜索
注入`com.central.search.client.service.IQueryService`
**可參考SysUserController類中用戶搜索的寫法**
```java
@GetMapping("/users/search")
public PageResult<JSONObject> search(SearchDto searchDto) {
searchDto.setIsHighlighter(true);
searchDto.setSortCol("createTime");
return queryService.strQuery("sys_user", searchDto, SEARCH_LOGIC_DEL_DTO);
}
```
## 七、網關zuul動態路由
開啟功能需要,修改`zuul`的配置文件
```properties
zlt.gateway.dynamicRoute.enabled=true
```
詳情查看:[Spring Cloud Zuul的動態路由怎樣做?集成Nacos實現很簡單](https://mp.weixin.qq.com/s?__biz=MjM5OTI2NDMwMg==&mid=2247483694&idx=1&sn=4bd9c5865f18f25dd3f38e1f0a9e8701&chksm=a73f686f9048e17903787b98dda5d5c74bb165c27b44a44887e23b6f534d3a54c3b6a13f1d3b&token=1502955171&lang=zh_CN#rd)
## 八、網關sc-gateway動態路由
開啟功能需要,修改`sc-gateway`的配置文件
```properties
zlt.gateway.dynamicRoute.enabled=true
```
詳情查看:[Spring Cloud Gateway的動態路由怎樣做?集成Nacos實現很簡單](https://mp.weixin.qq.com/s?__biz=MjM5OTI2NDMwMg==&mid=2247483769&idx=1&sn=2b96bf89ceada2af9fe0da9a3d3b05e1&chksm=a73f68389048e12ea2e67117de564db7e775fa919f7ba387d52171d903929aca2490e2b76ddb&token=1628962546&lang=zh_CN#rd)
## 九、如何解決開發環境的服務沖突和實例亂竄
開啟功能需要每個服務都添加以下配置,可以直接修改`zlt-config`下的`application-dev.properties`配置文件就可以全局生效
```properties
zlt.ribbon.isolation.enabled=true
```
詳情查看:
* [Spring Cloud開發人員如何解決服務沖突和實例亂竄?](https://mp.weixin.qq.com/s?__biz=MjM5OTI2NDMwMg==&mid=2247483710&idx=1&sn=1a75206924bb4f94679318da2a61db1a&chksm=a73f687f9048e1693ad03bdf23cf7fbe1f6f1d4d5c0620812e6e5ac64d924b36ce554fbe72de&token=15037532&lang=zh_CN#rd)
* [Spring Cloud開發人員如何解決服務沖突和實例亂竄?(IP實現方案)](https://mp.weixin.qq.com/s?__biz=MjM5OTI2NDMwMg==&mid=2247483717&idx=1&sn=9284d0f63a7f63d959d5fcfcd5fcc095&chksm=a73f68049048e1125482ec0cfff1066cad9d62b6f92aed2587957d39098a113df4c2a603a1e3&token=1758001159&lang=zh_CN#rd)
- 項目介紹
- 項目聲明
- 項目簡介
- 核心功能
- 運行環境
- 項目更新日志
- 文檔更新日志
- 分支說明
- F&Q
- 部署教程
- 環境準備
- 必要啟動模塊
- 擴展模塊(可選)
- 打包工程
- 開發說明
- 登錄認證
- 基礎功能
- 分布式功能
- Spring Boot自定義配置自動提示
- 如何新增一個服務
- 自定義配置參數清單
- 公共配置
- 授權認證中心
- 日志中心
- 搜索中心
- 文件中心
- 核心接口
- 密碼模式授權
- 授權碼模式授權
- 簡化模式授權
- 客戶端模式授權
- 手動刷新token
- 用戶名+密碼+驗證碼授權
- openId授權
- 手機號+密碼授權
- 賬號登出接口
- 檢查token有效性
- OIDC模式授權
- 獲取JWT公鑰
- 系統設計
- 企業級微服務總體分層架構圖
- 企業級服務認證架構設計
- 有網絡隔離
- 無網絡隔離V1
- 無網絡隔離V2
- url級權限控制
- 多用戶類型擴展
- WebSocket接口鑒權
- 授權參數加密
- 兼容舊的密碼加密方式
- 數據權限
- 企業級日志解決方案設計
- 企業級監控架構設計(Metrics)
- 框架技術選型
- 架構設計方法論思維導圖
- 系統冪等性設計與實踐
- 分布式ID生成器解決方案
- 實時搜索系統設計
- 企業級功能
- alibaba/nacos注冊中心
- 介紹與相關資料
- 設計模型
- 部署
- 配置中心
- 服務注冊發現
- 生產部署方案
- 通過Nginx來實現環境隔離
- 統一日志中心詳解
- 介紹與相關資料
- docker安裝部署
- 安裝包部署(6.x版本)
- elasticsearch 6.x
- logstash 6.x
- kibana 6.x
- 安裝包部署(7.x版本+xpack)
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- Filebeat安裝部署
- ES索引管理
- 定時任務定期刪除
- Index Lifecycle Management
- 沒數據問題排查思路
- Logstash
- Grok語法調試
- Grok常用表達式
- 配置語法中的條件判斷
- ELK自身各組件監控
- ELK多租戶方案
- 慢查詢sql詳解
- 審計日志-elk詳解
- alibaba/sentinel限流熔斷
- 介紹與相關資料
- 使用示范
- 動態規則擴展
- 生產應用
- 網關流控
- JWT的RSA非對稱密鑰生成
- Docker
- 安裝(外網)
- 安裝(內網)
- 構建項目鏡像(免Dockerfile文件)
- APM監控-SkyWalking
- 介紹與相關資料
- APM系統簡單對比(zipkin,pinpoint和skywalking)
- server安裝部署
- agent安裝
- 日志信息清理
- Metrics監控
- 介紹與相關資料
- 安裝部署
- 各組件監控
- Grafana儀表盤模板下載
- Grafana告警配置
- 分布式事務
- 基礎概念和理論
- TX-LCN(同步場景)
- SEATA(同步場景)(v1.3)
- RocketMQ(異步場景)
- MySQL
- 主從復制
- 主從切換
- 主主復制
- 高可用方案
- Redis
- 單機
- 主從復制
- 主從復制+哨兵
- cluster集群
- 持久化方案
- 數據庫之分庫分表
- 分庫分表思路
- 分庫分表部署上線方式
- ShardingSphere配置
- 消息隊列
- 消息隊列對比參照表
- Spring-Cloud-Stream消息框架
- RocketMQ
- 介紹與相關資料
- 安裝部署
- 常見異常處理
- RocketMQ事務消息原理
- Kafka
- 介紹與相關資料
- 應用場景
- 安裝部署
- 集群部署
- Kafka Connect
- 分布式文件系統
- FastDFS
- 介紹與相關資料
- 特性詳解
- 文件系統的對比
- 安裝部署
- MinIO
- Canal數據庫日志解析消費
- 介紹與相關資料
- 安裝部署
- 高可用架構部署
- 實時同步數據到ElasticSearch
- 全量同步數據到ElasticSearch
- 多租戶(應用隔離)
- 技術介紹與隔離方案
- 本項目實現詳解
- 分布式日志鏈路跟蹤
- 單點登錄
- 單點登錄詳解
- 前后端分離的單點登錄
- OIDC協議單點登錄
- 單點登出詳解
- Zookeeper集群搭建
- Spring
- 升級 Spring Boot 2.5 與 Spring Cloud 2020 注意要點
- 企業開發環境搭建
- 研發項目管理軟件(禪道)
- Maven私服
- 安裝部署
- 使用介紹
- Docker私有鏡像倉庫
- 安裝部署
- 使用介紹
- 容器管理平臺
- 介紹與相關資料
- 安裝部署
- 使用介紹
- 持續集成部署CICD
- 持續交付的含義
- 影響持續交付的因素
- 代碼分支策略選擇
- CICD流程設計
- 代碼倉庫Gitlab
- 安裝部署
- 免密訪問
- webhook配置
- 自動化部署Jenkins
- 安裝部署
- ssh免密登錄
- 流水線簡單例子
- 流水線參數化構建例子
- 靜態代碼測試SonarQube
- 應用性能
- 壓力測試工具
- 介紹和安裝
- 使用介紹
- JVM
- JVM性能調優
- 常見JVM內存錯誤及解決方案
- JVM 分析工具詳解
- Spring Cloud性能調優
- Elasticsearch性能優化
- 我的GitChat
- Spring Boot集成Elasticsearch7.x詳解
- 微服務統一日志方案ELK7.x落地實戰
- Redisson 分布式鎖詳解與可視化監控方案
- 交流反饋
- 云服務器購買優惠