【SpringCloud】认识微服务


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


认识微服务

  • 一、 服务架构演变
    • 1.1 单体架构
    • 1.2 分布式架构
    • 1.3 微服务
  • 二、 微服务技术对比
  • 三、 SpringCloud
  • 四、服务拆分及远程调用
    • 4.1 服务拆分
    • 4.2 服务间调用

一、 服务架构演变

1.1 单体架构

  • 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署
  • 优点:
    • 架构简单,部署成本低
  • 缺点:
  • 耦合度高

1.2 分布式架构

  • 分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
  • 优点:
  • 降低耦合度,有利于服务升级拓展

分布式架构是将一个项目中的不同的需求拆分成了多个模块,每个模块都可以独立开发,互不影响,各个模块最终一起部署,降低了代码的耦合度,但如果项目的需求有很多个,就需要大量的模块,模块数量变多,最终部署的时候就会变得很复杂,再拆分的过程中也会有很多问题,由于拆分好的服务为了保证高可用,还需要集群,与单体架构相比,分布式架构中的某个模块需要另一个模块的提供的信息时不能像单体架构那样直接调用。
此外,采用分布式架构还要考虑很多问题:服务拆分粒度如何(就是指哪些功能可以单独拆分出来)、服务集群地址如何维护(每个拆分的模块都有自己的地址,在部署的时候如何获取这些地址,当地址发生变化该怎么办)、服务之间如何实现远程调用、服务的健康状态如何感知(模块1发生问题挂掉了,模块2去调用模块1也会出现问题)

1.3 微服务

  • 微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立、技术独立、数据独立、部署独立
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

微服务的分布式架构方案将每个小的服务都拆分成单独的模块,使每个模块的功能更少,在开发时不会那么繁琐,每个模块对外都提供访问接口,可以实现对某个模块功能的调用,模块都是独立开发的,相当于一个完整的小的项目,有自己独立的数据库,有自己独立的数据,模块之间不能访问对方的数据,实现了数据解耦,避免了数据污染,模块之间进行调用时,当一个模块发生问题挂掉了,另一个模块需要调用,此时会有一个隔离性的措施,避免模块调用时出现问题

二、 微服务技术对比

  • 微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就SpringCloud和阿里巴巴的Dubbo。

不管是哪种微服务,他们都需要去做微服务的拆分,形成微服务集群,集群中的每个服务都需要遵循单一职责的原则,,并且由于要面向服务,所以每个服务都要对外暴露接口,用于服务之间的调用,不同技术去实现这些接口的方式可能会有所不同,由于这些接口之间的调用关系需要维护,并且这些调用关系错综复杂,而且量也是非常大,所以在微服务中都会有一个注册中心,用来维护微服务里面每个节点的信息,并且监控这些节点的状态,随着微服务越来越多,里面要是有一些配置需要去修改,此时会有一个配置中心,用来统一管理整个微服务群的配置,微服务部署完成后,为服务群会有一个统一的服务网关,用户访问这个网关,由网关把请求路由到微服务群,在路由过程中还可以做负载均衡。

在这里插入图片描述


微服务技术对比:

DubboSpringCloudSpringCloudAlibaba
注册中心zookeeper、redisEureka、ConsulNacos、Eureka
服务远程调用Dobbo协议Feign(http协议)Dubbo、Feign
配置中心SpringCloudConfigSpringCloudConfig、Nacos
服务网关SpringCloudGetway、ZuulSpringCloudGetway、Zuul
服务监控和保护dubbo-admin,功能弱HystrixSentinel

三、 SpringCloud

  • SpringCloud是目前国内使用最广泛的微服务框架,官网地址:https://spring.io/projects/spring-cloud
  • SpringCloud集成了各种微服务功能组件,并基于Spring Boot3实现了这些组件的自动装配,从而提供了良好的开
    箱即用体验
  • SpringCloud与SpringBoot的版本兼容关系:

在这里插入图片描述


四、服务拆分及远程调用

4.1 服务拆分

服务拆分就是一个单体架构按照功能模块进行拆分,变成多个服务
在进行微服务拆分时要注意不同的微服务,不要重复开发相同的业务,避免重复开发,要保证微服务数据的独立,不同的微服务不能访问彼此的数据库,如果一个微服务需要另一个微服务的数据,可以通过接口调用,因为每个微服务都要将自己的部分业务暴露作为接口供其它微服务调用

4.2 服务间调用

  • 注册RestTemplate
@MapperScan("order.mapper")
@SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class,args);}@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}
  • 服务远程调用RestTemplate
@Service
public class OrderService {@Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {//查询订单Order order = orderMapper.findById(orderId);//查询用户String url = "http://localhost:8081/user/" + order.getUserId();User user = restTemplate.getForObject(url,User.class);//封装user信息order.setUser(user);//返回return order;}
}

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

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

相关文章

库存管理与策略模式

库存管理是个难题,涉及到采购、销售、仓储、门店、网站订单各个环节,实物库存和系统库存很难保证完全一致,记得系统刚上线第一天,因为实物库存与导入系统的库存有差异,系统又做了限制系统库存必须大于0才允许销售普通订…

Spring的beanName生成器AnnotationBeanNameGenerator

博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

软件设计原则 1小时系列 (C++版)

文章目录 前言基本概念 Design Principles⭐单一职责原则(SRP) Single Responsibility PrincipleCode ⭐里氏替换原则(LSP) Liskov Substitution PrincipleCode ⭐开闭原则(OCP) Open Closed PrincipleCode ⭐依赖倒置原则(DIP) Dependency Inversion PrincipleCode ⭐接口隔离…

【Oracle】Oracle系列十九--Oracle的体系结构

文章目录 往期回顾前言1. 物理结构2. 内存结构2.1 SGA2.2 后台进程 3. 逻辑结构 往期回顾 【Oracle】Oracle系列之一–Oracle数据类型 【Oracle】Oracle系列之二–Oracle数据字典 【Oracle】Oracle系列之三–Oracle字符集 【Oracle】Oracle系列之四–用户管理 【Oracle】Or…

基于springboot实现人职匹配推荐管理系统演示【项目源码+论文说明】分享

基于springboot实现人职匹配推荐管理系统演示 摘要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于人职匹配推荐系统当然也不能排除在外,随着网络技术的不断成熟,带动了…

ADuM1250 ADuM1251 模块 I2C IIC总线2500V电磁隔离 接口保护

功能说明: 1,2500V电磁隔离,2通道双向I2C; 2,支持电压在3到5.5V,最大时钟频率可达1000KHz; 3,将该隔离模块接入总线,可以保护主MCU引脚,降低I2C总线上的干…

【Java 进阶篇】HTML表格标签详解

HTML(Hypertext Markup Language)表格标签是在网页中用于创建表格的重要工具。表格是一种在网页上以行和列的方式组织和显示数据的有效方式。在本文中,我们将详细介绍HTML表格标签,包括如何创建表格、定义表头、单元格合并等内容。…

应用案例 | dataFEED OPC Suite为化工行业中的质量控制和成本节约提供数据集成方案

一 背景 在当今化工行业中,质量控制对于特种塑料供应商至关重要。一家国际性的特种塑料供应商在全球拥有五个生产基地,每个基地都运行着2-6台塑料挤出机。为了确保塑料质量,他们需要每两小时分析一次挤出样品——导致这项工作占用了较大的生…

WebGoat 靶场 JWT tokens 四 五 七关通关教程

文章目录 webGoat靶场第 四 关 修改投票数第五关第七关 你购买书,让Tom用户付钱 webGoat靶场 越权漏洞 将webgoat-server-8.1.0.jar复制到kali虚拟机中 sudo java -jar webgoat-server-8.1.0.jar --server.port8888解释: java:这是用于执行…

京东数据分析平台:2023年8月京东奶粉行业品牌销售排行榜

鲸参谋监测的京东平台8月份奶粉市场销售数据已出炉! 鲸参谋数据显示,8月份京东平台上奶粉的销售量将近700万件,环比增长约15%,同比则下滑约19%;销售额将近23亿元,环比增长约4%,同比则下滑约3%。…

【React】深入理解React组件状态State

目录 一、何为State二、如何定义State三、如何判断是否为State四、如何正确使用State1、用setState修改State2、State的更新是异步的①、代码示例 3、State更新会被合并①、组件状态例子②、当只需要修改状态title时,只需要将修改后的title传给setState③、React会合…

opencv图像的直方图,二维直方图,直方图均衡化

文章目录 opencv图像的直方图,二维直方图,直方图均衡化一、图像的直方图1、什么是图像的直方图:2、直方图的作用:3、如何绘制图像的直方图:(1)cv::calcHist()函数原型:英文单词 calc…

协议栈——创建套接字

前面几篇文章讲解的是应用程序使用Socket间接通知协议栈进行的连接,通信阶段,那么从现在开始讲解协议栈和网卡驱动的故事 回顾上篇文章,我们从第一阶段创建套接字,协议栈返回描述符讲起~~~ 协议栈结构 首先来看下协议栈的大致结…

计算机视觉: 基于隐式BRDF自编码器的文生三维技术

论文链接: MATLABER: Material-Aware Text-to-3D via LAtent BRDF auto-EncodeR 背景 得益扩散模型和大量的text - image 成对的图片, 现在文生2D的模型已经比较成熟的框架和模型,主流的技术比如说stable diffusion 和 midjourney 以及工业领域runway 等…

计算机毕设 招聘网站爬取与大数据分析可视化 - python 分析 可视化 flask

文章目录 0 前言1 课题背景2 实现效果3 Flask框架4 Echarts5 爬虫6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自…

制作长图海报的详细指南,制作长图海报的5个步骤

制作长图海报是宣传活动、产品或服务的重要方式之一。乔拓云后台提供了丰富的海报模板,让你轻松制作出专业级的长图海报。下面将介绍如何使用乔拓云后台制作长图海报的技巧。 一、选择模板 首先,注册并登录乔拓云后台,进入云设计页面。在选择…

A (1087) : DS单链表--类实现

Description 用C语言和类实现单链表&#xff0c;含头结点 属性包括&#xff1a;data数据域、next指针域 操作包括&#xff1a;插入、删除、查找 注意&#xff1a;单链表不是数组&#xff0c;所以位置从1开始对应首结点&#xff0c;头结点不放数据 类定义参考 #include<…

Qt_基础

目录 1概述1.1 什么是QT1.2 QT的发展史1.3 支持的平台1.4 QT版本1.5 下载与安装1.6 QT的优点1.7 成功案例 2 创建 Qt 项目2.1 使用向导创建2.2 .pro文件2.3 帮助文档(QTcreator自带的)2.4 QT应用程序介绍 3 创建第一个小程序3.1 按钮的创建3.1.1 设置主窗口标题的函数3.1.2 **固…

小谈设计模式(23)—桥接模式

小谈设计模式&#xff08;23&#xff09;—桥接模式 专栏介绍专栏地址专栏介绍 桥接模式主要角色抽象部分实现部分分析 核心思想应用场景123 优缺点分析优点123 缺点12 总结 专栏介绍 专栏地址 link 专栏介绍 主要对目前市面上常见的23种设计模式进行逐一分析和总结&#x…

三极管及继电器的使用(单片机如何控制灯泡等大型电器)

1.对于初入硬件的小伙伴一定会用到三极管和继电器&#xff0c;如下图&#xff08;三极管&#xff09; 如下图&#xff08;继电器&#xff09; 当然上述三极管和继电器&#xff0c;只是众多的其中一种&#xff0c;而且继电器是包装好了的&#xff0c;这个应该叫继电器模块&#…