从单体架构到微服务架构&最佳实践 Monolithic to Microservices Architecture

本文深入探讨了从单体架构到微服务架构的转变,详细介绍了设计模式、原则和最佳实践。内容涵盖微服务的特征、好处与挑战,以及如何设计API网关、后端服务、BFF模式等。文章还讨论了事件驱动架构、微服务通信模式,如API网关、发布-订阅模式,并提到了微服务数据管理的CQRS和事件溯源等设计模式。通过这些知识,读者可以学习如何构建高可用、可扩展、低延迟的微服务系统。
摘要由CSDN通过智能技术生成

e96ec560cd89844175e4744d23f9bfe9.png

概述

微服务是一种将软件应用程序开发为独立设置的小模块的方法,其中每个服务运行独特的进程。它通过定义明确的机制进行通信以达到目的。

2011 年 5 月,威尼斯附近的软件工程师使用“微服务”这个术语来表达他们中许多人正在探索的通用编程风格。James Lewis 在 2012 年 3 月的案例研究中提出了一些想法,并将其命名为“微服务”。

微服务是许多行业想要采用的一种。Netflix、亚马逊等公司在其产品中采用了微服务的概念。

在本文中,我们将学习如何使用设计模式、原则和最佳实践来设计微服务架构。我们将使用正确的架构设计模式和技术。

通过本文您将了解如何在微服务分布式架构上设计系统以实现高可用性、高可扩展性、低延迟和网络故障恢复能力,从而处理数百万个请求。

In this article, we’re going to learnhow to Design Microservices Architecturewith usingDesign Patterns, Principlesand the**Best Practices.**We will using the right architecture design patterns and techniques.

By the end of the article, you will Learn how tohandle millions of requestwith designing system forhigh availability, high scalability, low latency, andresilienceto network failures on microservices distributed architectures.

f32e4c6380ab36b5d1fd9a619734a696.png

本文带领您进行一段**软件架构设计的旅程,**逐步将架构单体发展为事件驱动的微服务.我们将从设计处理少量请求的电子商务整体架构开始软件架构的基础知识。

a5e6eeff093dcc1aecf810c7c3445250.png

之后逐步演变成可处理数百万个请求的架构

  • 分层架构

  • SOA

  • 微服务

  • 最后是事件驱动的微服务架构

After that step by stepevolvesthe architecture with

  • Layered Architecture

  • SOA

  • Microservices

  • and lastlyEvent Driven Microservices Architectures

with designing together that handle millions of requests.

在本文中,我们将学习如何使用设计模式、原则最佳实践****来设计微服务架构。我们将从设计单体事件驱动的微服务开始,并一起使用正确的架构设计模式和技术。

In this course, we’re going to learnhow to Design Microservices Architecturewith usingDesign Patterns, Principlesand theBest Practices.We will start with designingMonolithictoEvent-Driven Microservicesstep by step and together using the right architecture design patterns and techniques.

设计模式、原则

在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为**Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)**的书,该书首次提到了软件开发中设计模式的概念。

四位作者合称GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。

  • 对接口编程而不是对实现编程。

  • 优先使用对象组合而不是继承。

设计模式的使用

设计模式在软件开发中的两个主要用途。

开发人员的共同平台

设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。

最佳的实践

设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。

设计模式的类型

根据设计模式的参考书**Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)**中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。

序号

模式 & 描述

包括

1

创建型模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

  • 工厂模式(Factory Pattern)

  • 抽象工厂模式(Abstract Factory Pattern)

  • 单例模式(Singleton Pattern)

  • 建造者模式(Builder Pattern)

  • 原型模式(Prototype Pattern)

2

结构型模式
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

  • 适配器模式(Adapter Pattern)

  • 桥接模式(Bridge Pattern)

  • 过滤器模式(Filter、Criteria Pattern)

  • 组合模式(Composite Pattern)

  • 装饰器模式(Decorator Pattern)

  • 外观模式(Facade Pattern)

  • 享元模式(Flyweight Pattern)

  • 代理模式(Proxy Pattern)

3

行为型模式
这些设计模式特别关注对象之间的通信。

  • 责任链模式(Chain of Responsibility Pattern)

  • 命令模式(Command Pattern)

  • 解释器模式(Interpreter Pattern)

  • 迭代器模式(Iterator Pattern)

  • 中介者模式(Mediator Pattern)

  • 备忘录模式(Memento Pattern)

  • 观察者模式(Observer Pattern)

  • 状态模式(State Pattern)

  • 空对象模式(Null Object Pattern)

  • 策略模式(Strategy Pattern)

  • 模板模式(Template Pattern)

  • 访问者模式(Visitor Pattern)

4

J2EE 模式
这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。

  • MVC 模式(MVC Pattern)

  • 业务代表模式(Business Delegate Pattern)

  • 组合实体模式(Composite Entity Pattern)

  • 数据访问对象模式(Data Access Object Pattern)

  • 前端控制器模式(Front Controller Pattern)

  • 拦截过滤器模式(Intercepting Filter Pattern)

  • 服务定位器模式(Service Locator Pattern)

  • 传输对象模式(Transfer Object Pattern)

下面用一个图片来整体描述一下设计模式之间的关系:

98b4e9ccaae88267999ec556c0d84817.png

设计模式的六大原则

1、开闭原则(Open Close Principle)

开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则是面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值