Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >服务架构的进化

服务架构的进化

原创
作者头像
KunkkaWu
发布于 2022-07-18 12:14:00
发布于 2022-07-18 12:14:00
8480
举报
文章被收录于专栏:算法协议算法协议

单体系统时代 Monolithic

单体架构(Monolithic) “单体”只是表明系统中主要的过程调用都是进程内调用,不会发生进程间通信,仅此而已。

经典三层模型

软件设计的时候经常提到和使用经典的3层模型:表现层业务逻辑层数据访问层

虽然在软件设计中划分了3层模型,但是对业务场景没有划分,一个典型的单体架构就是将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中最终经过编译,打包,部署在一台服务器上。

image
image

随着访问量的不断提升,一台服务器必将无法承载一定量级的访问。因此,诞生了集群化部署。

集群

在应用初期,访问量不大,功能迭代比较频繁,单台服务部署比较方便,开发效率高且成本低。但是,随着业务的越来越复杂,用户访问量越来越大,单机的QPS很容易就达到了瓶颈。为了解决这个问题,同时提高服务器的容错,集群部署的方式就慢慢的诞生了。

image
image

从图中,可以很清晰的看出:将应用分别部署多个副本到多个应用服务器中,通过负载均衡将访问流量,均匀的打在每个应用服务器上。这样理论上,可以通过平行扩容应用服务器就可以解决并发访问的问题。

在应用服务器的背后,数据库对象存储和缓存服务器 也同样使用类似的架构,来达到给应用服务器集群提供更高的连接数、更高的QPS。

优缺点

优点
  1. 开发简单: 所有的业务代码都在一起,方便开发和代码管理。
  2. 测试简单: 很容易对功能进行测试
  3. 问题排查简单: 可以很容易在一个工程内,追踪代码,排查问题。
  4. 发布简单: 只需编译一个工程,发布到服务器上。
  5. 维护简单: 每一台应用服务器代码一样,环境一样。不像微服务,还需要先定位是哪个服务的问题。
缺点

随着业务的不断发展,单体架构的优势已逐渐无法适应互联网时代的快速变化,面临越来越多的挑战:

  1. 维护成本增加:随着功能越来越多,模块越来越多,团队越来越大,沟通成本、管理成本也会随之增大。开发过程中,调试,错误定位等时间变长,也不容易掌握全局功能,维护修改难度增加。
  2. 技术栈升级难:单体架构倾向于使用同一种技术栈,一旦选定很难更换。
  3. 资源无法隔离:公用数据库、内存、缓存等资源,弱某一模块对资源使用不当,真个系统都会拖垮。
  4. 无法灵活扩展:虽然支持横向扩展,但是不能灵活对个别模块单独扩展。不能做到资源精细配置。

适用场景

业务场景简单、功能不复杂、研发人员少、创业公司初期,都适合先用单体模式(当然,你的工程搭建的时候,可以模块化,只是部署的时候是单体架构)。

SOA时代 Service-Oriented Architecture

为了允许程序出错,为了获得隔离、自治的能力,为了可以技术异构等目标,是继为了性能与算力之后,让程序再次选择分布式的理由。然而,开发分布式程序也并不意味着一定要依靠今天的微服务架构才能实现。在新旧世纪之交,人们曾经探索过几种服务拆分方法,将一个大的单体系统拆分为若干个更小的、不运行在同一个进程的独立服务,这些服务拆分方法后来导致了面向服务架构(Service-Oriented Architecture)的一段兴盛期,我们称其为“SOA 时代”。

SOA 架构(Service-Oriented Architecture) 面向服务的架构是一次具体地、系统性地成功解决分布式服务主要问题的架构模式。

SOA实现的两个最重要的概念

  • 面向服务的通信(SOC Service-Oriented Communicaiton)
  • 面向服务的软件架构(SOSA Service-Oriented Software Architecture)

SOA(Service-Oriented Architecture)的特点:

  • 易于扩展
  • 灵活的平台
  • 服务通信标准化
  • 服务间:松耦合,无状态,无依赖
  • 服务内:高内聚,完整,可复用,可灵活重组

微服务时代

微服务架构(Microservices)

微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。服务采取轻量级的通信机制和自动化的部署机制实现通信与运维。

概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。

本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。

微服务其实就是SOA的一个变种:SOA喜欢水平服务,微服务喜欢垂直服务

后微服务时代(Cloud Native)

微服务是从软件层面独立解决问题,随着K8S的崛起和Spring Cloud的成熟,逐渐软件和硬件可以一体,来解决架构问题。有的人称之为:后微服务世代(Cloud Native),也有叫 云原生的。

早期,云原生架构有几个特征:

  1. 符合12模式(Twelve-Factor App):云原生应用架构的模式集合
  2. 微服务架构(Microservices):独立部署的服务,一次只做一件事
  3. 自助服务敏捷基础设施(Self-Service Agile Infrastructure):用于快速、可重复和一致地提供应用环境和服务的平台
  4. 面向API接口的通信(API-based Collaboration):服务之间的交互基于接口,而不是本地方法调用
  5. 抗脆弱性(Anti-Fragility):系统能抵御高负载

简单来说就是:

模块化(Modularity)

可观测性(Observability)

可部署性(Deployability)

可测试性(Testability)

可处理性(Disposability)

可替代性(Replaceability)

2019年,VMware Tanzu 官网给出了云原生最新定义,以及云原生的架构原则:

  • DevOps 集成持续交付
  • Microservices 微服务
  • Containers 容器化和容器编排技术
  • Security 安全

云原生一直在被定义,也一直在被重定义。但是可以看出,云原生技术很有可能成为未来的发展方向。我们期待着……

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
单体到微服务架构服务演化过程
在 Web 应用程序发展的早期,大部分工程是将所有的服务端功能模块打包到单个巨石型(Monolith)应用中,譬如很多企业的 Java 应用程序打包为 war 包,最终会形成如下的架构:
架构狂人
2023/09/28
4450
单体到微服务架构服务演化过程
单体应用、SOA架构、微服务架构的对比
随着近年来云技术的发展,越来越多的用户选择使用云技术来代替传统的IT基础设施。在云技术发展的早期,业界的关注点集中在虚拟化、分布式、存储等laas方面的技术。但随着“云原生”概念的提出,大家的注意力开始转移到如何构建更加合适环境运行的应用上来。
小马哥学JAVA
2022/11/14
1.1K0
微服务是什么?-阮一峰
网上的文章虽然很多,但是都太复杂,初学者不容易看懂。我认为,这个概念其实非常简单,可以很通俗地说明白。
星哥玩云
2022/06/07
1.1K0
微服务是什么?-阮一峰
互联网十万个为什么之什么是微服务
微服务(Microservices)是一种软件架构设计模式,它将应用程序分解为小型、自治的服务单元,这些服务单元可以独立部署、扩展和维护,其中每一个服务单元也都是一个微服务。
linus_lin
2024/10/21
1220
互联网十万个为什么之什么是微服务
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。每个微服务通常聚焦于某一个特定的业务功能或领域,能够通过轻量级的通信协议(如 HTTP/REST、消息队列等)与其他微服务进行交互。
用户7954602
2024/12/07
5230
微服务架构解析:跨越传统架构的技术革命
从单体架构到微服务架构演进
随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。总体来说,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。当然,很多互联网企业的系统架构已经向Service Mesh(服务化网格)演变;
iginkgo18
2021/07/04
1.2K0
系统架构模式和软件架构模式的区别
从系统架构的角度关注整个系统的组织方式和各个组件间的交互。这涉及到服务器的部署、负载均衡、网络通信等问题。因此,系统架构主要关心的是在硬件和操作系统层面上如何实现和优化组件之间的通信。
运维开发王义杰
2023/08/15
6710
系统架构模式和软件架构模式的区别
趣谈微服务之点-线-面关系
可能你觉得这很扯吧,开始我也觉得这样描述不够恰当,但是后面思来想去,点-线-面简单且形象生动地说明这三者的概念及关系,也有助于读者理解和消化。
IT技术小咖
2020/04/02
4300
趣谈微服务之点-线-面关系
什么是微服务架构
什么是微服务? 微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 微服务的概念源于2014年3月Martin Fowler所写的章“Microservices”http://martinfowler.com/articles/microservices.html 单体架构(Monol
程序员鹏磊
2018/02/09
1.4K0
什么是微服务架构
单体架构和微服务架构:现实应用中的软件架构
如果没有一个好的架构,软件系统的开发可能会使公司付出很高的代价。举个例子,如果一个在线电子商务公司开发平台采用耦合程度高的模块化方法,用户界面和业务逻辑功能的源文件是混在一起的,如果想要支持新的智能手机本地应用或支持更大规模的用户交易,他们可能会需要大量的投资(时间和资源)。这种系统设计风格会影响软件的可维护性,质量,并会增加业务投放市场的时间。
程序你好
2018/07/23
1.2K0
浅谈软件工程架构及其演进 | 青训营笔记
简单来讲,软件架构就像建筑的地基一样,为指导软件实现的方法起到重要作用。只有地基坚实了,大厦才能盖的高。
HikariLan贺兰星辰
2023/03/06
3440
微服务架构(Microservices)究竟是什么?
(摘自Introduction to Monolithic Architecture and MicroServices Architecture)
ayqy贾杰
2019/08/12
1.3K0
SpringCloud——微服务介绍+系统架构
* 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护* 项目模块之间紧密耦合,单点容错率低* 无法针对不同模块进行针对性能优化和水平扩展
用户10196776
2022/11/22
1.1K0
SpringCloud——微服务介绍+系统架构
传统单体架构到微服务化架构的演进之路
Java EE将企业级软件架构分为三个层级: Web 层、业务逻辑层和数据存取层,每个层次的职责分别如下。
小熊学Java
2023/07/16
7400
传统单体架构到微服务化架构的演进之路
快速学习-微服务简介
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。
cwl_java
2020/08/28
6510
快速学习-微服务简介
单体架构比微服务架构更落后吗?
单体和微服务谁是毒瘤?单体、分布式、微服务、SOA 到底是什么关系?我的系统该用什么架构?最近终于下定决心研究这个问题并且有所收获,欢迎一起讨论。
腾讯云开发者
2024/10/31
2.3K0
单体架构比微服务架构更落后吗?
初步了解SpringCloud微服务架构
针对上述问题,传统的单体结构已经不再适用于复杂度日益渐增的产品,因此一种新的软件架构提供了解决方案 —— 微服务 。
程序员Leo
2023/08/07
1K0
初步了解SpringCloud微服务架构
微服务架构体系
分布式关注的是服务分开部署,也就是如何将单一服务部署,变为多服务部署(垂直+水平拆分)。 微服务关注的是服务拆分力度,即:一个服务要拆分到多大的维度合适
架构之家
2022/07/12
8770
微服务架构体系
单体应用、SOA架构、微服务架构有哪些优劣势?
目前大部分的企业系统和互联网应用都是采用的Web形式提供服务能力,根据系统的组织和部署结构,软件架构的演化过程大概分成以下阶段:1、单体架构; 2、SOA架构;3、微服务架构
凡泰极客
2023/02/10
1.4K0
基于SOA的高并发和高可用分布式系统架构和组件详解
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案。在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服务之间的通信,并且基于弹性云服务搭建高可用的分布式解决方案。
用户7353950
2022/06/23
8680
基于SOA的高并发和高可用分布式系统架构和组件详解
相关推荐
单体到微服务架构服务演化过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档