[TOC]
# 一、范式
## 1.依賴范式: 每個服務只依賴于其所需的其他服務,不依賴于整個應用。
## 2.自治范式: 每個服務盡量自治,減少與其他服務的交互。
## 3.規范范式: 服務之間使用標準化的接口和協議進行通信。
## 4.外延閉包范式: 一個服務提供的所有需要的信息盡量包含在內,減少其他服務的交互。
# 二、設計原則
### 1.依賴的<span style='color:red;background:#ff0;'>松耦合</span>: 每個服務只依賴于它需要的,不依賴于整個應用。
### 2.<span style='color:red;background:#ff0;'>自治性</span>的提高: 每個服務盡量獨立運行,不依賴于其他服務。
### 3.接口的<span style='color:red;background:#0f0;'>標準化</span>: 使用標準化的接口進行服務間交互。
### 4.降低分布式的復雜性: <span style='color:blue;background:#ff0;'>減少服務之間的交互</span>,簡化系統。
# 三、做設計
### 核心架構:
> #### 1.服務<span style='font-size:24px;color:#0a6;background:#ff0;'>粒度</span>細: 每個服務只做一件事情,同時保持獨立性。
> #### 2.服務易于<span style='font-size:24px;color:#0a6;background:#ff0;'>升級</span>: 每個服務獨立部署和運維,可以獨立升級。
> #### 3.服務使用輕量<span style='font-size:24px;color:#0a6;background:#ff0;'>通信</span>: 服務間通信使用輕量級的通信機制,如 RESTful API。
> #### 4.服務圍繞業務<span style='font-size:24px;color:#0a6;background:#ff0;'>功能</span>: 每個服務實現一個 business capability,符合單一原則。
> #### 5.服務使用不同<span style='font-size:24px;color:#0a6;background:#ff0;'>技術棧</span>: 不同的服務可以使用不同的技術架構和數據庫。
### 1.將數據庫<span style='color:#0a6;background:#ff0;'>分庫分表</span>給每個微服務,讓每個服務自己持有各自需要的數據。
### 2.不同微服務間數據的映射和同步使用<span style='color:#fff;background:#00f;'>消息隊列</span>。
### 3.避免一個服務需要其他多個服務提供的信息,通過<span style='color:#0a6;background:#ff0;'>本地緩存</span>來降低依賴。
### 4.避免一個服務的數據模型需要依賴其他服務的變更而變更。<span style='color:#0a6;background:#ff0;'>減少服務間影響</span>。
### 5.輕量通信:只在必要時才通過`RPC`或者`RESTful API`與其他服務交互。<span style='color:#0a6;background:#ff0;'>必要時再服務間交互</span>。
### 6.使用<span style='color:#0a6;background:#ff0;'>統一的消息格式和標準化的接口</span>定義來實現服務間交互。
### 7.服務間盡量<span style='color:#0a6;background:#ff0;'>只用拷貝數據,不共享數據</span>,降低了內在的依賴性。
> 以上這些設計技巧可以很好地符合微服務設計的數據模型的4種范式,有助于構建出松耦合的微服務系統。
- 系統設計
- 需求分析
- 概要設計
- 詳細設計
- 邏輯模型設計
- 物理模型設計
- 產品設計
- 數據驅動產品設計
- 首頁
- 邏輯理解
- 微服務架構的關系數據庫優化
- Java基礎架構
- 編程范式
- 面向對象編程【模擬現實】
- 泛型編程【參數化】
- 函數式編程
- 響應式編程【異步流】
- 并發編程【多線程】
- 面向切面編程【代碼復用解耦】
- 聲明式編程【注解和配置】
- 函數響應式編程
- 語法基礎
- 包、接口、類、對象和切面案例代碼
- Springboot按以下步驟面向切面設計程序
- 關鍵詞
- 內部類、匿名類
- 數組、字符串、I/O
- 常用API
- 并發包
- XML
- Maven 包管理
- Pom.xml
- 技術框架
- SpringBoot
- 項目文件目錄
- Vue
- Vue項目文件目錄
- 遠程組件
- 敏捷開發前端應用
- Pinia Store
- Vite
- Composition API
- uniapp
- 本地方法JNI
- 腳本機制
- 編譯器API
- 注釋
- 源碼級注釋
- Javadoc
- 安全
- Swing和圖形化編程
- 國際化
- 精實或精益
- 精實軟件數據庫設計
- 精實的原理與方法
- 項目
- 零售軟件
- 擴展
- 1001_docker 示例
- 1002_Docker 常用命令
- 1003_微服務
- 1004_微服務數據模型范式
- 1005_數據模型
- 1006_springCloud
- AI 流程圖生成
- Wordpress_6
- Woocommerce_7
- WooCommerce常用的API和幫助函數
- WooCommerce的鉤子和過濾器
- REST API
- 數據庫API
- 模板系統
- 數據模型
- 1.Woo主題開發流程
- Filter
- Hook
- 可視編輯區域的函數工具
- 渲染字段函數
- 類庫和框架
- TDD 通過測試來驅動開發
- 編程范式對WordPress開發
- WordPress和WooCommerce的核心代碼類庫組成
- 數據庫修改
- 1.WP主題開發流程與時間規劃
- moho
- Note 1
- 基礎命令