SpringCloud 面试题, 分布式和微服务有什么区别?
SpringCloud 面试题, 分布式和微服务有什么区别?
QA
Step 1
Q:: 分布式和微服务有什么区别?
A:: 分布式系统是指将系统的各个组件分布在不同的网络节点上,通过网络通信进行协作完成任务。它强调的是系统的物理分布,可以包括数据库、应用服务器等各种资源的分布。微服务则是一种软件架构风格,将单一应用程序拆分为一组小的服务,每个服务运行在其独立的进程中,并通过轻量级通信机制(通常是HTTP REST)进行交互。微服务更关注的是服务之间的职责划分和解耦,而分布式系统则关注系统的地理分布。
Step 2
Q:: 微服务架构的优缺点是什么?
A:: 微服务架构的优点包括:1)解耦性好:每个服务可以独立开发、部署和扩展;2)技术异构性:不同的服务可以使用不同的技术栈;3)故障隔离:某个微服务故障不会影响整个系统的运行。缺点包括:1)运维复杂性增加:需要管理多个服务的部署、监控和维护;2)分布式系统的复杂性:涉及分布式事务、网络延迟、数据一致性等挑战;3
)依赖管理复杂:需要处理多个服务间的依赖关系。
Step 3
Q:: Spring Cloud 是什么?
A:: Spring Cloud 是一个基于 Spring Boot 的微服务框架,用于简化微服务架构的开发和部署。它提供了一系列工具和服务,例如配置管理、服务发现、断路器、智能路由、微代理、控制总线等,帮助开发者构建和部署分布式系统。Spring Cloud 通过整合 Netflix OSS、Eureka、Ribbon、Zuul、Hystrix 等组件,提供了一个完整的微服务解决方案。
Step 4
Q:: 什么是服务发现?Spring Cloud 如何实现服务发现?
A:: 服务发现是指在分布式系统中,服务实例动态注册和查找的过程,以便其他服务可以与之通信。Spring Cloud 通过 Eureka 来实现服务发现,Eureka 是 Netflix 开源的服务发现组件。服务启动时会向 Eureka 注册自己的地址和元数据,Eureka 服务器则维护一个服务实例的注册表,其他服务可以通过查询 Eureka 获取目标服务的地址,从而实现服务间的通信。
Step 5
Q:: Spring Cloud 中的断路器是什么?它有什么作用?
A:: 断路器是一种用于防止服务间调用失败时导致的级联故障的机制。它通过在调用失败达到一定阈值时中断后续调用,保护系统不至于因为单个服务的失败而导致整体崩溃。Spring Cloud 使用 Hystrix 来实现断路器功能,Hystrix 可以监控服务的调用,自动触发断路器以防止故障蔓延,并提供降级处理和监控能力。