微服务框架SpringCloud从入门到通神(持续更新)

news2024/11/20 21:16:36

SpringCloud——>SpringBoot——>JavaWeb
微服务技术栈导学1
哔站up黑马程序员主讲老师,一上来就给介绍了SpringCloud出现的背景:微服务是分布式架构的一种,分布式架构就是要把服务做拆分,而SpringCloud只是解决了服务拆分式的治理问题,至于其他的一些问题并没有给出解决方案,所以一个完整的微服务技术,包含的不仅仅是SC(SpringCloud)。
SC第一件要做的事情就是分:
将一个单体项目拆分为多个独立的项目,把独立的项目成为服务
一个业务往往需要服务集群(多个服务)来构建:
在这里插入图片描述
至此,当一个请求来的时候,各服务之间会进行相互调用,当业务越来越复杂的时候,调用也越来越复杂

在这里插入图片描述
此时,他们之间的调用关系让程序员来记录和维护是不可能的,所以需要一个注册中心来存储每一个服务的IP和端口,当一个服务需要调用另一个服务时,直接向注册中心拉取或注册服务信息。

在这里插入图片描述
有时我们需要对服务的配置进行修改,为了提高修改效率,便有了统一的配置中心,它可以通知个服务进行相应的修改,如果将来你需要配置一些服务的细节,直接找配置中心就好。
在这里插入图片描述
之前我们说每一个服务都有IP和端口,但是用户在访问时,如何将对应的服务返回给用户,换句话说用户想要的服务怎么跟服务集群中的服务相对应起来,那便是设置服务网关,这个网关既可以可以将用户路由到对应的服务,也可以在此过程中做一些负载均衡。

在这里插入图片描述
数据库虽然集群,但是总归没人多,所以数据库扛不住那么多的高并发,所以加入了分布式缓存,就是把数据库数据放到内存当中(数据库数据一般存储在硬盘中)以此来缓解数据库的压力,用户请求先到缓存,未命中再访问数据库,但是一些海量数据的搜索与统计分析缓存做不了,这时候我们需要用到分布式搜索,那数据库将来的职责就是,其实就是做一种数据的写操作,还有一些事务类型对数据安全要求比较高的数据存储,
在这里插入图片描述最后在微服务里面还需要一种异步通信的消息队列组件,为什么呢?因为一条请求之后,要调用多个服务,比如A服务调用B服务,B服务调用C服务,这个调用时长啊就等于每个服务执行时长之和,所以性能是有一定下降的,而异步通信的意思就是,请求来了,我调用了服务A,A不再调用BC,而是发条消息通知他们,带干活了,这样A干完就可以直接结束,执行时间也就缩短了,吞吐能力也就变强了,所以异步通信可以提高并发能力,所以在一些秒杀的高并发场景下就可以应用了。

在这里插入图片描述
那么这如此庞大的服务在运行的过程当中,如果出现了什么问题,人工排查起来那将是一场灾难,所以我们要给出一些解决方案,有两个,分布式日志服务和系统监控链路追踪,其中分布式日志服务可以统计成百上千服务的日志,统一地做一个存储,统计和分析,到时候出现问题就比较好定位;系统监控链路追踪它可以实时监控每一个服务结点的CPU负载,内存的占用等等情况,这两个解决方案都可以帮助我们快速定位问题所在的位置。

在这里插入图片描述

这样一个有成百上千个服务的微服务,我们部署要怎么部署呢?答案是采用自动化的部署,利用Jenkins可以将你的服务项目进行自动化的编译再基于docker打包形成镜像,再基于kubernetes和RANCHER去实现自动化的部署。
在这里插入图片描述
微服务技术栈导学2
学习内容大致分为五个部分
在这里插入图片描述

主讲师说,我们平时学的百分之二十的内容足以应对百分之八十的工作内容(没找到过工作,不知道真假,不过参考一个梗,面试造火箭,工作拧螺丝,应该不是空穴来风?)
为了提高学习效率,分为三个层级一一讲解,难度递增,从实用到高级再到面试。

在这里插入图片描述
这一整套跟下来,我们最后会有一个项目供大家参考学习
在这里插入图片描述
今日课程介绍1

在这里插入图片描述
内容简介:

  • 单体架构和微服务架构的区别,以及为什么要用微服务架构
  • 单体架构和分布式服务架构的具体代码上的区别
  • 学习一个名为eureka的注册中心来实现服务治理
  • 学习一个由阿里巴巴最新研发的nacos注册中心,以及这两个注册中心的区别是什么

认知微服务
服务架构演变与SC
在这里插入图片描述

单体架构也会有负载均衡哦,但是单体架构最致命的缺点就是耦合度高,像大型互联网公司,例如某宝,某东,某夕夕,他们的项目有成千上万的功能,那代码就是几十万行,光是编译和打包估计就得花十几分钟,这效率多低啊,而且所有的功能堆在一起,代码业务你中有我我中有你,他们之间的边界也越来越模糊 ,将来你改了一个地方的代码,其他地方的代码也收到影响,可以说是牵一发而动全身,所以大型项目一定会用分布式架构。
在这里插入图片描述
那么在拆分的过程中也会有一些问题,服务拆分是一方面,拆分好的服务要保证高可用,所以得有集群
在这里插入图片描述
还有一个问题,在单体项目中,如果我们的商品功能要调用订单模块,我们直接调用就可以,它是在一个项目中的,但是分布式架构,服务是部署在独立的机器上的,这时就不能再调用它的代码了,所以要考虑服务之间的远程调用,还要考虑一些其他的问题:

在这里插入图片描述

  • 服务粒度,这个服务具体要拆分到什么程度?
  • 服务集群,到时候肯定一个服务要集群到上百台机器,那我要调用你的服务,我怎么知道你上百台机器的地址,肯定不能写死,万一上线之后又变了呢?所以地址一定要方便维护
  • 服务健康状况,我要调用你的服务,我怎么知道你的服务是好的?万一你的服务挂了,我来调用你,导致我这也出问题了,这叫级联式反应
    为了解决这些问题,衍生了各种解决方案例如webservice、ESB、Dubbo、SC,但是近几年最火的解决方案无疑是是微服务方案了。
    在这里插入图片描述
    核心思想就是,高内聚低耦合,降低服务之间的联系,最后总结一下:
    在这里插入图片描述
    注意:分布式架构具有松耦合的特点,而微服务是分布式架构的一种,它是一种良好的分布式架构方案,且微服务把这种松耦合的特点发挥到极致,它拆分的粒度更小了,所以带来的代价便是架构复杂,运维、监控和部署的难度提高。

微服务结构:
在这里插入图片描述
对于微服务要实现的内容大概就是四个部分:服务网关、注册中心、配置中心和服务集群。常见的实现方式就是SC和Dubbo,但是这两个在一些实现细节上有所差异:
在这里插入图片描述
阿里巴巴之所以成为大厂不是没有原因的呀,其早在2012年就研究起了基于远程调用服务的技术Dubbo,可以说是走在了技术的前列,SC并不是一下子发明出来的,而是融合了全球各个优秀的开源项目,将他们整合在一起形成了一种完整额微服务体系。
由上图我们知道,SCalibaba它既有springcloud又有alibaba早期自己的组件,可以说即满足了用springcloud开发的企业,又满足了早期使用dubbo技术开发的企业。
目前大部分企业的技术栈基于以下四种类型:
在这里插入图片描述
其中上面两种属于一类,因为服务接口和调用都采用Restful风格和Feign方式。
而下面两种属于一类,因为服务接口和调用都采用Dubbo
认识微服务-SC
在这里插入图片描述
下图,SC和SB的版本一定要一一对应,否则可能会报错
在这里插入图片描述
服务拆分
在这里插入图片描述
比如说我们现在有一个需求,查询订单的同时把订单中关联的用户信息,商品信息都要查,那么如果在单体架构中,我肯定是写一个方法是查订单,在查询过程中得到了用户ID,我再去数据库里把用户查出来,得到商品ID,我再去数据库里把商品查出来,那么这些功能全部写在了订单模块里,这种做法是完全违背了微服务的原则的,而且用户功能和商品功能都可以查询,那么这个业务也是不是重复开发了呢?
所以微服务一定要遵守单一原则。
每个微服务都有自己的数据库,是的数据库存储谁相应的信息,用户微服务的数据库就存储用户相关的数据,而不存储其他订单,商品等数据。
但同时要实现业务需求,我们要查询订单的同时获取用户信息,怎么办呢?那就是各服务要暴露相关的接口。

持续更新中…

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

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

相关文章

FTP协议原理简析

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。21端口用于建立控制连接,并传输FTP指令。20端口用于建立数据连接,传输数据流。 一:FTP功能简介 1:FTP服务器能够进行档案的传输与管理功能; 2:可以…

招生简章 | 欢迎报考中科院空天院网络信息体系技术重点实验室(七室)

官方公众号链接:招生简章 | 欢迎报考中科院空天院网络信息体系技术重点实验室(七室) 招生简章 | 欢迎报考中科院空天院网络信息体系技术重点实验室(七室) 中国科学院空天信息创新研究院(简称空天院&#x…

【实战篇】38 # 如何使用数据驱动框架 D3.js 绘制常用数据图表?

说明 【跟月影学可视化】学习笔记。 图表库 vs 数据驱动框架 图表库只要调用 API 就能展现内容,灵活性不高,对数据格式要求也很严格,但方便数据驱动框架需要手动去完成内容的呈现,灵活,不受图表类型对应 API 的制约…

Smart Finance成为火必投票竞选项目,参与投票获海量奖励

最近,Huobi推出了新一期的“投票上币”活动,即用户可以通过HT为候选项目投票,在投票截止后,符合条件的优质项目将直接上线Huobi。而Smart Finance成为了新一期投票上币活动的竞选项目之一,并备受行业关注,与…

C++ 命令模式

什么是命令模式? 将请求转换为一个包含与请求相关的所有信息的独立对象。从而使你可以用不同的请求方法进行参数化,并且能够对请求进行排队、记录请求日志以及撤销请求操作。命令模式属于行为设计模式 如何理解命令模式 命令模式很像我们订外卖&#…

Hudi(10):Hudi集成Spark之并发控制

目录 0. 相关文章链接 1. Hudi支持的并发控制 1.1. MVCC 1.2. OPTIMISTIC CONCURRENCY 2. 使用并发写方式 3. 使用Spark DataFrame并发写入 4. 使用Delta Streamer并发写入 0. 相关文章链接 Hudi文章汇总 1. Hudi支持的并发控制 1.1. MVCC Hudi的表操作,如…

阿里云 EDAS Java服务日志中打印调用链TraceId

最近要搭建阿里云的日志服务SLS,收集服务日志,进行统一的搜索查询。但遇到一个问题如何在日志中打印链路的TraceId,本文章记录一下对EDAS免费的解决方法。 先看一下阿里官方文档 业务日志关联调用链的TraceId信息 从文档上看,想要…

基于SSM的资源发布系统

项目介绍: 该系统基于SSM技术,数据层为MyBatis,数据库使用mysql,MVC模式,B/S架构,具有完整的业务逻辑。系统共分为管理员,用户两种角色,主要功能:登陆注册,用…

数据结构:跳表

文章目录跳表跳表的由来单链表的查找效率太低提高单链表的查找效率跳表的时间复杂度分析跳表的空间复杂度分析跳表的插入操作跳表的删除操作跳表索引动态更新跳表 对链表进行改造,在链表上加多级索引的结构就是跳表,使其可以支持类似“二分”的查找算法。…

Redis查询之RediSearch和RedisJSON讲解

文章目录1 Redis查询1.1 RedisMod介绍1.2 安装Redis1.3 RediSearchRedisJSON安装1.3.1 下载安装1.3.2 修改配置1.4 RedisJSON操作1.4.1 基本操作1.4.1.1 保存操作JSON.SET1.4.1.2 读取操作JSON.GET1.4.1.3 批量读取操作JSON.MGET1.4.1.4 删除操作JSON.DEL1.4.1.5 其他命令1.4.1…

鲲鹏Bigdata pro之Hive的基本操作(创建表、查询表)

1 介绍 本文主要依据《鲲鹏Bigdata pro之Hive集群部署》实验教程上的Hive操作例子讲解,方便大数据学员重用相应的操作语句。同时对实验过程中出现的问题给以解决方法,重现问题解决的过程。以让大家认识到,出现问题很正常;同时&am…

Java设计模式中接口隔离原则是什么?迪米特原则又是什么,啥又是合成复用原则,这些又怎么运用

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 3.5 接口隔离原则 3.5.1 特点 使用的类不应该被迫依赖于不想使用的方法,应该依赖接口方法 3.5.2 案例(安全门) 防火功能代码 public interface Fi…

第一章:统计学习方法概论

大纲1.1统计学习的特点1.2统计学习方法步骤1.3 统计学习的分类基本分类:1.4 监督学习方法的三要素模型:条件概率分布P(Y∣X)P(Y|X)P(Y∣X)或决策分布Yf(X)Yf(X)Yf(X)策略:在所有假设空间中选择一个最优模型注意事项:算法&#xff…

Java设计模式中适配器模式是什么/适配器模式可以干什么/又如何实现

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 5.3 适配器模式 5.3.1 概述 将一个类的接口转换为客户希望的另一种接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作分为类适配器模式和…

一套采用ASP.NET开发的工作通OA协同办公系统源码 流程审批 公文流转 文档管理

分享一套采用ASP.NET基于C#开发,使用桌面式的OA协同办公系统,超好用户体验效果的后台管理界面,集成 资讯、邮件、日程、文档(在线文件档案管理)、流程审批、公文流转、沟通与分享(在线聊天和内部论坛&#…

基于LLVM的C编译器--lcc——以CLion用SSH连接WSL Ubuntu22.04为例

Windows 10 22H2CLion 2022.3.1Ubuntu 20.04 (Microsoft Store内的WSL发行版) 一、下载WSL,换源,切换到WSL2 1.1 保证windows版本 在设置->系统->关于中查看 必须是win10及以上对于x64系统:版本1903或更高版…

ArcGIS基础实验操作100例--实验63由图片创建点符号

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验63 由图片创建点符号 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

Java设计模式中代理模式是什么/JDK动态代理分为哪些,静态代理又怎么实现,又适合哪些场景

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 5.结构型模式 5.1 概述 根据如何将类或对象按某种布局组成更大的结构,分为类结构模式和对象结构模式,前者采用继承机制来组织接口和类&am…

视频序列对比学习

前言 视频embedding化也即表征有很多实际的应用场景,比如文本-视频 pair的检索等等。由于视频一般来说较长,所以对于给定的一段话,其中的某些sentence句子一般对应着视频中某几个clip片段,之前常规的做法都是去匹配所有的sentence…

人工服务、人工智能和分析是联络中心的主要趋势

数字联络中心提供商 IPI 宣布了其对 2023 年的预测。IPI 非常重视提供卓越的客户联系,认为未来一年将由以下趋势定义:专注于人工服务;增加对人工智能和自动化的采用;以及更多地使用数据和分析。 关注人性化服务 据 IPI 称&#…