分布式(2)

目录

6.Ribbon和Feign的区别有哪些?

7.SpringCloud和dubbo有什么区别?

8.服务注册和发现是什么意思?SpringCloud如何实现?

9.介绍下网关的作用?

10.谈谈服务降级,熔断,服务隔离?


6.Ribbon和Feign的区别有哪些?

Ribbon和Feign都是用于调用其他服务的,不过方式不同。1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。

3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送其他服务,步骤相当繁琐。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。不过要注意的是抽象方法的注解,方法签名要和提供服务的方法完全一致。

7.SpringCloud和dubbo有什么区别?

1.服务调用方式:dubbo是RPC,SpringCloud是Rest  Api;

2.注册中心:dubbo是zookeeper,SpringCloud是eureka,也可以是zookeeper;

3.服务网关:dubbo本身没有实现,只能通过其他第三方技术整合;SpringCloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发。SpringCloud支持断路器,与git完美集成配置文件,支持版本控制。事物总线实现配置文件的更新与服务自动配置等等一系列的微服务架构要素。

8.服务注册和发现是什么意思?SpringCloud如何实现?

当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务器都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。什么是Eureka?  Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka  Service中,并且保持心跳,这样工作人员可以通过Eureka  Service来监控各个微服务是否运行正常。Eureka怎么实现高可用?集群吧,注册多台Eureka,然后把SpringCloud服务互相注册,客户端从Eureka获取信息时,按照Eureka的顺序来访问。什么是Eureka的自我保护模式?默认情况下,如果Eureka  Service在一定时间内没有接收到某个微服务的心跳,Eureka  Service会进入自我保护模式,在该模式下Eureka  Service会保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka   Service节点会自动退出自我保护模式DiscoveryClient的作用,可以从注册中心中根据服务别名获取注册的服务器信息。

9.介绍下网关的作用?

网关相当于一个网络服务架构的入口,所有网络请求必须通过网关转发到具体的服务。

1.网关的作用是什么:统一管理微服务请求,权限控制,负载均衡,路由转发,监控,安全控制黑名单和白名单等。

2.什么是SpringCloud   Zuul(服务网关)    

Zuul是对SpringCloud提供的成熟对的路由方案,他会根据请求的路径不同,网关会定位到指定的微服务,并代理请求到不同的微服务接口,他对外隐藏了微服务的真正接口地址。三个重要概念:动态路由表,路由定位,反向代理:

动态路由表:Zuul支持Eureka路由,手动配置路由,这两种都支持自动更新;

路由定位:根据请求路径,Zuul有自己的一套定位服务规则以及路由表达式匹配。

反向代理:客户端请求到路由网关,网关受理之后,在对目标发送请求,拿到响应之后再给客户端他可以和Eureka,Ribbon,Hystrix等组件配合使用。

3.Zuul的应用场景:对外暴露,权限校验,服务聚合,日志审计等。

4.网关与过滤器有什么区别:网关是对所有服务的请求进行分析过滤,过滤器是对单个服务而言。

5.常用的网关框架有哪些?Nginx,Zuul,GateWay

10.谈谈服务降级,熔断,服务隔离?

1.服务降级:当客户端请求服务端的时候,防止客户端一直等待,不会处理业务逻辑代码,直接返回一个友好的提示给客户端。

2.服务熔断:是在服务降级基础上更直接诶的一种保护方式,当在一个统计时间范围内的请求失败数量达到设定值(requestVolumeThreshold)或当前的请求错误率达到设定的错误率阈值时开启断路,之后的请求直接走fallback方法,在设定时间后尝试恢复。

3.服务隔离:就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。

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

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

相关文章

机器学习(四) -- 模型评估(3)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 机器学习(四) -- 模型评估…

通货紧缩,通货膨胀

目录 通货紧缩 通货膨胀 通货紧缩 是一个与通货膨胀相对应的经济学概念,是由货币供给量相对于经济增长和劳动生产率提高等要素减少而引致的有效需求严重不足 一般物价水平持续下跌,货币供给量持续下降和经济衰退的现象。当市场上流通的货币减少&…

探索 OceanBase 中图数据的实现

在数据管理和处理的现代环境中,对能够处理复杂数据结构的复杂数据模型和方法的需求从未如此迫切。图数据的出现以其自然直观地表示复杂关系的独特能力,开辟了数据分析的新领域。 虽然 Neo4j 等成熟的图形数据库为处理图形数据提供了强大的解决方案&…

Python从入门到网络爬虫(模块详解)

模块 我们知道,函数和类都是可以重复调用的代码块。在程序中使用位于不同文件的代码块的方法是:导入 (import) 该对象所在的模块 (mudule)。当程序变得越来越大时,将程序的不同部分根据不同分类方法保存在不同文件中通常会更加方便。 导入模…

python抓取异步数据(加载更多类型的),并下载图片,保存到文件夹,实例

源码: {"subjects":[{"episodes_info":"","rate":"8.8","cover_x":3000,"title":"奥本海默","url":"https:\/\/movie.douban.com\/subject\/35593344\/","playabl…

hydra爆破

导语 Hydra 是一个用于暴力破解登录凭据的网络安全工具。它可以通过尝试多个用户名和密码组合来攻击目标系统,以获得未经授权的访问权限。 Hydra 支持多种协议和服务,包括常见的 SSH、FTP、Telnet、HTTP、SMTP 等。它可以通过使用字典文件或生成密码的模式进行强制破解。可以…

如何理解Transformer论文中的positional encoding,和三角函数有什么关系?

大家好,我分享交流下这个问题。 Positional Encoding 掏出一张被无数人讲述的架构图。 Transformer 模型中的位置编码(Positional Encoding)是为了让模型能够考虑单词在句子中的位置。 由于 Transformer 的自注意力(Self-Atte…

bat批处理文件_bat注释汇总

文章目录 1、示例(直接结合脚本和结果进行理解) 1、示例(直接结合脚本和结果进行理解) %这是一个注释% %这是另一个注释%rem 这是一个注释 rem 这是另一个注释:这是一个注释 ::这是一个注释 :?这是另一个注释if 1 1 ( %这里会执…

Golang 切片

前言 在Go语言中,切片是一个引用类型,它提供了对数组的动态窗口。切片并不存储任何数据,它只是描述了底层数组中的一个片段。切片的定义包括三个部分:指向数组的指针、切片的长度和切片的容量 基本使用 声明切片:声…

Django在urls.py利用函数path()配置路由时传递参数给调用的视图函数的方法

01-单个参数的传递 问:在urls.py利用函数path()配置路由时能不能传递一些参数给调用的视图函数?因为我有很多路由调用的其实是同一个视图函数,所以希望能传递一些额外的参数。比如路由的PATH信息如果能传递就好了。 答:在Django中…

伐木工 - 华为OD统一考试

OD统一考试 题解: Java / Python / C 题目描述 一根X米长的树木,伐木工切割成不同长度的木材后进行交易,交易价格为每根木头长度的乘积。规定切割后的每根木头长度都为正整数,也可以不切割,直接拿整根树木进行交易。请问伐木工如…

MySQL 日期比较

MySQL日期格式比较常用的两个函数是DATEDIFF()和TIMESTAMPDIFF()。 DATEDIFF SELECT DATEDIFF(2023-12-31 23:59:59, 2023-12-30); # 1SELECT DATEDIFF(2023-11-30 23:59:59, 2023-12-31); # -31第一个参数减去第二个参数得到的天数。 TIMESTAMPDIFF SELECT TIMESTAMPDIFF(…

libexif库介绍

libexif是一个用于解析、编辑和保存EXIF数据的库。它支持EXIF 2.1标准(以及2.2中的大多数)中描述的所有EXIF标签。它是用纯C语言编写的,不需要任何额外的库。源码地址:https://github.com/libexif/libexif ,最新发布版本为0.6.24,…

计算圆弧的起始角度、终止角度和矩形信息并使用drawArc绘制圆弧

Qt中常用绘制圆弧的库函数: //函数原型 void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)Qt规定1约占16个像素,比如一个完整的圆等于360度,对应的像素角度就是 5760度(16 * 360)…

深度学习中的自动化标签转换:对数据集所有标签做映射转换

在机器学习中,特别是在涉及图像识别或分类的项目中,标签数据的组织和准确性至关重要。本文探讨了一个旨在高效转换标签数据的 Python 脚本。该脚本在需要更新或更改类标签的场景中特别有用,这是正在进行的机器学习项目中的常见任务。我们将逐…

基于JavaWeb+SSM+Vue家政项目微信小程序系统的设计和实现

基于JavaWebSSMVue家政项目微信小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2…

如何使用RESTful API构建 web 应用程序

RESTful API 是一种设计风格,用于构建可扩展、灵活和可维护的 web 应用程序。它是一种基于 HTTP 协议的架构风格,旨在提供一组规范和约束,以便客户端和服务器之间的通信更加简单和可预测。 RESTful API 通过使用 HTTP 动词来定义资源的操作&…

【DevOps-01]】DevOps介绍

一、简要描述 DevOps:Development & Operations的缩写,也就是开发&运维 DevOps是一个不断提高效率并且持续不断工作的过程。 核心:简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。 DevOps定义: DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和…

数据结构OJ实验16-选择排序与堆排序与归并排序

A. DS排序--简单选择排序 题目描述 给出一个数据序列,使用简单选择排序算法进行升序排序。 输入 第一行输入t,表示有t个测试示例 第二行输入n,表示第一个示例有n个数据(n>1) 第三行输入n个数据,都是正整数,数据…

MyBatis 进阶

MyBatis 进阶 复杂CURD返回设置返回类型&#xff1a;resultType返回字典映射&#xff1a;resultMap 多表查询动态SQL使⽤<<if>if>标签<trim\>标签<where\>标签<set\>标签<foreach\>标签 其他打开日志单元测试不污染数据库 复杂CURD 返回设…