实用篇-认识微服务

news2024/10/6 12:32:06

 一、服务架构演变

1. 单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署

单体架构的优点:

  • 架构简单
  • 部署成本低

单体架构的缺点: 

  • 耦合度高

2. 分布式架构 

分布式架构: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务

分布式架构的优点:

  • 降低服务耦合
  • 有利于服务升级拓展

分布式架构需要考虑的问题:

  • 服务拆分粒度如何?
  • 服务集群地址如何维护?
  • 服务之间如何实现远程调用?
  • 服务健康状态如何感知?

哪些分布式技术可以解决分布式架构问题?

  • WebService
  • Hession
  • ESB
  • Dubbo (2012年由阿里巴巴开源)
  • SpringCloud (2015年至今是其发展最为火热的时期)
  • SpringCloudAlibaba (2018年至今是其发展最为火热的时期)

但是近几年应用最广泛的,最火热的莫过于微服务方案

3. 微服务

微服务是一种经过良好架构设计的分布式架构方案

微服务架构特征:

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

微服务优点:拆分粒度更小、服务更独立、耦合度更低

微服务缺点:架构非常复杂,运维、监控、部署难度高

二、微服务技术对比

1. 微服务结构

为了描述方便,把一个完整项目里的小服务称为微服务(或叫节点),这些微服务的整体称为集群,关系如下

项目 > 集群 > 微服务 > 业务 > 接口

从整体上来看,目前SpringCloud的应用量最大,并且逐年在增长;而Dubbo虽然是国内使用较多的RPC框架,但在微服务场景下的应用相对较少。SpringCloudAlibaba相对于前两者还比较年轻,但是由于集成了众多优秀的Alibaba组件,以及其在国内云原生和微服务落地方面的独特优势,因此得到了广泛的应用和关注

这三个技术栈的使用强度排序: SpringCloud > SpringCloudAlibaba > Dubbo

2. 技术对比

这三个技术栈的对比如下

相同点:

  • 都需要去做微服务拆分,也就是把一个完整的项目,根据功能拆分成很多微服务,再把这些拆下来的微服务做成集群。集群里的每个微服务都要遵循单一职责的原则,并且要面向服务,对外暴露接口,这样的话,集群里的微服务之间就可以相互调用
  • 由于项目会拆分成多个微服务,为了方便同时管理这些微服务(微服务之间的调用关系),就需要 '注册中心',用来拉取或注册服务信息
  • 由于项目会拆分成多个微服务,为了方便同时管理这些微服务(每个微服务的配置),就需要 '配置中心',用来统一管理整个集群的微服务的配置
  • 由于项目已经拆分成多个微服务,用户到底访问哪个微服务呢,就需要在集群做一个统一的网关,作用是作为用户访问微服务的入口

不同点:

例如同样是注册中心,但是Dubbo、SpringCloud、SpringCloudAlibaba所用的技术不同。如下表

'无' 表示没有实现这个技术

Dubbo

SpringCloud

SpringCloudAlibaba

zookeeper、Redis

Eureka、Consul

Nacos、Eureka

Dubbo协议

Feign (http协议)

Dubbo、Feign

SpringCloudConfig

SpringCloudConfig、Nacos

SpringCloudGateway、Zuul

SpringCloudGateway、Zuul

dubbo-admin,功能弱

Hystrix

Sentinel

 三种常用的技术栈,不同的技术栈是可以混合使用,那当这仨技术栈混合使用时,会有什么特点呢,如下图

三、SpringCloud

SpringCloud是目前国内乃至全世界使用最广泛的微服务框架

官网地址:

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

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,也就是说SpringCloud的底层基于SpringBoot做了自动装配。从而提供了良好的开箱即用体验,如下

// 服务注册发现
Eureka、Nacos、Consul
// 服务远程调用
OpenFeign、Dubbo
// 服务链路监控
Zipkin、Sleuth
// 统一配置管理
SpringCloudConfig、Nacos
// 统一网关路由
SpringCloudGateway、Zuul
// 流控、降级、保护
Hystix、Sentinel

SpringCloud和SpringBoot的版本兼容关系:

SpringCloud版本

SpringBoot版本

2022.0.x aka Kilburn

3.0.x

2021.0.x aka Jubilee

2.6.x(小于2021.0.3用这个) 或 2.7.x(大于等于2021.0.3用这个)

2020.0.x aka Ilford

2.4.x(小于2020.0.3用这个) 或 2.5.x(大于等于2020.0.3用这个)

Hoxton

2.2.x(小于SR5用这个) 或 2.3.x(大于等于SR5用这个)

Greenwich

2.1.x

Finchley

2.0.x

Edgware

1.5.x

Dalston

1.5.x

在下面的正式学习中,我们使用的是Hoxton的SR10版本,所以对应的SpringBoot版本是2.3.x版本

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

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

相关文章

nvm安装与使用详解(Window11)

文章目录 前言一、卸载 node.js卸载清理缓存(有的不执行此步骤后面会报错) 二、下载 nvmnvm 下载点开链接之后如图鼠标鼓轮往下滑下载完成后解压打开检查是否安装成功 三、安装多个 node.js 版本nvm 常用命令安装 nodenvm使用 四、删除 nvm删除文件夹删除…

10月26日星期四今日早报简报微语报早读

10月26日星期四,农历九月十二,早报微语早读分享。 1、神十七瞄准10月26日11时14分发射,汤洪波唐胜杰江新林执飞; 2、交通运输部:2024年春节除夕至初八小客车免通行费; 3、6个经济大省“三季报”&#xf…

Unable to find GatewayFilterFactory with name TokenRelay

目录 问题分析解决方案参考文档开源项目微服务商城项目前后端分离项目 问题分析 Spring Cloud Gateway 网关作为代理资源服务器,需要将 JWT 传递给下游资源服务器,下面是网关的配置 spring:cloud:gateway:discovery:locator:enabled: true # 启用服务发…

电力系统保卫战:迅软DSE加密系统的关键角色

随着信息技术的高速发展和广泛应用,数据作为业务的重要支撑需要精细和可控。电力电网行业信息系统作为国家关键重要基础设施,在数据方面的安全防护能力,已成为电力电网业务安全稳健运行的重中之重,数据安全所面临的危险已渗透到电力电网企业生产、经营的各个方面&am…

ATFX汇市:欧央行利率决议来袭,能够逆转欧元跌势吗?

ATFX汇市:今日20:15,欧央行公布10月利率决议结果,金融机构普遍预期欧央行将按兵不动。至10月26日欧洲央行主要再融资利率的前值为4.5%,预期值持平。当日20:45,欧洲央行行长拉加德召开货币政策新闻发布会,重…

美国访问学者申请签证的五点建议

当你计划成为一名美国访问学者时,申请签证是其中一个必要的步骤。签证申请程序可能会有一些复杂,但如果你遵循以下五点建议,你将更有可能成功获得签证,顺利开始你的学者之旅。 1.早做准备,提前规划:在申请签…

2023探寻室内设计的新趋势与即将流逝的旧潮流

起初认为,”室内设计趋势 “可能是一个矛盾的术语。家具、纺织品、艺术品和墙面装饰都太繁琐、太昂贵、太持久,不可能经常更新。 然而,钟摆确实在摆动,尽管摆动的时间长达数年或数十年:20 世纪 70 年代铺着长毛地毯的波…

几个常用的nosql数据库的操作方式

dynamoDB 键 partition key:分区键 定义:分区键是用于分布数据存储的主键,每个项(Item)在表中都必须有一个唯一的分区键值。 特点: 唯一性:每个分区键值在表中必须是唯一的,这是因为…

檢測項目簡體字

某些項目可能要求代碼中不允許使用簡體字 安裝stcheck檢查 yarn add stcheck --dev在項目根目錄創建 st.config.json 文件 {"patterns": ["./**/*.(ts|js|tsx|jsx|vue|html)","!**/node_modules/**","!.git/**"],"gitignore&q…

可用于嵌入各种功能的STSPIN820、STSPIN830、STSPIN240、STSPIN233电机驱动器 功率 MOSFET

STSPIN电机驱动器是一系列IC,面向采用各种额定功率、电机类型和各种系统分区的应用。STSPIN电机驱动器可用于嵌入各种功能,以最高精度驱动电机。这些功能包括可减轻主机微控制器负担的高级运动轮廓生成器,以及全面的保护和诊断特性。 STSPIN…

2023.10.26-SQL测试题

employee表: department表: job表: location表: 题目及答案: -- (1).查询工资大于一万的员工的姓名(first_name与last_name用“.”进行连接)和工资-- select CONCAT(first_name,.,last_name) as 姓名 ,salary -…

第12期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?

什么是微服务理解: SpringCloudNetflix解决的问题理解: SpringCloudNetflix核心点: 注册中心:Eureka负载均衡:Ribbon、Feign服务熔断:Hystrix服务降级:Hystrix服务监控:Hystrix Da…

Java 脚本实现mongo中某一个库中的表数据,导出到另外一个mongo数据库中

以下是在代码中使用的 MongoDB Java 驱动的 Maven 依赖: <dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId>

哪一个更好?Spring boot还是Node.js

前言 本篇文章有些与众不同&#xff0c;由于我自己手头有些关于这个主题的个人经验&#xff0c;受其启发写出此文。虽然SpringBoot和Node.js服务于很不一样的场景&#xff0c;但是这两个框架共性惊人。其实每种语言都有不计其数的框架&#xff0c;但仅仅一部分是真正卓越的。如…

OpenCV 画极线

from pylab import * import cv2from backend._gs_ import stereo_cameradef compute_epipole(F):""" 从基础矩阵 F 中计算右极点(可以使用 F.T 获得左极点)"""# 返回 F 的零空间(Fx0)U,S,V np.linalg.svd(F)e V[-1]return e/e[2]def plot_epi…

安装好cuda后解决torch.cuda.device_count() == 0

更新显卡驱动可以安装高版本的cuda 可以通过打开cmd输入nvidia-smi来查看 所以说不高于12.3的版本都可以安装 cuda版本匹配pytorch版本 打开网址&#xff1a;https://pytorch.org/ 验证完后&#xff0c;就可以吭哧吭哧的去下载安装了 搞完后还是发型代码跑出来GPU 0 不要…

工频电磁波对电子管的干扰

电磁干扰&#xff08;EMI&#xff09;是玩电子管绕不开的话题&#xff0c;特别是一些电磁环境恶劣的位置&#xff0c;对电子管的干扰是不可忽视的。 前段时间完成1AE4电子管混合放大耳放之后&#xff0c;发现有持续的嗡声&#xff0c;在四周安静的时候能够清晰的听到噪音&…

数字化时代,企业如何实现精细化管理来提高自身驱动力

作为“世界工厂”的中国&#xff0c;制造业一直是优势产业。制造业是现代国民经济和综合国力的重要支柱&#xff0c;其制造业的生产总值一般占一个国家国内生产总值的20%&#xff5e;55%。2022年&#xff0c;中国制造业增加值占 GDP 比重达到 27.69%&#xff0c;规模达到 4.35万…

jenkins、ant、selenium、testng搭建自动化测试框架

如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入&#xff0c;然后写一些测试脚本&#xff0c;这就是你所说的自动化测试&#xff0c;其实这个还不能算是真正的自动化测试&#xff0c;你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗&#xff…