秋招Day20 - 微服务

注册中心是用来干嘛的?

用于服务发现服务注册,主要维护各服务节点的地址和服务的元数据、版本号等信息。

  1. 服务注册:各个服务在启动时向注册中心注册自己的网络地址、服务实例信息和其他相关元数据。这样,其他服务就可以通过注册中心获取到当前可用的服务列表。
  2. 服务发现:客户端通过向注册中心查询特定服务的注册信息,获得可用的服务实例列表。这样客户端就可以根据需要选择合适的服务进行调用,实现了服务间的解耦。

有哪些注册中心?

  1. ZooKeeper:ZooKeeper 是 Apache 基金会开源的分布式协调服务,可以用作服务注册中心。它具有高可用、一致性、可靠性等特点。
  2. Nacos:Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。它提供了服务注册和发现、配置管理、动态 DNS 服务等功能。

为什么微服务需要配置中心?

微服务架构中每个服务都有自己的配置信息,比如数据库地址、服务端口、日志级别等。而微服务的实例是以集群的形式部署的,如果一个个配置非常麻烦,这时就需要一个集中化的配合中心

有哪些配置中心?

  1. Apollo:携程开源的配置中心,支持多种语言和框架。提供细粒度的配置权限管理、配置变更通知灰度发布配置等高级特性,还有可视化的配置管理界面
  2. Nacos:阿里巴巴开源的服务发现、配置管理和服务管理平台,也可以作为配置中心使用。支持服务注册与发现、动态配置管理、服务健康监测和动态 DNS 服务等功能。

Nacos配置中心的原理了解吗?

就是对配置信息的增删改查,配置信息存在Nacos server端,Nacos 默认使用内嵌数据库 Derby 来存储配置信息,还可以采用 MySQL 等关系型数据库。服务运行期间,Nacos Client 通过 API 从 Nacos Server 获取配置信息。Server 根据键查找对应的配置信息,并返回给 Client。

Nacos Client 可以通过注册监听器的方式,实现对配置信息的监听。当配置信息发生变化时,Nacos Server 会通知已注册的监听器,并触发相应的回调方法

Nacos配置中心长轮询机制?

Nacos Client在主动pull的基础上做了改进,不是请求得到没有变更就直接返回,而是被放入一个定时等待队列,如果在等待期间配置有变更,Server对通知对应的Client,Client再得到结果返回。如果等待期间超时了配置都没有变更,Client就会得到没有变更的结果并返回。

说一下HTTP和RPC的区别?

HTTP是网络模型中最顶层的应用层的协议,基于请求-响应模型,常用于Web开发、API调用

RPC是远程调用协议,用于实现分布式系统中不同节点之间的通信,基于方法调用模型,使用的时候看起来就跟调用普通方法一样。RPC协议可以运行在很多协议之上,包括HTTP。Dubbo就是基于RPC协议,提供了IDL来定义接口服务,以及序列化协议来处理数据传输。

说说有哪些负载均衡的常用算法?

轮询:每次请求顺序选择下一个节点,循环往复

加权轮询:每个节点都有一个权重,权重越大被选中的次数越多,比如权重是1,2,1,则第一次请求给一号节点,第2、3次请求由二号节点处理,第四次请求由三号节点处理

随机算法

加权随机算法:权重越高,被选中的概率越大

最少连接算法:根据提供服务的节点当前的连接数,选择连接数最少的请求

哈希算法:根据某种特殊的哈希算法(客户端地址、请求URL)去请求相应的节点

什么是服务雪崩?

一个服务节点出现故障,如果这时候上游服务还在不停的请求它或者重试,就会导致请求在下游堆积,导致故障进一步加剧

一般,为了防止服务雪崩,可以采用这些措施:

  1. 服务高可用部署:确保各个服务都具备高可用性,通过冗余部署、故障转移等方式来减少单点故障的影响。
  2. 限流和熔断:对服务之间的请求进行限流和熔断,以防止过多的请求涌入导致后端服务不可用。
  3. 缓存和降级:合理使用缓存来减轻下游服务的负载压力,并在必要时进行服务降级,保证核心功能的可用性。

什么是服务熔断?什么是服务降级?

服务熔断是微服务架构中的容错机制,用于保护系统免受服务故障或异常的影响。所有请求都要经过熔断器,当某个服务出现故障或异常时,熔断器可以快速隔离该服务,确保系统稳定可用。

它通过监控服务的调用情况,当错误率或响应时间超过阈值时,触发熔断机制,不再请求这个故障的节点,触发服务降级。

服务熔断还支持自动恢复,重新尝试对故障服务的请求,确保服务恢复正常后继续使用。

当系统出现异常情况时,服务降级会主动屏蔽一些非核心或可选的功能,而只提供最基本的功能,比如直接返回缓存,以确保系统的稳定运行。通过减少对资源的依赖,服务降级可以保证系统的可用性和性能。

什么是API网关?

就是客户端请求系统的入口点,提供以下功能:

路由转发:根据请求的URL或者其他标识,将请求路由并转发到相应服务。

负载均衡:根据特定的负载均衡算法选择能提供服务的最合适的节点

安全认证与授权:判断请求是否合法

缓存:缓存服务的相应,减轻后台服务的压力

API版本管理:允许一个服务存在多个不同的版本,并通过路由规则将请求转发到相应的API版本上

相关推荐
越来越无动于衷9 分钟前
基于 JWT 的登录验证功能实现详解
java·数据库·spring boot·mysql·mybatis
飛_4 小时前
解决VSCode无法加载Json架构问题
java·服务器·前端
木棉软糖6 小时前
一个MySQL的数据表最多能够存多少的数据?
java
程序视点7 小时前
Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
java·后端
愿你天黑有灯下雨有伞7 小时前
Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
java·spring boot·spring
狐小粟同学8 小时前
JavaEE--3.多线程
java·开发语言·java-ee
KNeeg_9 小时前
Spring循环依赖以及三个级别缓存
java·spring·缓存
AI_Gump10 小时前
【AI阅读】20250717阅读输入
java·spring boot·spring
找不到、了10 小时前
Java排序算法之<插入排序>
java·算法·排序算法