微服务演进史

一文了解:微服务及其演进史 阅读详情

1.微服务介绍

微服务是一种架构模式,是面向服务的体系结构(SOA)软件架构模式的一种演变,

它提倡将单一应用程序划分成一组松散耦合的细粒度小型服务,辅助轻量级的协议,互相协调、互相配合,为用户提供最终价值。

所以,微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。

2.微服务演进史

2.1 单体应用

也就是大家在早期所学习的SSM架构模式

优点:

1、系统的简易性:系统语言风格、业务结构,接口格式均具有一致性,服务都是耦合在一起的,不存在各个业务通信问题。

2、易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,简化了测试过程,无需额外测试服务间的依赖,测试均可在部署完成后开始。

3、易于部署与升级:相对于微服务架构中的每个服务独立部署,单体系统只需将单个目录下的服务程序统一部署和升级。

4、较低的维护成本:只需维护单个系统即可。运维主要包括配置、部署、监控与告警和日志收集四大方面。相对于单体系统,微服务架构中的每个服务都需要独立地配置、部署、监控和日志收集,成本呈指数级增长。

缺点:

1、复杂性高:由于是一个单体的系统,所以整个系统的模块是耦合在一起的,模块的边界比较模糊、依赖关系错综复杂。功能的调整,容易带来不可知的影响和潜在的bug风险。

2、服务性能问题:单体系统遇到性能瓶颈问题,只能横向扩展,增加服务实例,进行负载均衡分担压力。无法纵向扩展,做模块拆分。

3、扩缩容能力受限:单体应用只能作为一个整体进行扩展,影响范围大,无法根据业务模块的需要进行单个模块的伸缩。

4、无法做故障隔离:当所有的业务功能模块都聚集在一个程序集当中,如果其中的某一个小的功能模块出现问题(如某个请求堵塞),那么都有可能会造成整个系统的崩溃。

5、发布的影响范围较大:每次发布都是整个系统进行发布,发布会导致整个系统的重启,对于大型的综合系统挑战比较大,如果将各个模块拆分,哪个部分做了修改,只发布哪个部分所在的模块即可。

2.分布式架构

商品中心

供应商系统

出入库

货架管理

..........

  • 概念:分布式架构是一种系统设计方式,其中组件分布在不同的网络计算机上,这些组件通过通信协议协同工作,共同构成一个完整的应用程序。它强调的是系统组件在物理位置上的分离和独立性和稳定性.

  • 目标:主要目标包括提高系统的可扩展性、容错性、性能和资源利用效率。通过将不同的服务部署在不同的服务器上,可以实现负载均衡、故障隔离和水平扩展。

  • 特点:分布式系统可能包含多种架构风格,如微服务、SOA等,它更侧重于系统部署和资源管理的策略

该架构模式存在哪些优缺点:

  • 优点: 可以实现解耦、如果某子系统宕机的情况下,不会影响其他的子系统,适合于多团队人数实现开发。

  • 缺点:部署比较复杂的、开发难度比较大、需要有团队沟通成本。

3、SOA面向服务架构

概念:SOA是一种设计原则,它将应用程序构建为一系列相互独立的服务,每个服务都封装了一定的业务逻辑,服务之间通过定义良好的接口和协议相互通信,服务间的交互不涉及底层编程接口或通信协议的细节。

目标:SOA的核心目标是提高系统的灵活性、可重用性和可维护性。通过将业务功能抽象成服务,使得服务可以在不同的应用程序中复用,降低了系统的耦合度,便于系统升级和维护。

缺点: 采用SOAP协议实现通讯,xml传输非常重,效率比较低。服务化管理和治理设施不够完善,依赖与中心服务发现机制,不适合于前后分离架构模式.

SOA架构模式特点:

SOA架构通讯中,采用XML方式实现传输数据、在高并发下通讯过程中协议存在非常大冗余性,所以在最后微服务架构模式中使用JSON格式替代了XML。

SOA架构模式实现方案为Web Service或者是ESB企业服务总线 底层通讯协议SOAP协议(Http+XML)实现传输。

4、微服务架构

微服务架构产生的原因

微服务架构基于SOA架构演变过来的,在传统的WebService架构中有如下问题:

  • 依赖中心化服务发现机制

  • 使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常重,比较占宽带传输。

  • 服务化管理和治理设施不完善

微服务架构与SOA架构的不同

微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中的 ESB 企业服务总线,采用 http+json(restful)进行传输。

微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。

SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。

项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。

微服务是一种架构模式,是面向服务的体系结构(SOA)软件架构模式的一种演变,

它提倡将单一应用程序划分成一组松散耦合的细粒度小型服务,辅助轻量级的协议,互相协调、互相配合,为用户提供最终价值。

所以,微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常包含如下特点:

4.1 单一职责

微服务架构中的每个节点高度服务化,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,包括数据库和数据模型;

不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。

4.2 轻量级通信

通过REST API模式或者RPC框架,实现服务间互相协作的轻量级通信机制。

4.3 独立性

在微服务架构中,每个服务都是独立的业务单元,与其他服务高度解耦,只需要改变当前服务本身,就可以完成独立的开发、测试、部署、运维。

4.4 进程隔离

在微服务架构中,应用程序由多个服务组成,每个服务都是高度自治的独立业务实体,可以运行在独立的进程中,不同的服务能非常容易地部署到不同的主机上,实现高度自治和高度隔离。

进程的隔离,还能保证服务达到动态扩缩容的能力,业务高峰期自动增加服务资源以提升并发能力,业务低谷期则可自动释放服务资源以节省开销。

4.5 混合技术栈和混合部署方式

团队可以为不同的服务组件使用不同的技术栈和不同的部署方式(公有云、私有云、混合云)。

4.6 简化治理

组件可以彼此独立地进行扩缩容和治理,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载。

4.7 安全可靠,可维护。

从架构上对运维提供友好的支撑,在安全、可维护的基础上规范化发布流程,支持数据存储容灾、业务模块隔离、访问权限控制、编码安全检测等。

3.常见微服务架构

1. dubbo: zookeeper + SpringMVC/SpringBoot

  • 配套 通信方式:rpc

  • 注册中心:zookeeper / redis

  • 配置中心:diamond

2.SpringCloud:全家桶+轻松嵌入第三方组件(Netflix)

  • 配套 通信方式:http restful

  • 注册中心:eruka / consul /nacos

  • 配置中心:config / nacos

  • 断 路 器:hystrix / Sentinel

  • 网关:zuul / GateWay

  • 分布式追踪系统:sleuth + zipkin

4.Spring Cloud Alibaba 介绍

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发微服务架构的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发微服务架构。

依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。

 Spring Cloud Alibaba

既然说 Spring Cloud 是标准,那么自然少不了针对标准的实现。这里,为大家介绍下 Spring Cloud Alibaba 这套实现。先给出下面这张图帮助大家理解 Spring Cloud Alibaba 的定位:

Spring Cloud 作为一套标准,它的实现肯定不止一套,那么各套实现都有什么区别呢?我们来一起看一下下面这张图:

可以发现 Spring Cloud Alibaba 是所有的实现方案中功能最齐全的。尤其是在 Netflix 停止更新了以后,Spring Cloud Alibaba 依然在持续更新和迭代。

 

5.版本说明 

版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

<spring.boot.version>2.3.11.RELEASE</spring.boot.version><spring.cloud.version>Hoxton.SR8</spring.cloud.version> <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>

6.脚手架 

Cloud Native App Initializer (aliyun.com)

从单体架构到微服务架构的详细演化历程 代码难以理解,导致代码质量逐渐降低,复杂性逐渐增加,代码难以被修改和重构,简言之:屎山。"屎山"懂得都懂,代码量大耦合度高动一发乱全身,构建和部署耗时长,难以定位问题,大部分时间花费在解决代码冲突上,导致开发效率极低,可靠性差,一个bug可能会引起整个应用崩溃。伸缩性差,单体只能按整体横向扩展,无法分模块垂直扩展,无法分团队独立开发部署;IO密集型模块和CPU密集型模块无法独立升级和扩容。高度耦合的单体工程使得逻辑边界模糊不清,新业务需求开发任务无法有效分配到人,团队人员职责不清晰,沟通成本增加。 阅读详情

相关推荐

华为架构师8年经验谈:从单体架构到微服务的服务化演进之路

我现在做的系统是zk做注册中心服务把地址注册上去(临时节点),客户端拿地址请求,http的,现在发现如果是公网调用的话,对公网资源要求还挺多的,zk公网, 应用公网;上线容易下线难,为了规范服务的上线和下线,在服务发布前,需要走服务预发布流程,由架构师或者项目经理对需要上线的服务做发布审核,审核通过的才能够上线。服务治理是分布式服务框架的一个可选特性,尽管从服务开发和运行角度看它不是必须的,但是如果没有服务治理功能,分布式服务框架的服务SLA很难得到保障,服务化也很难真正实施成功。

知识分享官 405

Spring Cloud Alibaba 系列之微服务架构的演变

微服务架构的发展蜕变

weixin_72133062的博客 556

PX4飞控与MAVROS实战:从零搭建无人机ROS通信环境(附常见报错解决)

本文详细介绍了如何从零搭建PX4飞控与ROS的通信环境,重点解析了MAVROS的安装、硬件连接、串口权限配置以及坐标系转换等核心步骤。针对GeographicLib数据下载失败、串口权限不足等常见报错提供了实用解决方案,并附有Offboard模式控制的代码示例,帮助开发者快速建立稳定的无人机ROS开发环境。

dapp9builder的博客 335

Spring Cloud Alibaba

Spring Cloud Alibaba

qq_52963857的博客 293

NVIDIA B300 vs B200:详细解析与性能对决

详细解析 NVIDIA B300 整机)的性能,并与前代的 B200 进行对比。它不仅在核心计算能力(FP8)上实现了飞跃,更重要的是通过革命性的第二代 Transformer Engine 和第五代 NVLink 技术,彻底重塑了大规模 AI 模型训练和推理的效率与规模上限。其显存容量和带宽的巨大提升也为处理超大型模型和数据提供了坚实基础。与 B200 相比,B300 是一次全面的、代际性的性能跃升,特别适合那些需要处理最前沿、最复杂 AI 和科学计算任务的用户和组织。

2401_89353317的博客 3039

领域驱动新实践:COLA框架全解析——架构设计与实战案例解析

定义订单支付事件java代码解读复制代码} }Order定义Order类,继承并实现支付逻辑:java代码解读复制代码} }定义接口:java代码解读复制代码定义类,处理订单支付逻辑并持久化:java代码解读复制代码} }定义和处理订单支付事件:java代码解读复制代码} }java代码解读复制代码} }定义和接口及其实现:java代码解读复制代码java代码解读复制代码。

2401_89221445的博客 2660

1.微服务演进史

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发微服务架构的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发微服务架构。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。既然说 Spring Cloud 是标准,那么自然少不了针对标准的实现。

zhzjn的博客 1017

CGNS快速入门到实战(二):VS配置调用CGNS静态链接库

CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:(一)CGNS静态链接库编译;(二)VS配置调用CGNS静态链接库;(三)CGNS文件及案例展示。本篇文章重点讲述VS配置调用CGNS静态链接库。

ahang_99的博客 2616

微服务核心理论 - 微服务及其演进史

在很多项目的业务初期阶段,高速迭代上线是首要考虑的事情,对后期的容量预估、可扩展性和系统健壮性、高可用一般没有那么重视。但随着业务的发展,用户量、请求量的暴增,发现原来的单体系统已经远远不满足需求了,特别是随着互联网整体的高速发展,对系统的要求越来越高。但是物理服务器的CPU、内存、存储器、连接数等资源有限,单体系统能够承受的的QPS也是有限的,某个时段大量连接同时执行操作,会导致web服务和数据库服务在处理上遇到性能瓶颈。

smart_an的专栏 914

PCB_Project.PrjPcb 4 Not in version control

Altium Designer中PCB项目出现"NOT in version control"错误的解决方法:1. 禁用不需要的版本控制集成(DXP→Preferences→Version Control);2. 清理项目缓存(Projects面板右键→Clean Project);3. 检查文件读写权限;4. 如无效可新建项目重新添加文件。如需使用SVN版本控制,需正确配置SVN客户端路径,创建或连接SVN仓库,并将项目文件提交至版本控制系统。注意新建SVN仓库必须使用空目录,建议使用

whm128的博客 1593

原理之(〇)3D Gaussian Splatting 数学原理与推导

3D Gaussian Splatting源于EWA的理论基础,本文重点从EWA模型出发,详细推导3D GS中的数学原理,加深对鱼眼相机畸变场景下的理解。

scott198512的博客 4157

Hystrix - 微服务韧性演进史:从 Hystrix 到 Service Mesh

Hystrix:微服务韧性演进史 摘要:本文探讨了微服务架构中韧性设计的重要性与演进历程。首先分析了微服务环境下服务间调用增多、故障传播风险加剧等挑战,强调了构建韧性系统的必要性。随后重点介绍了Netflix Hystrix的诞生背景及其核心机制,包括熔断器模式、隔离、降级和限流等功能。通过Java代码示例展示了Hystrix的基础使用方法,演示了如何通过继承HystrixCommand类来实现支付服务的容错处理。文章指出,Hystrix作为微服务韧性设计的里程碑,为分布式系统提供了有效的故障防护机制。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

SIMULINK开发项目实例 1000 例专栏之第912例--AC-DC整流器场景:基于PWM整流器拓扑结构的建模:三相电压型PWM整流器(SR)单位功率因数控制仿真

本文详细介绍了使用Simulink和Simscape Electrical搭建三相电压型PWM整流器(VSR)模型的方法。主要内容包括:系统结构设计、主电路拓扑搭建、单位功率因数控制算法实现(含PLL锁相环、dq变换、PI控制器等模块)、参数配置和仿真设置。通过仿真分析验证了该系统能实现输入电流与电压同相位、输出直流电压稳定等特性,体现了PWM整流器的高效性和低谐波优势。文章还提出了增强鲁棒性、多工况测试等优化建议,为电力电子系统设计提供了实用指导。该建模方法对新能源发电、电动汽车充电等领域具有重要意义。

xiaoheshang_123的博客 7797

OpenCopilot架构演进史:从单体到微服务的蜕变

🤖 **OpenCopilot** 作为专为SaaS产品设计的AI助手,其架构经历了从单体到微服务的完整演进过程。这个演进不仅体现了技术选择的成熟,更展示了如何通过微服务架构为AI助手提供更高的可扩展性和稳定性。 ## 🔥 初始阶段:单体架构设计 在OpenCopilot的早期版本中,系统采用了传统的单体架构设计。所有功能模块,包括**AI对话管理**、**工作流引擎**、**知识库系统*

gitblog_00274的博客 912

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Ribbon - 微服务负载均衡演进史:从 Ribbon 到 Service Mesh(如 Istio)

本文探讨了微服务架构中负载均衡技术的演进历程,从经典的客户端负载均衡器Ribbon到现代服务网格Istio。Ribbon作为Netflix开源的客户端负载均衡库,通过将负载均衡逻辑嵌入客户端,实现了服务实例的智能选择。文章详细解析了Ribbon的核心组件,包括ILoadBalancer、IRule等,并通过Java代码示例演示了Ribbon与Spring Cloud的集成应用。随着微服务架构的复杂度提升,服务网格Istio等新一代解决方案逐渐兴起,它们通过将负载均衡等横切关注点下沉到基础设施层,进一步简化了

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Kubeflow架构演进史:从单体应用到微服务架构的完整指南

Kubeflow作为**机器学习工作流编排**的终极解决方案,在Kubernetes生态中扮演着关键角色。这个开源项目通过容器化技术为数据科学家和工程师提供了完整的MLOps平台,让机器学习工作流的管理变得前所未有的简单高效。 ## 🚀 Kubeflow架构演进历程 ### 初始阶段:单体架构设计 早期的Kubeflow采用相对简单的单体架构,将所有功能模块打包在单一容器中运行。这种设计虽然

gitblog_00767的博客 441

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

微服务理论之一:应用架构演进史

单一应用架构: 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 垂直应用架构: 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 分布式服务架构: 当垂...

weixin_33747129的博客 217

WEB技术演进史:从C/S到微服务架构

操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提供计算服务。 客户端和服务端往往处在不同的物理主机上,它们分属不同的进程,这些进程间需要通信。跨主机的进程间通信需要使用网络编程。最常见的网络编程接口是Socket。 Socket称为套接字,本意是插座。也就是说网络通讯需要两端,如果一端被动的接收另一端请求并提供计算和数据的称为服务器端,另一端往往只是发起计算或数据请求,称为客

技术分享 1181

Java架构演进史:从单体到微服务与云原生霸主的真实路径

架构设计是后端开发的核心能力,而Java的演进历程恰好映射了从单体应用、SOA到微服务、云原生的技术脉络。理解JVM内存模型与GC调优,掌握AQS与线程池的并发原理,是应对高并发场景的基础;面对分布式系统的数据一致性难题,事务消息与幂等重试往往比TCC更实用。微服务拆分不仅要考虑业务边界,还需结合团队规模与基础设施能力。在云原生时代,Kubernetes部署、可观测性建设和分布式定时任务治理成为新的刚需,而六边形架构也开始替代传统三层架构。本文以架构师视角,复盘Java二十多年的演进路径,帮助开发者在技术选

weixin_29722783的博客 145

微服务服务器集群Session管理演进史

Java面试核心知识点一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!Java面试核心知识点已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间![外链图片转存中…(img-GRHMSzQO-1712437364890)]Java面试核心知识点。

2401_84046577的博客 1027

后端技术栈演进史:从单体到微服务,我们经历了什么

代价是,当流量从一百涨到一万,当产品经理开始把“随便改一下”挂在嘴边,那个我们曾经引以为傲的WAR包,开始变得像一只越滚越大的雪球,你推得动它,却再也刹不住车。我们心里那块压舱石,是那几行CRUD也能跑出十万QPS的朴素能力,是在一个请求从网关走到数据库时,你脑子里能清晰画出它走过的每一根“管道”——无论那是单体里的堆栈,还是微服务里的一串IP。快则三天,慢则一周。如今,那些最老练的架构师,不再轻易提“为未来预留扩展性”,因为他们见过太多为未来预留出来的微服务,最终只是给后任留下了一堆需要维护的死代码。

2501_90410679的博客 13
上一篇: 映射调试上下文MDC
下一篇: Nacos介绍和docker安装
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值