注册中心是用来干嘛的?
用于服务发现和服务注册,主要维护各服务节点的地址和服务的元数据、版本号等信息。
- 服务注册:各个服务在启动时向注册中心注册自己的网络地址、服务实例信息和其他相关元数据。这样,其他服务就可以通过注册中心获取到当前可用的服务列表。
- 服务发现:客户端通过向注册中心查询特定服务的注册信息,获得可用的服务实例列表。这样客户端就可以根据需要选择合适的服务进行调用,实现了服务间的解耦。

有哪些注册中心?
- ZooKeeper:ZooKeeper 是 Apache 基金会开源的分布式协调服务,可以用作服务注册中心。它具有高可用、一致性、可靠性等特点。
- Nacos:Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。它提供了服务注册和发现、配置管理、动态 DNS 服务等功能。
为什么微服务需要配置中心?
微服务架构中每个服务都有自己的配置信息,比如数据库地址、服务端口、日志级别等。而微服务的实例是以集群的形式部署的,如果一个个配置非常麻烦,这时就需要一个集中化的配合中心
有哪些配置中心?
- Apollo:携程开源的配置中心,支持多种语言和框架。提供细粒度的配置权限管理、配置变更通知和灰度发布配置等高级特性,还有可视化的配置管理界面。
- 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)去请求相应的节点
什么是服务雪崩?
一个服务节点出现故障,如果这时候上游服务还在不停的请求它或者重试,就会导致请求在下游堆积,导致故障进一步加剧
一般,为了防止服务雪崩,可以采用这些措施:
- 服务高可用部署:确保各个服务都具备高可用性,通过冗余部署、故障转移等方式来减少单点故障的影响。
- 限流和熔断:对服务之间的请求进行限流和熔断,以防止过多的请求涌入导致后端服务不可用。
- 缓存和降级:合理使用缓存来减轻下游服务的负载压力,并在必要时进行服务降级,保证核心功能的可用性。
什么是服务熔断?什么是服务降级?
服务熔断是微服务架构中的容错机制,用于保护系统免受服务故障或异常的影响。所有请求都要经过熔断器,当某个服务出现故障或异常时,熔断器可以快速隔离该服务,确保系统稳定可用。
它通过监控服务的调用情况,当错误率或响应时间超过阈值时,触发熔断机制,不再请求这个故障的节点,触发服务降级。
服务熔断还支持自动恢复,重新尝试对故障服务的请求,确保服务恢复正常后继续使用。
当系统出现异常情况时,服务降级会主动屏蔽一些非核心或可选的功能,而只提供最基本的功能,比如直接返回缓存,以确保系统的稳定运行。通过减少对资源的依赖,服务降级可以保证系统的可用性和性能。
什么是API网关?
就是客户端请求系统的入口点,提供以下功能:
路由转发:根据请求的URL或者其他标识,将请求路由并转发到相应服务。
负载均衡:根据特定的负载均衡算法选择能提供服务的最合适的节点
安全认证与授权:判断请求是否合法
缓存:缓存服务的相应,减轻后台服务的压力
API版本管理:允许一个服务存在多个不同的版本,并通过路由规则将请求转发到相应的API版本上