[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
- 基础命令