微服务技术简介

news2025/2/21 23:35:43

微服务技术简介

  • 服务架构的演变
  • 微服务架构的常见概念
  • 微服务常见的解决方案
    • Spring Cloud
    • Spring Cloud Alibaba
    • 微服务技术对比
    • 常用的微服务组件
  • 微服务架构图

服务架构的演变

单体架构:当一个系统业务量很小的时候,将业务的所有功能集中在一个项目中开发,将这个项目打成一个包部署在一台服务器上。整个项目所有的服务都由这台服务器提供。这就是单体架构。

请添加图片描述
优点: 架构简单。前期开发成本低、开发周期短,适合小型项目。部署成本低。

缺点: 全部功能集成在一个工程中,对于大型项目不易开发、扩展和维护。开发效率低,代码维护困难。
​技术栈受限,只能使用一种语言开发。如果想整体应用采用新的技术,新的框架或者语言,那是不可能的。
任意模块的漏洞或者错误都会影响这个应用,降低系统的可靠性。

垂直应用架构:按照业务进行切割,形成小的单体项目。将原来的一个应用拆成互不相干的几个应用,以提升效率。
请添加图片描述
优点:系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展。一个系统的问题不会影响到其他系统,提高容错率。不同的系统可以用不同的编程语言编写。

缺点:系统之间相互独立, 无法进行相互调用。系统之间相互独立, 会有重复的开发任务,功能冗余、数据冗余。

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
请添加图片描述
优点:抽取公共的功能为一个独立服务,提高代码复用性。​ 可重用性高。​ 可维护性高。
缺点:系统间耦合度变高,调用关系错综复杂,难以维护。

微服务架构:微服务是一种经过良好架构设计的分布式架构方案。更加强调服务的"彻底拆分"。将每一个服务单独开发,每一个服务都可以看作一个独立的项目。

微服务架构的特征:

  • 单一职责,微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
  • 面向服务,微服务对外暴露业务接口。
  • 自治,每一个微服务都看作一个独立的项目,可以做到团队独立,技术独立,数据独立,部署独立。
  • 隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题。

请添加图片描述

优点:​ 服务拆分粒度更细,有利于提高开发效率。服务独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展。微服务之间采用RESTful等轻量级Http协议相互调用。服务各自有自己单独的职责,服务之间松耦合。服务之间隔离性强。

缺点:分布式系统开发的技术成本高(容错、分布式事务等)。​ 粒度太细导致服务太多,维护成本高。架构非常复杂,运维,监控,部署难度提高。

微服务架构的常见概念

服务治理:
服务治理就是进行服务的自动化管理,其核心是服务的注册与发现。
服务注册:服务实例将自身服务信息注册到注册中心。
服务发现:服务通过注册中心,获取到已经注册到注册中心的服务实例的信息,去请求他们提供服务。
服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。
服务调用:多个服务之间的远程调用。主流的远程调用的技术有基于HTTP请求的RESTFul接口及基于TCP的RPC协议。
在这里插入图片描述
服务网关:不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。网关是将所有API调用统一接入到API网关层,由网关层统一接入和输出。一个网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。请添加图片描述
服务容错:在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。
服务容错的三个核心思想是:

  • 不被外界环境影响。
  • 不被上游请求压垮。
  • 不被下游响应拖垮。

请添加图片描述
链路追踪:一次请求往往需要涉及到多个服务。这些服务,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要对一次请求涉及的多个服务链路进行日志记录,性能监控即链路追踪。

微服务常见的解决方案

Spring Cloud

官网地址: https://www.springcloud.cc/ (中文)
官网地址: https://spring.io/projects/spring-cloud (英文)

Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud组件介绍
Eureka:一个基于 Rest 服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。
Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。
Ribbon:客户端负载均衡的服务调用组件。
Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
Zuul:微服务网关,提供动态路由,访问过滤等服务。

Spring Cloud Alibaba

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

Spring Cloud Alibaba 组件介绍
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

微服务技术对比

在这里插入图片描述

常用的微服务组件

在这里插入图片描述

微服务架构图

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红帽认证常见答疑(一):有效期、考试题型、考试对年龄和身份要求、英语水平等

红帽认证有效期 红帽的每个证书都有有效期,期限3年。RHCE过期前可以考下午的RHCE(EX294)或者考一门RHCA来延期3年。证书过期后在红帽官网上无法下载证书,但仍然可以查询到考试记录,不会影响到就业求职,如果…

2.6 TCP与UDP的可靠性传输

目录 一、TCP可靠性传输1、重传机制1.1、超时重传1.2、快速重传1.3、SACK1.4、Duplicate SACK 2、滑动窗口3、流量控制3.1 滑动窗口与流量控制3.2窗口关闭 4、拥塞控制4.1拥塞窗口4.2 慢启动4.3 拥塞避免4.4 拥塞发生4.5 快速恢复 二、UDP可靠性传输1、主要策略2、重传机制2.1 …

基础知识学习---牛客网C++面试宝典(六)操作系统--第二节

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应…

湖南大学CS-2017期末考试解析

【特别注意】 答案来源于@wolf 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。 【试卷与答案】 一.(6 分,每空 0.5 分) 下表中%r1,%r2 为两个四位的寄存器,请仿照第一行…

考虑3D海底环境的风电场集电系统

摘要 风能是目前国内外应用较为广泛的一种绿色可再生能源,近几年我国风电产业的发展十分迅速。然后,越来越多的风力发电系统建并网,风力发电产生的电能受外界因素影响较大,具有一定的随机性和波动性,给并网后的电力系统…

代码随想录算法训练营第三十五天| 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

柠檬水找零 题目链接:力扣 这道题 我一开始用纯模拟的方法也能写出来,后来发现和卡哥给的答案差不多,其贪心的点在: 当账单是20的情况,优先消耗一个10和一个5因为美元10只能给账单20找零,而美元5可以给账…

为什么要进行基坑监测,基坑监测包括哪些内容?

首先我们来了解一下为什么要进行基坑监测?基坑作为基础建设的底层组成成分,关系着上层建筑的稳固安全,进行基坑监测主要是为了确保工程的安全、有效地管理工程施工,以下是具体的原因介绍: 1. 减少工程风险:…

服务限流算法

服务限流算法有哪些 计数器法(固定窗口):原理就是限制每秒处理请求数不超过阈值。比如一个接口一分钟可以处理1000次请求,那么可以设置一个计数器,当有一次请求过来,计数器就加1,如果一分钟以内…

【分布式存储】聊一下分布式存储之复制机制

上一篇文章中,主要聊了下数据分片的主要内容,我们知道,**通过数据分片其实可以解决数据存储的高性能以及可拓展,但是也导致了用join和使用分布式事务进行查询和存储数据的问题,**属于按下葫芦浮起瓢。但是在分布式领域…

【大数据之Hive】十一、Hive-HQL查询之基本查询

基础语法 select [all | distinct] select_expr,select_expr, ...from table)name --从什么表查[where where_condition] --过滤[group by col_list] --分组查询[having col_list] --分组后过滤[order by col_list] --排序[cluster by col_list | …

基础知识学习---牛客网C++面试宝典(七)操作系统--第三节

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应…

从 数据工程 到 Prompt 工程

动动发财的小手,点个赞吧! 数据工程构成了数据科学过程的很大一部分。在 CRISP-DM 中,这个过程阶段称为“数据准备”。它包括数据摄取、数据转换和数据质量保证等任务。在本文[1]章中,我们使用 ChatGPT 和 Python 解决了典型的数据…

用HTML5制作精美战机游戏

每天要被大学老师催H5作业👏🏻👏🏻👏🏻 不如看看本文,代码齐全,直接用来做参考案例👌🏻 干货满满不看后悔👍👍👍 代码…

用友畅捷通CRM SQL注入漏洞复现

0x01 产品简介 用友畅捷通CRM是面向小企业全力打造的简单、实用的客户关系管理应用。帮助企业用好自己的客户资源、管好商机跟进过程、引导好业务员跟单行为,促进团队销售能力的提升;通过查询和分析,识别企业的价值客户,融合电话、…

JUC笔记(二)

多线程编程核心 在前面,我们了解了多线程的底层运作机制,我们终于知道,原来多线程环境下存在着如此之多的问题。在JDK5之前,我们只能选择synchronized关键字来实现锁,而JDK5之后,由于volatile关键字得到了…

湖南大学CS-2021期末考试解析

【特别注意】 答案来源于@wolf 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 有必要一做。 【试卷与答案】 1.简答题(10 分) 小明设计了一款机器,整数和浮点数都占 10 个 bit,其中整数采用补码表示,浮点数采用 IEEE 754 标准。 (1)…

matlab横向连接字符组成文件路径

f fullfile(myfolder,myfile.tif) %字符串中不包含反斜杠 f strcat(myfolder\,myfile.tif) %字符串中包含反斜杠,strcat函数直接拼接得到的结果一致

【软件测试】测试用例设计要点总结

文章目录 考试题型简答题(一) 等价类划分1.1 划分等价类1.2 设计测试用例 (二) 边界值分析2.1 列出边界值分析表2.2 设计测试用例 (三) 因果图分析3.1 确定原因和结果3.2 确定原因和结果之间的逻辑关系3.3 在因果图上使用标准的符号标明约束条件 (四) 判定表驱动4.1 将因果图转…

【轻量化网络系列(7)】EfficientNetV2论文超详细解读(翻译 +学习笔记+代码实现)

前言 今天我们要学习的是EfficientNetV2 ,该网络主要使用训练感知神经结构搜索和缩放的组合;在EfficientNetV1的基础上,引入了Fused-MBConv到搜索空间中;引入渐进式学习策略、自适应正则强度调整机制使得训练更快;进一…

深入了解 OkHttp 协议:优雅的网络请求框架

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…