单体应用、SOA架构、微服务架构的对比

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 单体应用、SOA架构、微服务架构的对比

目录

前言:

单体架构

SOA架构

微服务架构


前言:

随着近年来云技术的发展,越来越多的用户选择使用云技术来代替传统的IT基础设施。在云技术发展的早期,业界的关注点集中在虚拟化、分布式、存储等laas方面的技术。但随着“云原生”概念的提出,大家的注意力开始转移到如何构建更加合适环境运行的应用上来。

“什么样的架构才是适合在云环境中运行”是一个非常大的问题,在此先不展开讨论,而是到CNCF对云原生的定义中寻找答案:

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网络、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统,结合可靠的自动化手段,云原生技术使工程师能够轻松地系统作出频繁和可预测的重大变更。

从上文的定义中可以发现“微服务”在云原生技术中占有非常重要的位置。在Jakarta.ee 2019年的调研报告中也印证了这一点,超过40%公司选择采用微服务架构来构件云上系统

在Java语言下,Pivoal强大的标准制定能力与影响力,Spring Cloud拥有一个强大的国际化社区,阿里巴巴作为整个社区里面的重要成员,也贡献出Spring Cloud Alibaba这套优秀的实现,这也是目前整个Spring Cloud体系下最完善并且在持续更新的实现方案。

需要掌握的知识点:

    1. 微服务的发展历程
    2. 微服务的基本形式
    3. Spring、Spring Boot、Spring Cloud的职责与关系
    4. Spring Cloud Alibaba的功能与定位
    5. Java工程脚手架的使用方法
    6. 沙箱环境的使用方法

    概念:

    通常业界所说的,没有最好的架构,只有最合适的架构。微服务架构也是随着信息产业的发展而出现的最有普遍适用性的一套架构模式。通常来说,架构的发展历程分为以下几种:单体架构、SOA面向服务架构、微服务架构

    单体架构

    很久以前,计算机发展的早期,创建的绝大部分的应用都属于单体应用,通常一个应用分为数据库连接、业务逻辑处理、展示逻辑等放到了一起,甚至于处理用户请求的地方也直接连接数据库。

    后来,学习使用了MVC的架构,由此开启了应用的拆分之旅,多层架构的本质,是按照技术职责将应用做水平拆分,每一层解决的技术问题相对集中,层与层之间做单向依赖。可以更好的管理代码,大大提升了后期的维护效率,但是此时还是单体应用,部署也是按照一个整体运行。

    优点有以下几点:开发简单、开发迅速、部署简单但是随着业务的越来越多,导致的应用的规模越来越大,逻辑越来越复杂,导致的这个应用也越来越难以维护。于是出现了SOA。面向服务的架构

    SOA架构

    SOA是Service-Oriented Architecture的简写,面向服务的架构,从名称来看是服务是SOA架构中非常重要的概念。SOA的核心思想是将系统的功能分为一系列的服务。

    面向服务的架构SOA是一个组件模型,将应用的不同功能单元(称服务)进行拆分,并通过这些服务之间定义好的接口和协议联系起来。接口是采用中立的方式定义的,独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以统一的方式进行交互

    与单体架构不同的是SOA是粗粒度的拆分,具体的标准参考康威定理,应用从单体应用做了垂直拆分之后,就会变成一些相对独立的应用。此时,应用之间的依赖、调用等相关问题。

    相关协议的介绍:

      1. xml一种标记语言,用于以文档格式描述消息中的数据
      2. SOAP(Simple Object Access Protocal),在计算机网络上交换基于xml的消息协议,通常是HTTP
      3. WSDL(Web Services Description Language ,Web服务描述语言)基于xml的描述语言,用于描述与服务交互所需的服务的公共接口,协议绑定,消息格式
      4. UDDI(Universal Description ,Discovery .and Integration,是统一描述、发现与集成)基于xml的注册协议,用于发布WSDL并允许第三方发现这些服务
      5. ESB(Enterprise Service Bus,企业服务总线)--支持异构环境中的服务,消息以及基于事件的交互,并且具有服务级别和管理性

      image.gif编辑

      但是存在以下的缺点:高门槛,需要不同的协议以及厂家不同参与的,很多服务可能导致通信的协议无法进行统一;不适合云环境,不同的协议导致的上线以及集成都不一致导致的部署通信的问题;中心化,虽然实现了水平的扩展,但是ESB却成了系统的中心

      微服务架构

      image.gif编辑

      微服务具有以下几种特点:

        1. 一套小服务
        2. 独立进程
        3. 轻量级通信协议
        4. 可独立部署
        5. 多语言不同存储技术

        微服务可以说是一个庞大且复杂的概念集合,它既是一种架构模式,也是实现这种架构模式所使用的技术方案集合

        需要解决的问题:

          1. 分布式的使用难点:原本在单体应用中,很多简单的问题都会在分布式环境下呗几何级的放大,例如分布式事务,分布式锁、远程调用。
          2. 协调代价:一个项目有几十个应用,这些应用又是不同的团队开发的,导致协调这些应用是一个很难的事情
          3. 服务拆分需要很强的设计能力,如果拆分不合理会导致服务不能很好的实现高内聚低耦合的要求
          相关文章
          |
          12天前
          |
          Dubbo Java 应用服务中间件
          服务架构的演进:从单体到微服务的探索之旅
          随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
          28 1
          服务架构的演进:从单体到微服务的探索之旅
          |
          14天前
          |
          监控 Go API
          Go语言在微服务架构中的应用实践
          在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
          |
          14天前
          |
          网络协议 数据挖掘 5G
          适用于金融和交易应用的低延迟网络:技术、架构与应用
          适用于金融和交易应用的低延迟网络:技术、架构与应用
          43 5
          |
          15天前
          |
          Go 数据处理 API
          Go语言在微服务架构中的应用与优势
          本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
          |
          13天前
          |
          监控 持续交付 Docker
          Docker 容器化部署在微服务架构中的应用有哪些?
          Docker 容器化部署在微服务架构中的应用有哪些?
          |
          13天前
          |
          监控 持续交付 Docker
          Docker容器化部署在微服务架构中的应用
          Docker容器化部署在微服务架构中的应用
          |
          11天前
          |
          架构师 中间件 API
          微服务和 SOA 的 6 大核心区别,你都知道吗?
          本文详解SOA与微服务的六大区别,帮助更好地理解和应用这两种架构,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
          微服务和 SOA 的 6 大核心区别,你都知道吗?
          |
          19天前
          |
          微服务
          微服务与SOA区别
          微服务与SOA区别
          20 0
          微服务与SOA区别
          |
          2天前
          |
          监控 持续交付 API
          深入理解微服务架构及其在现代软件开发中的应用
          深入理解微服务架构及其在现代软件开发中的应用
          9 0
          |
          16天前
          |
          设计模式 Java API
          微服务架构演变与架构设计深度解析
          【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
          64 6
          下一篇
          无影云桌面