【退役之重学Java】关于Spring Cloud 微服务和分布式

一、微服务是什么

  1. 微化拆分: 拒绝大型单体应用,基于业务边界进行服务微化拆分;
  2. 独立部署: 通过完全自动化部署机制来独立部署
  3. 独立运行: 各个服务独立运行在自己的进程中;
  4. 轻量级通信: 微服务之间使用轻量级通信机制,通常是 Http API。

二、分布式是什么

  1. 分布式系统: 若干独立计算机的集合,对用户像单个相关系统;
  2. 分布式: 将不同的业务分布在不同的地方;
  3. 集群: 几台服务器集中在一起,每台服务器都完成相同业务,保证系统稳定性、可靠性。

三、远程调用

  1. 是什么: 分布式系统中,各个服务可能位于不同主机,服务之间需要相互调用,称之为远程调用。
  2. 怎么做: Spring Cloud 使用 Http + JSON的方式完成远程调用

四、负载均衡

gateway —> ribbon

五、服务注册中心

  1. 服务注册: 服务注册是指将服务实例的网络位置(如IP地址和端口号)注册到服务注册中心,以便其他服务可以发现和调用它。 a. 微服务通过添加依赖(nacos, actuator) b. 编写配置文件(application.yml) c.
    @EnableDiscoveryClient注解的作用是启用服务发现功能,将应用程序注册到服务注册中心,以便其他服务可以发现和调用它。
  1. 服务发现: 服务发现是指在运行时动态地发现和调用其他服务的能力。通过服务发现,服务可以从服务注册中心获取其他服务实例的网络位置信息,从而实现服务之间的通信和协作。
    a.
    服务发现就是在一个微服务架构中,通过使用RestTemplate或者Feign等工具来调用另一个服务。通过服务发现,服务可以动态地发现其他服务的实例,并且可以通过网络调用与这些服务进行通信。这种方式使得微服务之间可以相互协作,实现了分布式系统中的服务调用和协同工作。
    b. 其实可以这样理解:服务发现就是,使用RestTemplate 或者 Feign 等工具,通过 http api
    通信机制,结合微服务名称,从注册中心,调用另外一个微服务 c. 有什么用:实现微服务相互调用,实现微服务负载均衡

六、配置中心

  1. 为什么要使用配置中心:
    a. 在使用集群的时候,同一个微服务需要部署在多台主机上,此时,这里的每个微服务都是相同的,有相同的配置文件。当需要修改配置文件时,产生大量重复性工作
    b. 配置中心可以实现自动化配置文件。通过配置中心,您可以将应用程序的配置信息集中管理,并且可以实现配置文件的动态更新和自动刷新。这意味着,当您在配置中心修改了配置信息后,应用程序可以自动获取最新的配置,无需重启或手动刷新。
  1. 怎么使用配置中心
    a. 添加Maven依赖:在项目的pom.xml文件中添加nacos-client的Maven依赖。
    b. 在应用的配置文件中添加配置中心信息:在application.yml或application.properties中添加Nacos配置中心的相关配置信息。
    c. 将配置上传到Nacos配置中心
    d. Nacos客户端可以动态地读取Nacos配置中心中的配置信息。

七、服务熔断

  1. 是什么: 服务熔断是一种微服务架构中的容错机制,用于防止故障在分布式系统蔓延(服务链式调用,上游服务阻塞,导致下游服务全部阻塞)。服务熔断机制设置服务失败阈值,当超过这个阈值时,开启断路保护机制,告诉后来的机制不要来调用此服务,而从本地直接返回默认的数据。过一段时间后逐渐把请求放进来,直到服务失败次数低于阈值。提升整个系统的稳定性。
  1. 怎么做:
    a. 引入pom依赖,编写application配置,主启动类激活服务发现
    b. 在 sentinel 服务中配置熔断规则

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

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

相关文章

HTTP响应的基本概念

目录 HTTP响应中的一些信息 HTTPS HTTP响应中的一些信息 状态码:描述了这次HTTP请求是否成功,以及失败的原因。 1)200 ---OK 表示这次访问成功了。 2)404 ---Not Found 表示客户端请求的资源在服务器这边不存在。 3&a…

二叉树的链式实现

目录 一、二叉树的基础操作 二、二叉树代码图解 2.1 遍历 2.2 求大小 2.3 创建与销毁 2.4 与队列结合解决问题 三、二叉树C语言源码汇总 二叉树的代码实现运用了函数递归的思想,了解函数递归的知识请见博主的另一篇博客: http://t.csdnimg.cn/Po…

SRE视角下的DevOps:构建稳定高效的软件交付流程

SRE 和 DevOps 有什么区别和联系?本文对此进行了解读,并着重从 SRE 实践出发阐述了 DevOps 的建设思路。 SRE 就是在用软件工程的思维和方法论完成以前由系统管理员团队手动完成的工作。SRE 的职责是运维一个服务,该服务由一些相关的系统组件…

【深度学习】yolov8 seg实例分割训练,交通灯

文章目录 一、类别定义二、标注后再清洗数据三、训练yolov8 seg四、部署五、代码资料 一、类别定义 类别0: 类别1: 类别2: 类别3: 类别4: 类别5: 类别6: 类别7: 二、标注后再清洗…

同名在线查询系统微信小程序源码下载支持多种流量主,附带系统教程

同名在线查询系统微信小程序源码下载支持多种流量主这是一款支持查询同名的一款微信小程序 该款小程序支持多种查询模式 重名查询,热度查询,概率香查询 源码免费下载地址抄笔记(chaobiji.cn)

Cisco ASA防火墙抓包命令Capture

在日常运维中,遇到故障时经常需要在ASA上抓包进行诊断。 从抓包中可以看到流量是否经过ASA流量是否被ASA放行,或block,匹配的哪一条ACL capture在Firepower平台上同样适用,无论跑的是ASA还是FTD 1 抓包命令 capture 2 配置方…

Keras深度学习框架第二十讲:使用KerasCV中的Stable Diffusion进行高性能图像生成

1、绪论 1.1 概念 为便于后文讨论,首先进行相关概念的陈述。 Stable Diffusion:Stable Diffusion 是一个在图像生成领域广泛使用的技术,尤其是用于文本到图像的转换。它基于扩散模型(Diffusion Models),这…

Aiseesoft iPhone Unlocker for Mac激活版:一键解锁工具

在数字时代,手机解锁问题时常困扰着我们。Aiseesoft iPhone Unlocker for Mac作为一款专为Mac用户打造的解锁工具,以其简洁易用的界面和强大的功能,成为了解决iPhone解锁问题的最佳选择。 Aiseesoft iPhone Unlocker for Mac激活版下载 Aisee…

Flutter 中的 PopupMenuDivider 小部件:全面指南

Flutter 中的 PopupMenuDivider 小部件:全面指南 在Flutter中,PopupMenuDivider是一个辅助类,用于在PopupMenuItem之间添加分隔线,从而增强下拉菜单的可读性和用户界面的整洁度。PopupMenuDivider通常与PopupMenuButton和PopupMe…

uml 顺序图 交叉分片

在UML序列图中,交叉分片(interleaving)是指并发执行的两个或多个交互在时间上是分散的,即它们在时间上可以交叉。这通常用于描述并发线程或进程。 交叉分片不涉及具体的代码实现,它是一种用于描述并发行为的UML构造。…

redisson 使用fastJson2序列化

前因:一个项目:有人用redisTemplete存数据(使用了fastjson2),使用redisson取的时候就会报错。要让redisTemplete与redisson序列化一致 一、自定义序列化器 import com.alibaba.fastjson2.JSON; import com.alibaba.fa…

Mybatis-Plus笔记

1.MP基础 1.1 MP常见注解 TableName(“指定表明”) TableName("tb_user") // 指定表名 Data NoArgsConstructor AllArgsConstructor Builder public class User {private Long id;private String userName;private String password;private String name;private I…

北美码农面试流程,北美码农面试经验

听说有人还不知道OA是什么?HR电联跟Tech phone interview什么区别?Onsite interview有哪些关键点具体考些什么不清楚?下面为大家分享北美码农面试流程。 SDE面试流程主要包含: Online assessment HR contact email/phone Tech…

面试回答——有高并发、高性能、高可用系统架构设计实践以及性能调优经验

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

JVM学习-堆空间(三)

JVM在进行GC时,并非每次都对新生代、老年代、方法区(元空间)三个区域一起回收,大部分时间回收的都是新生代 针对Hotspot VM的实现,它里面的GC按照回收区域分两大类型:一种是部分收集(Partial GC),一种是整堆收集(Full …

singularity与docker区别

参考: https://statics.scnu.edu.cn/pics/iqm/2023/0926/1695693821366210.pdf https://hpc.pku.edu.cn/ug/guide/soft/singularity/ https://blog.csdn.net/weixin_44616693/article/details/131341744

Mysql之InnoDB索引

1.索引简介 官网介绍:MySQL :: MySQL 8.0 Reference Manual :: 10.3.1 How MySQL Uses Indexes 索引用于快速查找具有特定列值的行。如果没有索引, MySQL 必须从第一行开始,然后读取整个表以找到相关的行。表越大,花费就越多。如果表中有相关…

「大数据」Lambda架构

Lambda架构是一种用于处理大数据的架构,它由Twitter的前工程师Nathan Marz提出。Lambda架构的核心思想是将数据系统分为三个层次,以实现高容错性、低延迟和可扩展性。以下是Lambda架构的详细描述: 核心功能: 批处理层(Batch Layer):负责存储和管理主数据集,预先批处理计…

一些python代码基础

1、将输入转化为list sublist list(map(int, input().split())) 注:map(int, input().split()) 的结果是一个 map 对象,它是一个迭代器。在这个例子中,map 函数将 input().split() 返回的列表中的每个元素都转换为整数类型,但这…