八股系列(分布式与微服务)持续更新!

八股系列(分布式与微服务)

  1. 分布式系统的概念

    • 分布式系统是由多个节点组成,节点之间通过网络协议传递数据,对外表现为一个统一的整体,一个节点可以是一台机器或一个进程;
    • 分布式系统的核心功能
      • 资源共享,多个节点可以通过网络通信共享数据、存储、计算能力等,常用协议如RPC、HTTP、消息队列等;
      • 高可用性,某些节点宕机,系统仍然可以继续服务;
      • 可扩展性,可以轻松添加机器,增强系统能力;
      • 并发处理,多个请求可以并行处理,提高性能;
      • 透明性,用户无需关注后台有多少台机器,怎么通信;
    • 分布式系统常见的挑战有:
      • CPA定理:一个分布式系统最多满足一以下三个中的两个:一致性、可用性、分区容错性;
      • 如何解决不同节点之间可能存在的通信延迟;
      • 部分节点可能随时崩溃,系统要能进行自动恢复;
  2. springcloud

    • 是一个基于SpringBoot的微服务架构开发工具,提供了一套完整的分布式解决方案;
    • 包括服务注册与发现、配置管理、负载均衡、熔断器、智能路由、分布式消息队列等功能;
  3. nacos的底层原理

    • nacos是阿里巴巴开源的动态服务发现、配置管理和服务治理平台、其底层原理涵盖服务注册与发现、配置管理、数据一致性协议等;
    • nacos分为客户端和服务端,客户端提供可视化的服务注册实例,服务实例启动时,通过Nacos客户端将自身的元数据注册到nacos服务器,客户端会随机选择一个nacos节点发送注册请求,若该节点非服务的负责节点,会将请求路由至正确的节点处理。注册信息存储在nacos的内存数据结构中,并通过一致性协议同步至其他节点;
    • 服务消费者通过nacos客户端查询所需服务的可用实例列表,客户端会定期向nacos服务器拉取最新的服务实例,保持本地缓存的更新。当服务实例发生变化时,nacos服务器会主动推送变更通知,确保客户端感知最新的服务状态;
  4. Dubbo是如何实现分布式

    • Dubbo是阿里巴巴开源的一个高性能Java RPC远程过程调用框架,专门用于构建分布式服务架构,他主要解决的是服务之间的通信、调用、注册、发现和治理问题;
    • 可以通过pom引入注册中心例如naco或zookeeper进行服务注册与发现,使用@DubboService与@DubboReference与@EnableDubbo这些注解启动dubbo框架;
    • dubbo是开发阶段集中开发,部署时会将多个模块分别打包,在不同的服务器上运行;
  5. SpringCould与Dubbo的区别

    • 两者都是目前主流的微服务技术栈

    • 在定位上,Dubbo专注于高性能RPC框架,SpringCloud是微服务全家桶框架

    • 在通信协议上,Dubbo基于Dubbo自定义二进制协议,高性能。SpringCloud基于HTTP/REST或消息中间件;

    • 在调用方式上,Dubbo使用RPC调用,就像调用本地方法一样。SpringCloud使用RESTful API调用(通常是HTTP接口);

    • 注册中心上,都可以有不同的选型,现在常用的都是Nacos;

    • 服务网关上,Dubbo没有默认,需要自行接入Nginx或SpringCloudGateway等。SpringCloud则是自带的SpringCloudgateway/zuul;

    • 在负载均衡上,Dubbo内置的有随机/轮循/一致性哈希,SpringCloud搭载的有LoadBalancer;

  6. 谈谈你对微服务的理解?

    • 微服务是一种软件架构风格,将一个复杂的系统按照业务能力拆分成多个小型服务,每个服务可以独立的进行开发、部署、配置和扩展;
    • 不再依赖单个项目,业务自己做主,部署单个方面的业务,并且可以使用不同的语言、数据库、框架,单个服务挂掉还不会影响整个系统;
  7. 微服务和分布式的区别

    • 分布式是指一个系统部署在多个节点上,节点间通过网络协同完成业务,提高可用性与扩展性,是一种系统部署架构;
    • 微服务是一种将系统按照业务功能拆分为多个小服务的架构风格,每个服务可独立开发、部署,是一种软件设计思想;
    • 分布式偏向物理部署结构,微服务偏向业务逻辑划分;
    • 分布式系统强调系统运行在多个节点上以实现高性能、高可用,是一种系统架构模式。而微服务则是一种设计理念,它强调将系统按照业务维度拆分为多个小服务,强调服务自治、灵活部署。微服务本身就是构建在分布式架构之上的,因此两者是包含与被包含的关系;
相关推荐
Charlie__ZS31 分钟前
SpringCloud - 分布式事务
分布式·spring·spring cloud
lauo3 小时前
智体知识库:ai-docs对分布式智体编程语言Poplang和javascript的语法的比较(知识库问答)
开发语言·前端·javascript·分布式·机器人·开源
喵叔哟4 小时前
14.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--CAP
微服务·架构·.net
黎明鱼儿6 小时前
高可用架构:Keepalived、Nginx与Docker深度解析
nginx·docker·架构
爱的叹息7 小时前
spring cloud微服务API网关详解及各种解决方案详解
spring·spring cloud·微服务
文火冰糖的硅基工坊7 小时前
[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略
架构·管理·公司·战略·治理
Hadoop_Liang7 小时前
openEuler24.03 LTS下安装Spark
大数据·分布式·spark·openeuler
何似在人间5759 小时前
Seata 支持哪些模式的分布式事务?
分布式·mysql·seata·分布式事务
白露与泡影10 小时前
Nginx 是什么?Nginx高并发架构拆解指南
运维·nginx·架构
探索为何10 小时前
SQL解析器系列:实现ALTER TABLE语句
后端·架构