【从零开始学微服务】03.软件架构的演化过程

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家

目前大部分的企业系统和互联网应用都是采用Web的形式提供服务能力,根据系统的组织方式和部署结构,我们通常把软件架构的演化过程分为以下几个阶段:

  • 单体架构
  • 垂直架构
  • SOA架构
  • 微服务架构

单体架构

单体架构,也被成为巨石架构,就像一块巨石一样,系统的所有代码、所有逻辑、所有模块都集中在一个项目里,并且会被部署在一个进程中。比如下面的电商系统:

虽然在电商系统被分为了表示层、业务逻辑层、数据访问层,但是它们还是在同一个项目里。比如在业务逻辑层中,商品管理、库存管理、订单管理等等模块的逻辑都是在一起的,难免就会有代码互相耦合的地方,你中有我,我中有你。这就造成了代码维护的困难,比如本来是在修改商品管理的代码,一不注意就影响了库存管理的逻辑,引发了bug,甚至是生产环境的事故。

优点

  • 结构简单,所有模块都集中在一个项目中。
  • 部署简单,只需要部署一个进程就可以。

缺点

  • 版本迭代慢,模块耦合度高,牵一发动全身。
  • 代码维护困难,所有模块在一个项目里面,被他人误改的风险很高。

垂直架构

随着业务的发展,单体架构的系统会越来越臃肿,代码的越来越难以维护,所以就把系统垂直地分成了多个项目的子系统,就形成了垂直架构,也被称为竖井式架构,或烟囱架构。比如下面的电商系统:

原来的电商系统别分为了订单系统、物流系统和用户系统三个独立的子系统,子系统之间相互独立,互相不会有影响,新业务的迭代
更加高效。不过,因为系统之间无法互相调用,有些模块功能在不同系统中都有实现。比如,商品管理模块在订单系统和物流系统都有重复的实现。

优点

  • 系统相互独立,互相不影响。
  • 新业务迭代更加高效。

缺点

  • 各个系统之间存在模块功能重复开发的情况
  • 各个系统之间相互独立,无法进行相互调用,形成了“信息孤岛”。

SOA架构

SOA全称是Service Oriented Architecture,即面向服务的架构,当垂直应用越来越多,重复的业务代码就会越来越多。此时可以将重复的代码抽取出来,形成统一的业务层作为独立的服务。

SOA是在企业内部IT系统重复构建以及效率低下的背景下提出的,最初想法是更好的利用企业内部的各个IT系统能力,解决信息孤岛,适配异构系统,整合业务功能等方面的问题。比如下面的电商系统:

订单系统、物流系统等功能模块都被定义成了独立的服务,所有的服务通过企业服务总线(ESB)来互相连接。企业服务总线(ESB)承担了传输协议转换、数据格式转换、服务路由、监控告警等功能。

优点

  • 解决了信息孤岛的问题,适配各种异构系统。
  • 提高了整个系统的可重用性和可维护性。

缺点

  • 服务的接口协议不固定,种类繁多,增加了复杂度。
  • 服务依赖,部署复杂。

微服务

微服务架构在某种角度上看也是面向服务的架构,微服务和SOA架构看起来非常相似,很多理念也很类似,但本质上有很大差异。

SOA架构通常都有一个庞大、复杂的ESB总线,各个单体应用之间通过ESB来交换数据,ESB也承担了很多业务逻辑转换和处理的工作;但在微服务概念里面,没有ESB,有的只是轻量级的消息通信机制。

微服务是一种通过更细力度服务组合来构建大规模复杂系统的的架构风格,这些服务围绕业务能力以及一系列设计标准而非特定的技术标准来组织。

总结

  • 单体架构,所有代码、所有逻辑、所有模块都集中在一个项目里。
  • 垂直架构,把系统垂直地分成了多个项目的子系统。
  • SOA架构,所有的服务通过企业服务总线(ESB)来互相连接。
  • 微服务架构,通过更细力度服务组合来构建大规模复杂系统。

最后,感谢你这么帅,还给我点赞


《从零开始学微服务》总目录

相关文章
|
15天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
15天前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
2月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
71 0
|
2月前
|
运维 Cloud Native 开发者
云原生时代下的微服务架构演化之路
【8月更文挑战第20天】在数字化转型的浪潮下,企业级应用纷纷拥抱云原生架构。本文将深入探讨微服务架构在适应云原生环境的过程中所面临的挑战与机遇,并分析如何通过优化设计、容器化技术及自动化运维,实现高效、灵活且可靠的系统构建。
176 65
|
2天前
|
Cloud Native Java API
聊聊从单体到微服务架构服务演化过程
本文介绍了从单体应用到微服务再到云原生架构的演进过程。单体应用虽易于搭建和部署,但难以局部更新;面向服务架构(SOA)通过模块化和服务总线提升了组件复用性和分布式部署能力;微服务则进一步实现了服务的独立开发与部署,提高了灵活性;云原生架构则利用容器化、微服务和自动化工具,实现了应用在动态环境中的弹性扩展与高效管理。这一演进体现了软件架构向着更灵活、更高效的方向发展。
|
28天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
45 3
|
1月前
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
64 5
|
24天前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
2月前
|
消息中间件 存储 Java
图解Kafka:Kafka架构演化与升级!
图解Kafka:Kafka架构演化与升级!
55 0
图解Kafka:Kafka架构演化与升级!