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

相关推荐
寻星探路12 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧14 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法15 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty72515 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎15 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄15 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿15 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds16 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹16 小时前
【Java基础】多态 | 打卡day2
java·开发语言