微服务基础

微服务和分布式的区别

        微服务架构是分布式服务架构的子集。微服务架构更细粒度的服务切分。微服务可以理解为一种非常细粒度的垂直拆分。

分布式基础:分布式基础

1.什么是微服务?

微服务是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如 HTTP)相互协作。提供高并发、高吞吐、高可用的特性。

Dubbo

Spring Cloud

        1.前后端分离是如何做的

        在前后端分离架构中,后端只需要负责按照约定的数据格式向前端提供可调用的 API 服务 即可。前后端之间通过 HTTP 请求进行交互,前端获取到数据后,进行页面的组装和渲染,最终返回给浏览器。

        2.微服务哪些框架

2.微服务带来了哪些挑战?

  1. 系统复杂性增加:一个服务拆成了多个服务,整体系统的复杂性增加,需要处理服务之间的通信、部署、监控和维护等方面的复杂性。
  2. 服务间通信开销:微服务之间通过网络进行通信,传递数据需要额外的网络开销和序列化开销,可能导致性能瓶颈和增加系统延迟。
  3. 数据一致性和事务管理:每个微服务都有自己的数据存储,数据一致性和跨服务的事务管理变得更加复杂,需要额外解决分布式事务和数据同步的问题。
  4. 服务治理和版本管理:随着微服务数量的增加,服务的治理和版本管理变得更加复杂。需要考虑服务的注册发现、负载均衡、监控和故障处理等方面,以确保整个系统的可靠性和稳定性。

3. Spring Cloud 是什么

        Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系 统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据 监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

4.说下微服务有哪些组件?

微服务的各个组件和常见实现:

注册中心:用于服务的注册与发现,管理微服务的地址信息。常见的实现包括:Spring Cloud Alibaba:Nacos

配置中心:用于集中管理微服务的配置信息,可以动态修改配置而不需要重启服务。常见的实现包括:Spring Cloud Alibaba:Nacos Config

远程调用:用于在不同的微服务之间进行通信和协作。常见的实现保包括:

RESTful API:如 RestTemplate、Feign

RPC(远程过程调用):如 Dubbo、gRPC

API 网关:作为微服务架构的入口,统一暴露服务,并提供路由、负载均衡、安全认证等功能。常见的实现包括:Spring Cloud Alibaba:Gateway、Apisix 等

分布式事务:保证跨多个微服务的一致性和原子性操作。常见的实现包括:Spring Cloud Alibaba:Seata

熔断器:用于防止微服务之间的故障扩散,提高系统的容错能力。常见的实现包括:Spring Cloud Alibaba:Sentinel、Resilience4j

限流和降级:用于防止微服务过载,对请求进行限制和降级处理。常见的实现包括:Spring Cloud Alibaba:Sentinel


注册中心

  • Zookeeper
  • Eureka
  • Nacos

1.注册中心是用来干什么的?

注册中心是用来管理和维护分布式系统中各个服务的地址和元数据的组件。它主要用于实现服务发现服务注册功能。

服务注册:各个服务在启动时向注册中心注册自己的网络地址、服务实例信息和其他相关元数据。这样,其他服务就可以通过注册中心获取到当前可用的服务列表。

服务发现:客户端通过向注册中心查询特定服务的注册信息,获得可用的服务实例列表。这样客户端就可以根据需要选择合适的服务进行调用,实现了服务间的解耦。

负载均衡:注册中心可以对同一服务的多个实例进行负载均衡,将请求分发到不同的实例上,提高整体的系统性能和可用性。

故障恢复:注册中心能够监测和检测服务的状态,当服务实例发生故障或下线时,可以及时更新注册信息,从而保证服务能够正常工作。

服务治理:通过注册中心可以进行服务的配置管理、动态扩缩容、服务路由、灰度发布等操作,实现对服务的动态管理和控制

2.Nacos 的定位是什么?它是一个什么样的框架?

Nacos 是一个基于 Nacos 的服务发现和配置管理平台,它提供了服务注册、配置管理、DNS 服务等功能,可以帮助开发者快速构建微服务应用。

3.Nacos 的服务注册流程是怎样的?

1)服务提供者启动时,向 Nacos 注册中心发送注册请求,携带服务名、IP地址、端口号等信息。

2)Nacos 注册中心接收到注册请求后,将服务信息存储到注册表中,并为服务生成一个唯一的实例ID。

3)服务消费者启动时,向 Nacos 注册中心订阅所需的服务,获取可用的服务实例列表。

4)服务消费者根据负载均衡策略选择一个服务实例,发起调用请求。

5)服务提供者收到调用请求后,处理并返回响应结果。

配置中心

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

微服务的实例一般非常多,如果每个实例都需要一个个地去做这些配置,那么运维成本将会非常大,这时候就需要一个集中化的配置中心,去管理这些配置。

2.Nacos 配置中心的原理过程了解吗?

注册配置信息:服务启动时,把配置信息写入存储,并生成版本号。

获取配置信息:服务运行期间,从 Nacos 配置中心拉取配置信息,并缓存到本地。

当配置信息发生变化时,Nacos 配置中心会推送变更通知给应用。

应用收到变更通知后,重新从 Nacos 配置中心拉取最新的配置信息,并更新本地缓存。

3.Nacos 配置中心长轮询机制?

在长轮询模式下,客户端定时向服务端发起请求,检查配置信息是否发生变更。如果没有变更,服务端会"hold"住这个请求,即暂时不返回结果,直到配置发生变化或达到一定的超时时间。

  1. 客户端发起 Pull 请求,服务端检查配置是否有变更。如果没有变更,则设置一个定时任务,在一段时间后执行,并将当前的客户端连接加入到等待队列中。
  2. 在等待期间,如果配置发生变更,服务端会立即返回结果给客户端,完成一次"推送"操作。
  3. 如果在等待期间没有配置变更,等待时间达到预设的超时时间后,服务端会自动返回结果给客户端,即使配置没有变更。
  4. 如果在等待期间,如果配置进行了修改,会触发一个事件机制,服务端会遍历等待队列,找到发生变更的配置项对应的客户端连接,并将变更的数据通过连接返回,完成一次"推送"操作。

7. Nacos 支持哪些配置管理功能?

配置发布与订阅:开发者可以将配置信息发布到 Nacos 配置中心,并订阅自己关心的配置信息。

配置变更通知:当配置信息发生变化时,Nacos 配置中心会主动推送变更通知给订阅者。

配置版本管理:Nacos 支持配置的版本管理,方便开发者回滚到之前的配置版本。

配置分组与标签:Nacos 支持配置的分组和标签功能,方便开发者对配置进行分类和管理。

配置加密与解密:Nacos 支持对敏感配置信息进行加密和解密操作,保证配置信息的安全性。

8. Nacos 如何保证配置管理的高可用性?

数据持久化:Nacos 将配置信息持久化到磁盘上,以防止数据丢失。

集群部署:Nacos 支持集群部署,多个 Nacos 服务器之间通过 Raft 协议同步数据,保证数据的一致性。

健康检查:Nacos 会定期对配置信息进行健康检查,自动摘除不健康的配置信息。

备份与恢复:Nacos 支持配置信息的备份与恢复功能,方便开发者进行数据迁移和灾难恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值