[TOC]
### 一,簡單的Spring Cloud的Docker Compose 示例
用于部署基于Docker容器的Spring Cloud微服務應用。
``````
version: '3'
services:
config-server:
image: springcloud/configserver
ports:
- "8888:8888"
environment:
- SPRING_PROFILES_ACTIVE=native
volumes:
- ./config:/config
eureka-server:
image: springcloud/eurekaserver
ports:
- "8761:8761"
zuul-server:
image: springcloud/zuulserver
ports:
- "8080:8080"
links:
- eureka-server
product-service:
image: springcloud/productservice
ports:
- "9001:9001"
links:
- eureka-server
environment:
- SPRING_PROFILES_ACTIVE=dev
order-service:
image: springcloud/orderservice
ports:
- "9002:9002"
links:
- eureka-server
environment:
- SPRING_PROFILES_ACTIVE=dev
``````
#### 1. 服務分解產品、訂單的原因
1. 獨立變化:不同服務應該獨立變化,不相關的功能應分開。產品和訂單是有明顯分界的兩個功能,改變其中一個不影響另一個。
2. 單一職責:每個服務只負責一個職責。產品服務管理產品數據,訂單服務管理訂單功能。
3. 服務粒度:服務粒度不能過細也不能過粗。適當的服務粒度會更易管理和擴展。
4. 服務間依賴:不同服務間依賴應盡量減少。產品和訂單間存在依賴,但通過接口分離可以降低依賴。
5. 團隊勢力劃分:可以按照服務將團隊劃分。一個團隊維護一個服務。
因此,基于上述考慮,產品與訂單是比較合理的兩個服務劃分。
實際項目中,還可能存在其他服務,比如庫存服務、用戶服務等。服務分解應根據實際業務特點確定最合理的劃分方案。
### 二,主要流程
1. 搭建注冊中心:通常使用<span style='color:blue;background:#ff0;'>`Eureka`</span>作為注冊中心。Eureka提供服務注冊和發現的功能。
2. 搭建配置中心:使用<span style='color:blue;background:#ff0;'>Spring Cloud `Config`</span>來實現外部化配置。配置中心負責管理和提供各個服務的配置信息。
3. 搭建服務提供者:實現相關功能并注冊到Eureka。
4. 搭建服務消費者:從Eureka獲取服務提供者的服務信息,并使用<span style='color:blue;background:#ff0;'>`RestTemplate`</span>或<span style='color:blue;background:#ff0;'>Ribbon</span>調用服務提供者的接口。
5. 使用負載均衡組件:比如<span style='color:blue;background:#ff0;'>`Ribbon`</span>來實現服務的負載均衡。
6. 搭建服務網關:使用<span style='color:blue;background:#ff0;'>Spring Cloud `Gateway`</span>作為API網關,提供統一訪問接口。
7. 使用服務調用鏈路追蹤:通過<span style='color:blue;background:#ff0;'>Spring Cloud `Sleuth` + `Zipkin`</span>來實現分布式系統中的調用鏈路追蹤。
8. 使用熔斷降級:通過<span style='color:blue;background:#ff0;'>`Hystrix`</span>來實現服務的容錯能力,包括服務降級和服務熔斷。
9. 使用消息總線:通過<span style='color:blue;background:#ff0;'>Spring Cloud` Bus`</span>來實現配置的動態刷新。
10. 集成監控與警報:使用<span style='color:blue;background:#ff0;'>Spring Boot `Admin`</span>來實現集中監控,通過郵件或短信發送警報。
- 系統設計
- 需求分析
- 概要設計
- 詳細設計
- 邏輯模型設計
- 物理模型設計
- 產品設計
- 數據驅動產品設計
- 首頁
- 邏輯理解
- 微服務架構的關系數據庫優化
- 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
- 基礎命令