💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[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种范式,有助于构建出松耦合的微服务系统。