首页 > 其他分享 >SpringCloud专题面试

SpringCloud专题面试

时间:2023-10-16 16:22:22浏览次数:44  
标签:专题 服务 SpringCloud nacos 面试 调用 注册 Spring Cloud

1.微服务架构优缺点

1)单体应用

开发的效率比较低,由于代码量大,项目启动缓慢,部署麻烦,后期难以维护。

2)服务拆分

分为多个小应用,提高了开发效率,降低了代码的耦合程度,不同的服务可以采用不同的语言,提高了灵活性;小的改动进行快捷部署,方便维护。

3)拆分的依据

原则就是高内聚低耦合,每个服务实现单一的功能,如订单服务,商品服务。

2.Spring Cloud Netflix和Spring Cloud Alibaba包括哪些组件,作用是什么?

Spring Cloud Netflix 组件名称 组件作用
Eureka 服务注册,已停止维护
Consul 服务注册
OpenFiegn 服务发现(Ribbon)
Config 服务配置
Hystrix 服务熔断与降级
Zuul 服务网关
GateWay 服务网关
Spring Cloud Alibaba nacos 服务注册
nacos 服务配置
Sentinel 服务熔断与降级
Seata 分布式事务

3.Nacos是CP还是AP?

nacos默认是AP,也可支持CP。CAP定义

4.Ribbon服务调用的原理?

Ribbon主要功能是服务调用和负载均衡,那么对于服务调用是如何实现的?在代码中使用的是RestTemplate,需要调用时指定请求路径和参数,其中请求路径中包含服务名。实际上在底层,它有一个拦截器,在发送请求时,会把url中的域名(也就是服务名)取出来,根据服务名在注册中心查找相应的实例列表,包括ip和端口信息,将这些数据缓存到本地,然后使用负载均衡的策略去调用服务,默认是轮询。

5.nacos注册中心原理

当服务启动时需要去注册服务时,就把自己的信息注册到注册中心,包括服务名,ip,端口等信息。

当其他服务需要调用服务时(默认自己已注册),会根据服务名在注册中心查询实例列表,并将此列表缓存到本地,然后通过ribbon进行服务的调用。

在注册和发现的过程中,nacos有心跳检测机制,nacos客户端(自己的应用)通过不断的向注册中心发送心跳,注册中心根据心跳情况来判断服务是否正常,当服务下线后,注册中心会把注册表中的这个实例删除,同时也会即使通知客户端。客户端也会定时根据服务名向注册中心拉取最新的实例列表到本地并覆盖本地缓存(底层是ribbon实现)。也就是说对于服务的感知是动态的,也是双向的。

但对于nacos,不同版本其底层实现原理是不一样的,主要区别在于1.4.x和2.x:

 

1.4.x

服务端是一个基于SpringBoot开发的web应用,提供了许多htpp接口。当系统启动需要去注册服务时,其内部就是去调用内部的接口。

2.x

优化了请求的方式,将http协议换为高性能的grpc远程调用,也就是说客户端和服务端会保持长连接。

 

 

标签:专题,服务,SpringCloud,nacos,面试,调用,注册,Spring,Cloud
From: https://www.cnblogs.com/zys2019/p/17762216.html

相关文章

  • 习题专题2-习题1 计算三角形面积
    给定三点坐标计算三角形面积有两个考点:考点一:两点间距离公式考点二:海伦公式海伦公式:abc为三边长p=(a+b+c)/2S=√p(p-a)(p-b)(p-c)//考点一:两点间距离公式//考点二:海伦公式#include<math.h>#include<stdio.h>intmain(){ doublea1,a2,b1,b2,c1,c2; doublex1......
  • #yyds干货盘点# LeetCode程序员面试金典:H 指数
    题目:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数的定义:h 代表“高引用次数”,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次......
  • #yyds干货盘点# LeetCode程序员面试金典:四数相加 II
    1.简述:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i,j,k,l) 能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l]==0 示例1:输入:nums1=[1,2],nums2=[-2,-1],nums3=[-1,2],nums4=[0,2]输出:2......
  • 月薪过二万的Java面试
    (文章目录)......
  • Java面试题支招-为什么Java语言不支持多继承
    这是非常经典的问题,与“为什么String类在Java中是不可变的”很类似;这两个问题之间的相似之处在于它们主要是由Java创作者的设计决策使然。Java不支持类的多继承。因为多继承会增加编程的复杂性。下图选自孙卫琴的经典Java书籍《漫画Java编程》当一个子类有多个父类可能出......
  • SpringCloud Sentinel原理介绍
    SpringCloud微服务保护技术一般都是:Hystrix和Sentinle,早期比较流行的是Hystrix框架,但目前国内实用最广泛的还是阿里巴巴的Sentinel框架,我们对这两种常见技术进行对比:SentinelHystrix隔离策略信号量隔离线程池隔离/信号量隔离熔断降级策略基于慢调用比例或异常比例基于失败比率实......
  • 前端面试题之CSS
    一、CSS基础1.对盒模型的理解CSS3中的盒模型有以下两种:标准盒子模型、IE盒子模型盒模型都是由四个部分组成的,分别是margin、border、padding和content。标准盒模型和IE盒模型的区别在于设置width和height时,所对应的范围不同:标准盒模型的width和height属性的范围只包含了content,IE盒......
  • #yyds干货盘点# LeetCode程序员面试金典:整数转换英文表示
    题目:将非负整数 num 转换为其对应的英文表示。 示例1:输入:num=123输出:"OneHundredTwentyThree"示例2:输入:num=12345输出:"TwelveThousandThreeHundredFortyFive"示例3:输入:num=1234567输出:"OneMillionTwoHundredThirtyFourThousandFiveHundredSixtySe......
  • #yyds干货盘点# LeetCode程序员面试金典:最小操作次数使数组元素相等
    1.简述:给你一个长度为 n 的整数数组,每次操作将会使 n-1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 示例1:输入:nums=[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3]=>[2,3,3]=>[3,4,3]=>[4,4,4]示例2:输入:nums=[1......
  • 面试必刷TOP101:3、链表中的节点每k个一组翻转
    一、题目将给出的链表中的节点每k 个一组翻转,返回翻转后的链表如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。二、题解publicclassSolution{/****@paramheadListNode类*@paramkint整型......