实用篇-认识微服务

 一、服务架构演变

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.rhkb.cn/news/171630.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP发起请求与收到响应的大致过程

可以《《透视 HTTP 协议》Windows 10 搭建最小实验环境》搭建环境,之后才能进行下边的操作。 1.鼠标左键点击两下www目录下的start.bat批处理文件。 2.打开Wireshark,然后选择Adapter for loopback traffic capture。 3.然后把tcp.port 80 || udp.…

【广州华锐互动】智能家居设计3D虚拟还原系统

随着科技的飞速发展,人们对家居生活的需求也在不断提高。智能家居作为一种新兴的生活方式,正逐渐成为现代人追求的理想居住环境。而智能家居设计3D虚拟还原系统,正是为了让人们更好地了解和体验智能家居带来的便捷与舒适,让未来生…

centos服务器搭建安装Gitlab教程使用教程

1、更新服务器: sudo yum update -y && sudo yum upgrade -y 2、下载Gitlab的RPM包 https://packages.gitlab.com/gitlab/gitlab-cece表示开源el表示centos 选64位el8对应CentOS8 本教程以centos8为例,在服务器中,下载centos8的…

网络通信 | 内网穿透

内网穿透 / 获取临时域名 : 下载且安装软件 : cpolar获得 “Authtoken” 且配置 cpolar ,生成“内网穿透”工具配置文件启动服务,临时获取到一个IP地址 (临时域名) 让当前 电脑能获取一个公网的IP地址,让微信后台能调用到当前外卖系统的后端服…

设计模式之桥梁模式

什么是桥梁模式 桥梁模式(Bridge Pattern)也称为桥接模式,属于结构型模式,它主要目的是通过组合的方式建立两个类之间的联系,而不是继承。桥梁模式将抽象部分与它的具体实现部分分离,使它们都可以独立地变…

第十六章 反射与注解

所有 Java 类均继承了 bjet 类,在 Object 类中定义了一个 getClass0方法,该回一个类型为Class的对象。例如下面的代码: JTextField textField new JTextField();//创建JTextField对象 Class textFieldC textField.getClass();//获取Class对象 利用Cla…

GoLong的学习之路(十三)语法之标准库 log(日志包)的使用

上回书说到,flag的问题。这回说到日志。无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯。 文章目录 log配置logger配置日志前缀配置日志输出位置自定义logger …

苹果秋季发布会官宣,新款Mac将搭载M3芯片,来势迅猛!

苹果宣布将于 10 月 31 日上午 8 点(北京时间)举行发布会,这次发布会的主题是「来势迅猛」,旨在为全球的苹果粉丝和科技爱好者带来令人期待的新品发布。这次发布会引人瞩目,因为它将聚焦在 Mac 系列产品以及全新的 M3 …

I/O 模型学习笔记【全面理解BIO/NIO/AIO】

文章目录 I/O 模型什么是 I/O 模型Java支持3种I/O模型BIO(Blocking I/O)NIO(Non-blocking I/O)AIO(Asynchronous I/O) BIO、NIO、AIO适用场景分析 java BIOJava BIO 基本介绍Java BIO 编程流程一个栗子实现…

系列十八、请描述下bean的生命周期

一、概述 bean的生命周期是指bean从创建到销毁的整个过程。 二、生命周期 bean的生命周期是指bean从创建到销毁的整个过程,大致可以分为如下四个过程: 2.1、实例化 实例化可以通过如下几种方式完成:(参考系列十五&#xff09…

王道p149 7.二叉树按二叉链表形式存储,写一个判别给定二叉树是否是完全二叉树的算法(c语言代码实现)

采用层次遍历算法,将所有结点加入队列(包括空结点)。 如果没有左孩子,就看有没有右孩子,如果有右孩子,那么不为完全二叉树。 如果有左孩子,且之前不存在缺孩子的结点,左孩子进队,如果有右孩子…

树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统

树莓派基金会(Raspberry Pi Foundation)近日发布了新版基于 Debian 的树莓派操作系统(Raspberry Pi OS),为树莓派单板电脑带来了新的书虫基础和一些重大变化。 新版 Raspberry Pi OS 的最大变化是它现在基于最新的 Deb…

QQ云端机器人登录系统php源码开心版

可能很多人不知道这源码有什么用,这款源码主要是针对群机器人爱好者的, 这是一个通过对接挂机宝里面机器人框架的一个网页站点, 用户通过网页登录 QQ 账号至挂机宝里面框架(可扫码登录、账密登录、跳转 QQ 快捷登录)…

JAVA毕业设计104—基于Java+Springboot+Vue的医院预约挂号小程序(源码+数据库)

基于JavaSpringbootVue的医院预约挂号小程序(源码数据库)104 一、系统介绍 本系统前后端分离带小程序 小程序(用户端),后台管理系统(管理员,医生) 小程序: 预约挂号,就诊充值&…

sqoop和flume简单安装配置使用

1. Sqoop 1.1 Sqoop介绍 Sqoop 是一个在结构化数据和 Hadoop 之间进行批量数据迁移的工具 结构化数据可以是MySQL、Oracle等关系型数据库 把关系型数据库的数据导入到 Hadoop 与其相关的系统 把数据从 Hadoop 系统里抽取并导出到关系型数据库里 底层用 MapReduce 实现数据 …

【LeetCode每日一题合集】2023.10.16-2023.10.22(只出现一次的数字Ⅲ)

文章目录 260. 只出现一次的数字 III⭐(异或)🐂2652. 倍数求和解法1——枚举模拟解法2—— O ( 1 ) O(1) O(1)容斥原理相似题目——1201. 丑数 III(二分查找容斥原理) 2530. 执行 K 次操作后的最大分数解法1——贪心优…

【算法】滑动窗口题单——4.不定长滑动窗口(求子数组个数)

文章目录 前言2799. 统计完全子数组的数目解法1——枚举右端点,移动左端点解法2——枚举左端点,扩展右端点 713. 乘积小于 K 的子数组1358. 包含所有三种字符的子字符串数目2302. 统计得分小于 K 的子数组数目2537. 统计好子数组的数目2762. 不间断子数组…

<蓝桥杯软件赛>零基础备赛20周--第2周

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…

假脱机技术(SPOOLing技术)

文章目录 1.什么是脱机技术1.脱机技术解决的问题 2.假脱机技术的实现原理1.输入井和输出井2.输入进程和输出进程3,输入缓冲区和输出缓冲区 3.共享打印机的原理分析1.把独占式的打印机改造成共享设备 1.什么是脱机技术 脱机:脱离主机的控制进行的输入输出操作。 批处…

在声明和定义的一些小坑

1、静态成员变量的初始化 静态成员变量声明在 .h 头文件文件中,初始化应该在 .cpp 源文件中 就会出现"找到一个或多个多重定义的符号",下面的错误 class MyString{public:typedef char* iterator;typedef const char* const_iterator;iterator begin();…