秋招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版本上

相关推荐
num_killer4 小时前
小白的Langchain学习
java·python·学习·langchain
期待のcode5 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐5 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
a程序小傲5 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红5 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥5 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v5 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地6 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl200209256 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei6 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot