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