美文网首页
学习笔记:微服务设计的IDEALS原则

学习笔记:微服务设计的IDEALS原则

作者: 双鱼子曰1987 | 来源:发表于2021-12-02 16:33 被阅读0次

一、'IDEALS原则'概述

  • 接口分离(Interface segregation)
  • 可部署性(Deployability (is on you))
  • 事件驱动(Event-driven)
  • 可用性 胜于 一致性(Availability over consistency)
  • 松耦合(Loose coupling)
  • 单一职责(Single responsibility)

二、细说'IDEALS原则'

1、接口隔离(物以类聚)
  • 微服务接口隔离的目标:是确保每种类型的前端都能对接最匹配其需求的服务契约。
    根据不同客户端、不同的应用场景要求的数据特点,提供不同的服务。例如,Native提供短JSON数据;Web提供完整JSON;IM数据需要系统XML数据格式等等。
  • 解决方案:API 网关 和 BBF模式
    最流行的解决方案就是使用 API 网关,可以实现消息格式转换、消息结构转换、协议桥接、消息路由等功能。
    另一种流行的替代方案,即面向前端的后端(BFF)模式,示意图如下。


    image.png
2、可部署性
  • 微服务需要时刻关注,软件是否能被正确打包并部署特定环境中。

  • 关注于自动化部署:
    要实现自动化,我们需要正确选择工具与技术,这也正是自微服务架构出来以来变化最大的领域所在。

3、事件驱动(异步不等待)

微服务带来的问题就是服务器小而多,众多微服务器间的如何进行通信?同步还是异步?这些关键设计直接影响了微服务的高效和成功。
其中,事件驱动架构的一大核心优势,在于显著提高了系统的可扩展性与吞吐量。而这一优势之所以能够实现,是因为消息发送方不会因阻塞而等待响应,而且多个接收方可以通过发布 - 订阅的方式并行使用同一消息 / 事件。

4、可用性 胜于 一致性(能不能用才是关键)
  • CAP 定理:本质上提供了两种选择:要可用性 或者 要一致性。
    CAP 定理指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

    用户的实际体验和诉求中,可用性 高于 一致性。
    正如 Pat Helland 所指出,在马上得到答案和得到正确答案之间,大多数人想要的其实是马上得到答案。

  • 在微服务当中,实现可用性的主要策略在于数据复制。

5、松耦合(减少交互,保持简单)

在软件工程中,耦合是指两个软件元素之间的相互依赖程度。对基于服务的系统而言,传入耦合主要涉及服务用户如何与服务进行交互。

6、单一职责(单一才能专心,专心才能高效)
  • 扩展到微服务架构内的服务内聚性层面。
    最初的单一职责原则(SRP)旨在强调 OO 类应具有内聚功能。
    为了保持单一性,微服务架构规定各个部署单元应该只包含一项服务或者几项内聚服务。

参考

微服务设计的原则:IDEALS,而不是SOLID

相关文章

  • 学习笔记:微服务设计的IDEALS原则

    一、'IDEALS原则'概述 接口分离(Interface segregation) 可部署性(Deployabi...

  • 设计模式学习笔记,简述概要

    设计模式 学习简述 设计模式简要学习笔记 原则 口诀:“单开迪里接依” 单一职责 开闭原则(扩展开放、修改封闭) ...

  • Memento 备忘录模式

    设计原则学习笔记 设计模式学习笔记 作用 使对象可以保存并恢复到某一状态。 类图 Java实现 Android源...

  • Singleton 单例模式

    设计原则学习笔记 设计模式学习笔记 作用 创建全局唯一的实例,提供给全局任意的地方使用。 类图 JAVA实现 单...

  • Interator 迭代器模式

    设计原则学习笔记 设计模式学习笔记 作用 针对数据集合,提供一种(若干)忽略集合内部细节以及访问细节的访问方式,...

  • Interpreter 解释器模式

    设计原则学习笔记 设计模式学习笔记 作用 将表达式转化为操作,并且将其拆成最小的单元 类图 Java实现 上面的...

  • Abstract Factory 抽象工厂模式

    设计原则学习笔记 设计模式学习笔记 作用 管理多个系列的产品之间的关系(非必要) 兼具工厂方法的作用 对于作用1...

  • Bridge 桥接模式

    设计原则学习笔记 设计模式学习笔记 作用 以持有的方式实现接口,避免继承太多导致扩展性变差,同时实现代码的复用。...

  • Proxy 代理模式

    设计原则学习笔记 设计模式学习笔记 作用 为对象提供增强作用 类图 图为静态代理。另有动态代理模式,由于类图不具...

  • Facade 外观模式

    设计原则学习笔记 设计模式学习笔记 作用 管理,封装若干子系统,使其作为一个整体系统对外提供操作。 类图 组合模...

网友评论

      本文标题:学习笔记:微服务设计的IDEALS原则

      本文链接:https://www.haomeiwen.com/subject/pboyxrtx.html