您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

微服务架构详解

时间:2022-09-12 14:10:24  来源:网易号  作者:互联共商

一、微服务架构的由来

在微服务架构出现之前,最常用的架构就是单体架构,俗称"一个jar(war)包打天下"。在一个jar包工程中,采用MVC架构,分为表现层,业务层,数据访问层,所有的业务模块,都放在这个工程中集成,如下图所示:


 

随着软件行业规模的增长,这种单体架构的弊端也越来越多,包括:

 

  1. 耦合性高,某个地方出问题,很可能影响其他业务模块的使用
  2. 代码管理成本高,项目沉重,并会随着需求的增加越来越重
  3. 随着访问量的增多,这种架构的工程并发力不够

 

为了解决单体结构带来的问题,就出现了微服务架构。

微服务架构就是将单一程序拆分成一个一个的微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL

API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。

二、微服务架构优势与劣势

优势:

复杂的业务拆分成多个业务,每个业务是一个独立的微服务,彻底地去耦合,利于分工,当需要增加业务的时候,可以方便创建新的微服务扩展业务,而不用担心有没有别的地方耦合

每个微服务都是独立部署的,如果其中一个宕机了,不会影响整个系统;也方便功能变更时,服务的部署;当流量增大后,可以将服务集群化部署,增强抗击高并发的能力

每个微服务之间可以使用不同的编程语言和不同的数据库

劣势:

在复杂程度上来说,微服务比单体建构要更为复杂些

部署比单体项目复杂

服务之间是用HTTP协议通信的,通信成本比单体项目高

数据一致性问题。

三、适用场景

通过上面的描述可以看出,微服务在解决了单体架构带来的问题的同时,也出现了部署复杂,需要增加中间件联络各服务的问题。所以,不是所有的场景都推荐使用微服务架构,具体如下:

适用场景:

①:大型复杂的项目…(来自单体架构200W行代码的恐惧)

②:快速迭代的项目…(来自一天一版的恐惧)

③:并发高的项目…(考虑弹性伸缩扩容的恐惧)

不适场景:

①:业务稳定,就是修修bug ,改改数据

②:迭代周期长 发版频率 一二个月一次.

四、微服务与SpringCloud的关系

SpringCloud简单来说是上述微服务架构技术落地实现的集合体,是微服务架构下的一站式解决方案。

SpringCloud是一个技术的集合体,将上述的微服务架构进行落地。下面看一下这个集合体里包含哪些组件:

注册中心Eureka:

拆分成多个服务之后,总得有个管理多个服务的模块吧,这就是注册中心的作用。起到服务注册和服务发现的作用。

网关Zuul:

拆分成多个服务之后,涉及到服务之间的调用吧,一个服务调用了三个服务的模块,那在这个服务里,配置三个调用地址,看起来是不是很麻烦呀,所以就出现了网关,所有的服务调用都调用到网关,然后在网关里配置路由,进行服务的转发,类似于代理的作用。当然网关需要配合注册中心进行使用,去发现转发到哪个服务上去。

负载均衡Ribbon:

网关找到请求发送到哪个服务后,如果这个服务做了集群,有多个实例,那该发送到哪个实例上呢,于是就出现了Ribbon组件,进行负载均衡。

远程调用方式Feign:

服务之间相互调用的时候,可以使用RestTemplate进行调用,SpringCloud也提供了Feign客户端访问,即提供了一种远程调用方式。

断路器Hystrix:

SpringCloud提供了一个监控组件,用于监控服务接口的状态和断路情况。Hystrix Dashboard是个监控面板,提供了可视化界面查看服务调用的耗时等等。

上述就是微服务的五大组件。微服务架构就是对服务进行拆分,多个小的项目,组成一个大型项目。那么,拆分后的服务,肯定需要增加中间件,来统一维护这些服务,于是就有了注册中心。拆分成小型服务后,涉及到服务之间接口的调用,于是产生了Feign技术。为了实现高可用,每个小型服务都需要集群,那么集群如何选举呢?就出现了负载均衡技术Ribbon。最后通过网关统一管理请求路径的配置,进行请求的转发。SpringCloud还为我们提供了断路器,用于监控服务的各种指标信息。

所以,SpringCloud是一套微服务架构的落地技术方案,对于程序员而言,只要在这套技术框架里面,进行业务模块的开发实现即可。

同时可以发现,我们要使用SpringCloud,还需要维护注册中心,网关等等技术,这也是使用微服务架构需要花费的成本。

官网: https://spring.io/projects/spring-cloud

中文文档: https://www.springcloud.cc/

Spring Cloud中国社区:http://springcloud.cn/

SpringCloud微服务架构图


 

五、SpringCloud与SpringCloud Alibaba的关系

SpringCloud Alibaba是阿里研发的一套微服务架构的落地技术方案,可以很好的兼容SpringCloud,只需修改一些配置和注解,原生SpringCloud就可以接入到SpringCloud Alibaba中。

SpringCloud Alibaba提供了一些新组件,来落地微服务架构,阿里之所以要开发这套技术架构,主要是为了推广相关的产品,当然有付费产品。

下面看SpringCloud与Alibaba组件对比:


 


 

SpringCloud Alibaba技术架构:



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
美团外卖宣布新一轮组织架构调整:提拔多位年轻管理者,年轻化、扁平化成主基调
新浪科技讯 4月11日上午消息,继2月下旬、3月下旬两轮人员调整后,美团到店到家的组织架构调整仍在继续。近日,美团外卖以内部邮件的方式宣布了新一轮的组织调整:外卖事业部下成立...【详细内容】
2024-04-11  Search: 架构  点击:(4)  评论:(0)  加入收藏
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 架构  点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27  Search: 架构  点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
京东小程序数据中心架构设计与最佳实践
一、京东小程序是什么京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提...【详细内容】
2024-03-27  Search: 架构  点击:(12)  评论:(0)  加入收藏
从 MySQL 到 ByteHouse,抖音精准推荐存储架构重构解读
ByteHouse是一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,可以通过增加服务器数量来提升处理能力。本文将从兴趣圈层...【详细内容】
2024-03-22  Search: 架构  点击:(25)  评论:(0)  加入收藏
全程回顾黄仁勋GTC演讲:Blackwell架构B200芯片登场
北京时间3月19日4时-6时,英伟达创始人黄仁勋在美国加州圣何塞SAP中心登台,发表GTC 2024的主题演讲《见证AI的变革时刻》。鉴于过去一年多时间里AI带来的生产力变革,以及英伟达...【详细内容】
2024-03-19  Search: 架构  点击:(17)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13  Search: 架构  点击:(6)  评论:(0)  加入收藏
有了LLM,所有程序员都将转变为架构师?
编译 | 言征 出品 | 51CTO技术栈(微信号:blog51cto)生成式人工智能是否会取代人类程序员?可能不会。但使用生成式人工智能的人类可能会,可惜的是,现在还不是时候。目前,我们正在见...【详细内容】
2024-03-07  Search: 架构  点击:(19)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  Search: 架构  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(12)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(18)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(118)  评论:(0)  加入收藏
站内最新
站内热门
站内头条