、分布式理论:

  1. CAP理论
    分布式系统最多同时满足一致性(C)、可用性(A)、分区容错性(P)中的两个,无法三者兼得。

  2. BASE理论
    对CAP中一致性和可用性的权衡,强调基本可用(BA)、软状态(S)和最终一致性(E),适用于高可用场景。

  3. 2PC(两阶段提交)
    分布式事务协议,分准备(投票)和提交/回滚两个阶段,保证强一致性但存在同步阻塞和单点问题。

  4. 3PC(三阶段提交)
    2PC的改进,增加预提交阶段减少阻塞,但仍可能数据不一致。

  5. ZAB协议
    ZooKeeper的核心协议,通过选举Leader和原子广播实现数据一致性,用于分布式协调。

  6. Raft协议
    更易理解的共识算法,通过选举Leader、日志复制保证一致性,替代Paxos用于分布式系统一致性管理。

二、Zookeeper:

  1. ZooKeeper是什么?
    分布式协调服务,提供数据发布/订阅、分布式锁、集群管理等功能,基于ZAB协议保证一致性。

  2. Zookeeper怎么保证主从节点的数据同步?
    通过ZAB协议:Leader接收写请求,广播提案(Proposal),Follower/Observer同步日志并ACK,超过半数确认后Leader提交事务。

  3. Zookeeper为什么能用做注册中心?
    支持临时节点和Watcher机制,服务注册(创建节点)、下线(节点自动删除)、发现(监听节点变化)实时通知。

  4. Zookeeper中有哪些类型的数据节点?

    • 持久节点(PERSISTENT)

    • 临时节点(EPHEMERAL)

    • 持久顺序节点(PERSISTENT_SEQUENTIAL)

    • 临时顺序节点(EPHEMERAL_SEQUENTIAL)

  5. Zookeeper中Watcher机制是什么?
    事件监听回调:客户端对节点注册Watcher,节点变化(增删改)时服务端触发事件通知,但是一次性的(需反复注册)。

  6. Zookeeper集群中有哪些服务器角色?

    • Leader:处理写请求,发起提案和提交。

    • Follower:参与投票和选举,同步Leader数据。

    • Observer:同步数据但不投票,扩展读性能。

  7. Zookeeper中的领导者选举是如何实现的?
    基于ZAB协议:节点启动或Leader崩溃时进入选举状态,投票优先投zxid(事务ID)最大、其次serverid最大的节点,超过半数当选。

  8. ZAB协议包括哪些内容?

    • 崩溃恢复:选举新Leader,数据同步到最新状态。

    • 消息广播:Leader将写请求以提案广播,半数确认后提交。

  9. Zookeeper能解决脑裂问题吗?
    能。基于过半机制(Quorum),写请求需多数节点确认,分裂后仅多数派分区能选举Leader和服务,少数派分区拒绝请求。

  10. 为什么Zookeeper集群的节点个数要用奇数个?
    容错与成本平衡:n节点集群容忍(n-1)/2个故障。奇数节点在相同容错能力下(如3节点和4节点均容错1故障)更节省资源。

  11. Zookeeper能用来做什么?

    • 注册中心(如Dubbo)

    • 分布式锁(临时顺序节点)

    • 配置管理(持久节点+Watcher)

    • 集群选主(临时节点+选举)

  12. Zookeeper实现分布式锁的原理?

    • 争抢锁:所有客户端在指定目录下创建临时顺序节点。

    • 判断最小节点:最小节点获锁。

    • 监听前序节点:非最小节点监听前一个节点,释放时触发通知。

    • 避免惊群:仅监听前一个节点。

  13. Zookeeper实现配置中心的原理?

    • 存储配置:配置信息存储在持久节点。

    • 动态更新:客户端监听节点Watcher,配置变更时服务端通知,客户端拉取新配置。

  14. Zookeeper和Dubbo的关系?
    Zookeeper作为Dubbo的注册中心,服务提供者注册地址到ZK,消费者从ZK发现服务列表,并监听变化实现动态路由。

三、分布式缓存:

  1. 什么是Redis?
    开源内存数据结构存储,用作数据库、缓存、消息队列,支持多种数据结构与持久化。

  2. 为什么要用缓存?

    • 高性能:内存读写快,降低数据库压力。

    • 高并发:缓解数据库负载,提升系统吞吐量。

  3. 为什么用Redis不用Map?

    • Redis是分布式缓存,支持多服务共享;本地Map仅单机有效。

    • Redis提供持久化、丰富数据结构、过期策略等。

  4. Redis线程模型?
    单线程Reactor模型(6.0前):单线程处理命令+IO多路复用,避免上下文切换,保证原子性。

  5. Redis和Memcached区别?

    • Redis:支持多种数据结构、持久化、主从复制,适用复杂场景。

    • Memcached:只支持KV、多线程、无持久化,纯缓存场景性能更高。

  6. Redis常见数据结构及使用场景?

    • String:缓存、计数器

    • Hash:存储对象

    • List:消息队列、栈

    • Set:标签、好友关系

    • ZSet:排行榜

    • Bitmap:位统计

    • HyperLogLog:基数估算

    • Stream:消息流(5.0+)

  7. Redis故障恢复?
    通过持久化:

    • RDB:快照恢复,数据可能丢失。

    • AOF:日志重放,数据更完整(可配置fsync策略)。

  8. 保证Redis中为热点数据?
    设置内存上限+淘汰策略(如LRU/LFU),自动淘汰冷数据。

  9. 如何实现Redis事务?

    • MULTI开启事务,命令入队。

    • EXEC执行(原子性,但无回滚)。

    • WATCH监控Key(乐观锁)。

  10. 缓存雪崩及解决?

    • 问题:大量缓存同时过期,请求直接击穿数据库。

    • 解决:随机过期时间、集群高可用、永不过期(后台更新)。

  11. 缓存穿透及解决?

    • 问题:查询不存在的数据(如恶意攻击),绕过缓存。

    • 解决:布隆过滤器、空值缓存、接口校验。

  12. 缓存击穿及解决?

    • 问题:热点Key过期,瞬间高并发查询数据库。

    • 解决:互斥锁(如Redis SETNX)、永不过期(逻辑过期)。

  13. 并发竞争Key问题?

    • 用WATCH+事务(乐观锁)。

    • 或分布式锁(如Redisson)保证串行访问。

  14. 什么是RedLock?
    Redis官方分布式锁算法:向多个独立Redis实例申请锁,过半成功才算获取,避免单点故障。

  15. 缓存与数据库双写一致性?

    • 策略:先更新数据库,再删除缓存(延迟双删)。

    • 补充:读请求先读缓存,未命中读库+回写。

  16. 单节点实现分布式锁?
    SET key random_value NX PX 3000(原子设值+过期时间),解锁时用Lua脚本校验值再删除。

  17. Redis使用场景?
    缓存、会话存储、排行榜、消息队列、分布式锁等。

  18. Redis功能?
    持久化、主从复制、哨兵、集群、事务、Pub/Sub等。

  19. Redis为什么单线程?
    避免锁竞争和上下文切换,内存操作+IO多路复用已足够高效(6.0后多线程仅处理网络IO)。

  20. Redis的Java客户端?
    Jedis(同步阻塞)、Lettuce(异步非阻塞)、Redisson(分布式功能封装)。

  21. Jedis和Redisson区别?

    • Jedis:轻量级API,直接操作Redis。

    • Redisson:分布式对象(如锁、队列)封装,更高级抽象。

  22. Redis实现分布式锁?

    • 命令:SETNX+过期时间(防死锁)。

    • 推荐:Redisson的RLock,支持可重入、续期。

  23. Redis持久化方式?

    • RDB:快照,二进制压缩文件。

    • AOF:日志追加,可配置每秒/每次同步。

    • 混合持久化(4.0+):RDB+AOF。

  24. Redis内存优化?

    • 使用合适数据结构(如Hash代替多个String)。

    • 配置最大内存+淘汰策略。

    • 缩短键值长度,使用整数池。

  25. Redis分布式锁缺陷?

    • 非强一致性(主从切换可能锁失效)。

    • 需自己解决续期、原子性等问题(推荐Redisson)。

  26. Redis性能问题及解决?

    • 慢查询:优化命令,避免大数据操作。

    • 内存不足:增加内存或优化数据。

    • 网络瓶颈:集群分片或客户端优化。

  27. Redis淘汰策略?

    • volatile-lru/ttl:过期键中淘汰。

    • allkeys-lru/lfu:所有键中淘汰。

    • random:随机淘汰。

    • noeviction:不淘汰(默认)。

  28. 单线程Redis为什么快?

    • 内存操作。

    • IO多路复用(epoll)。

    • 单线程无锁竞争。

  29. Redis应用场景?
    缓存、会话共享、分布式锁、排行榜、消息队列、地理空间计算等。

四、消息队列:

  1. MQ选型考虑因素?
    吞吐量(Kafka/RocketMQ)、延迟(RabbitMQ)、可靠性、功能(事务/延迟消息)、生态和运维成本。

  2. RabbitMQ消息发送过程?
    生产者→交换机(Exchange)→路由绑定(Binding)→队列(Queue)→消费者。

  3. RabbitMQ保证消息稳定性?

    • 持久化(交换机、队列、消息)。

    • 生产者确认(Confirm)、消费者手动ACK。

    • 集群镜像队列。

  4. 避免消息丢失?

    • 生产者:开启Confirm机制(确认Broker接收)。

    • Broker:持久化+镜像队列。

    • 消费者:手动ACK(处理完再确认)。

  5. 持久化缺点?
    磁盘IO性能下降(但内存+磁盘组合仍可接受)。

  6. 消息持久化成功条件?

    • 交换机、队列持久化。

    • 消息投递模式(delivery_mode=2)。

    • 写入磁盘(刷盘策略)。

  7. RabbitMQ广播类型?

    • 直连(Direct)、主题(Topic)、扇出(Fanout)、头(Headers)。

  8. 实现延迟消息队列?
    插件(rabbitmq_delayed_message_exchange)或TTL+死信队列(DLX)。

  9. RabbitMQ节点类型?

    • 磁盘节点(元数据持久化)。

    • 内存节点(元数据内存,性能高)。

  10. 每个节点是完整拷贝吗?
    不是。仅元数据(队列结构等)同步,消息数据需配置镜像队列才复制。

  11. 唯一磁盘节点崩溃?
    集群无法修改元数据(如创建队列),但内存节点仍可服务(需至少一个磁盘节点存活)。

  12. 集群节点停止顺序?
    先停内存节点,最后停磁盘节点(避免元数据丢失)。

  13. RabbitMQ使用场景?
    异步解耦、流量削峰、延迟消息、顺序消息(单队列)。

  14. 重要角色?
    生产者、消费者、Broker(服务器)、交换机、队列。

  15. 重要组件?
    连接(Connection)、信道(Channel)、虚拟主机(vhost)。

  16. vhost作用?
    逻辑隔离(不同业务组独立使用),类似命名空间。

  17. 什么是Kafka?
    分布式流处理平台,高吞吐、持久化、多订阅,用于日志、消息队列等。

  18. 为什么用消息队列?
    解耦、异步、削峰。

  19. Kafka中ISR、AR?

    • AR:所有副本。

    • ISR:与Leader同步的副本(含Leader)。

    • ISR伸缩:副本滞后(超过replica.lag.time.max.ms)被踢出,追上后加入。

  20. Broker作用?
    存储消息,处理读写请求。

  21. Zookeeper在Kafka中的作用?可不用吗?

    • 存储元数据(Broker、Topic、分区信息)、选Controller。

    • 2.8.0后支持不用Zookeeper(KRaft模式)。

  22. Follower同步数据?
    拉取(Pull)Leader数据,写入本地日志。

  23. Broker被踢出ISR?
    同步滞后(如网络慢、宕机)超过阈值(replica.lag.time.max.ms)。

  24. Kafka为什么快?

    • 顺序读写磁盘。

    • 零拷贝(sendfile)。

    • 分区并行+批量压缩。

  25. Producer优化速度?
    批量发送(linger.ms、batch.size)、压缩、异步发送。

  26. ack含义?

    • 0:不等待确认(可能丢失)。

    • 1:Leader确认(可能丢失)。

    • -1(all):ISR所有副本确认(可靠)。

  27. Message格式?
    偏移量+时间戳+Key+Value+头部字段。

  28. Consumer Group作用?
    实现发布订阅(不同Group独立消费)和队列(同Group内竞争消费)。

  29. 消息丢失和重复消费?

    • 丢失:ack配置不当、未处理完消费者宕机。

    • 重复:生产者重试、消费者提交偏移量失败。

  30. 为什么不支持读写分离?
    Leader处理读写,利用顺序写和页缓存,避免数据不一致和网络开销。

  31. 消息顺序性?
    分区内顺序(同一分区消息顺序消费),但全局不保证。

  32. 实现延迟队列?
    使用时间戳+多个Topic(或Kafka自2.1+支持内部延迟)。

  33. 事务实现?
    跨分区原子写(Producer端),使用事务协调器。

  34. 选举及策略?

    • Controller选举:基于Zookeeper(临时节点)。

    • Partition Leader:Controller指定(ISR中首选)。

  35. RocketMQ选型原因?
    对比Kafka(高吞吐但延迟高)、RabbitMQ(低延迟但吞吐低),RocketMQ平衡吞吐、延迟、事务消息、中文生态。

  36. RocketMQ分布式存储?
    主题分多个队列(Queue),分布在不同Broker,每个队列多副本。

  37. Broker宕机处理?

    • 主从切换(Slave同步数据,自动提升为Master)。

    • 集群消费模式(重试其他Broker)。

  38. 发现Broker?
    通过NameServer(服务发现)获取Broker路由信息。

  39. RocketMQ核心部分?
    NameServer(元数据)、Broker(存储)、Producer、Consumer。

  40. NameServer部署几台?
    可多台(通常2-4),集群部署避免单点,但节点间无数据同步(各存全量数据)。

  41. Broker注册到哪个NameServer?
    配置的所有NameServer(全部注册)。

  42. 获取Broker信息?
    客户端定时从NameServer拉取路由表。

  43. 感知Broker宕机?
    NameServer心跳检测(Broker定时上报),超时则剔除。

  44. Master同步Slave?
    异步或同步复制(取决于配置)。

  45. Slave挂掉影响?
    无直接影响(Master仍服务),但降低可用性(无法故障切换)。

  46. Master挂掉?

    • 自动切换:Slave提升为Master(需配置Dledger或故障转移)。

    • 手动干预:依赖运维脚本。

  47. Dledger机制?
    Raft协议实现,保证多副本数据一致性,自动选主和故障转移。

五、分布式锁:

  1. 需要使用分布式锁的场景?
    秒杀库存扣减、集群定时任务调度、共享资源访问(如文件修改)、防止重复提交等。

  2. 常见的分布式锁解决方案?

    • 基于数据库(唯一索引、悲观锁)

    • 基于Redis(SETNX+过期时间)

    • 基于ZooKeeper(临时顺序节点)

    • 基于Etcd(租约机制)

  3. Redis分布式锁实现方法?
    命令:SET lock_key random_value NX PX 3000(原子操作设值+过期时间)。
    释放:Lua脚本校验值再删除(防误删)。
    缺陷:主从切换可能锁失效(可用RedLock算法缓解)。

  4. ZooKeeper分布式锁实现原理?

    • 争抢锁:所有客户端在锁目录下创建临时顺序节点。

    • 判断最小节点:序号最小的节点获锁。

    • 监听前序节点:未获锁的客户端监听前一个节点,释放时通知下一个节点。

    • 优点:强一致性,无锁失效问题;缺点:性能较低。

  5. ZK和Redis分布式锁优缺点?

    • Redis
      优点:性能高、实现简单。
      缺点:非强一致性(主从同步延迟可能锁失效)。

    • ZooKeeper
      优点:强一致性、可靠性高。
      缺点:性能较低、依赖ZK集群。

  6. Mysql如何做分布式锁?

    • 方法1:基于唯一索引(插入成功获锁,删除释放)。

    • 方法2:基于悲观锁(SELECT ... FOR UPDATE)。
      缺点:数据库性能瓶颈,锁无自动失效(需超时机制)。

  7. 业界大公司的分布式锁框架?

    • Google:Chubby(基于Paxos,类似ZK)。

    • 阿里巴巴:基于Redis的分布式锁(Redisson封装)。

    • Netflix:基于ZooKeeper的分布式锁。

    • Apache:Curator(ZK客户端,提供分布式锁封装)。

六、分布式服务调用:

  1. 什么是RPC?
    远程过程调用,像调用本地方法一样调用远程服务,隐藏网络细节。

  2. RPC over HTTP vs RPC over TCP?

    • HTTP:通用、穿透性好(如Rest),但性能较低。

    • TCP:自定义协议(如Dubbo),性能高,但更复杂。

  3. Dubbo核心组件?

    • Provider:服务提供者

    • Consumer:服务消费者

    • Registry:注册中心(如Zookeeper)

    • Monitor:监控中心

    • Container:服务运行容器

  4. Dubbo服务调用过程?
    消费者通过代理调用→从注册中心获取服务列表→负载均衡选Provider→网络传输(序列化/反序列化)→执行并返回结果。

  5. 集群容错方案?

    • Failover(默认):失败自动重试其他节点。

    • Failfast:快速失败,立即报错。

    • Failsafe:忽略错误,记录日志。

    • Failback:失败后台记录,定时重试。

    • Forking:并行调用多个节点,取最先返回的结果。

    • Broadcast:广播调用所有节点,任意一个报错则报错。

  6. 服务调用是阻塞的吗?
    默认同步阻塞调用,但支持异步调用(Future或回调)。

  7. Dubbo支持的协议及场景?

    • dubbo协议(默认):TCP长连接,高性能,适合大并发小数据量。

    • rmi协议:JDK标准,适合短连接大数据包。

    • http协议:基于HTTP,易跨语言。

    • hessian协议:基于HTTP,适合多语言交互。

  8. Dubbo vs Spring Cloud?

    • Dubbo:性能高(RPC),适合内部服务调用。

    • Spring Cloud:生态全(HTTP+Rest),适合微服务全家桶。
      根据团队技术栈和需求选择。

  9. 负载均衡策略?

    • Random(默认):随机选择。

    • RoundRobin:轮询。

    • LeastActive:选最不活跃的节点(请求数最少)。

    • ConsistentHash:一致性Hash,相同参数总是请求同一节点。

  10. 序列化框架?
    默认Hessian2,还支持Kryo(高性能)、FST、JSON等。

  11. 服务降级?

    • 配置mock值:强制返回默认值(如null)。

    • 容错mock:失败时执行mock逻辑。

  12. 服务暴露过程?
    服务提供者启动→向注册中心注册服务→本地暴露服务(启动Netty服务器监听请求)。

  13. 服务引入过程?
    消费者启动→从注册中心订阅服务→获取提供者列表→创建代理对象(用于远程调用)。

  14. 支持一个服务多个协议?
    支持,可在@Service注解中配置多个协议(如dubbo和hessian),不同协议不同端口。

  15. 支持一个服务多个注册中心?
    支持,可配置服务同时注册到多个注册中心(如Zookeeper和Nacos)。

  16. 支持一个服务多个版本?
    支持,通过版本号(version)区分,消费者可指定调用特定版本的服务。

七、微服务:

  1. 如何理解微服务?
    将单体应用拆分为一组小型、独立部署的服务,每个服务围绕特定业务能力构建,服务间通过轻量级通信协作。

  2. 微服务特点?

    • 单一职责

    • 独立部署、扩展和技术选型

    • 去中心化治理

    • 容错性强

    • 通过API交互

  3. SOA vs 微服务?

    • SOA:强调集成(ESB总线)、复用、粗粒度服务。

    • 微服务:强调独立、轻量通信(HTTP/RPC)、细粒度服务、快速交付。

  4. 微服务优缺点?

    • 优点:灵活技术栈、独立扩缩容、故障隔离、易于迭代。

    • 缺点:运维复杂、网络延迟、数据一致性难、测试部署复杂。

  5. Spring Cloud Netflix组件?

    • Eureka:服务注册发现

    • Ribbon:客户端负载均衡

    • Feign:声明式HTTP客户端

    • Hystrix:熔断降级

    • Zuul:网关(旧版)

  6. Spring Cloud Alibaba组件?

    • Nacos:注册中心+配置中心

    • Sentinel:流量控制、熔断降级

    • Seata:分布式事务

    • Dubbo:RPC调用

  7. 断路器作用?
    防止服务雪崩:当下游服务故障时,快速失败或降级,避免资源耗尽。

  8. Spring Cloud实现服务注册?
    服务提供者通过@EnableDiscoveryClient向注册中心(如Eureka/Nacos)注册实例信息。

  9. Eureka vs Zookeeper?

    • Eureka:AP架构,保证可用性,适合注册中心。

    • Zookeeper:CP架构,保证一致性,适合分布式协调。

  10. Ribbon作用?
    客户端负载均衡:从注册中心获取服务列表,根据策略(如轮询、随机)选择实例调用。

  11. Feign作用?
    声明式REST客户端:基于注解和接口定义HTTP请求,整合Ribbon和Hystrix。

  12. Hystrix作用?
    熔断器:实现服务熔断、降级、线程隔离,提高系统弹性。

  13. Spring Cloud Bus作用?
    消息总线:用于广播配置变更(配合Config),实现批量刷新配置。

  14. 网关作用?

    • 路由转发

    • 认证鉴权

    • 限流熔断

    • 日志监控
      (如Spring Cloud Gateway)

  15. Spring Cloud vs Dubbo?

    • Spring Cloud:生态全(HTTP+Rest),适合微服务全家桶。

    • Dubbo:性能高(RPC),适合内部服务调用。

    • 现在可融合(Spring Cloud Alibaba整合Dubbo)。

  16. Restful?
    一种架构风格:资源用URI标识,通过HTTP方法(GET/POST/PUT/DELETE)操作,无状态、可缓存。

  17. 如何拆分服务?拆分原则?

    • 根据业务领域(DDD限界上下文)

    • 单一职责、高内聚低耦合

    • 团队结构(康威定律)

    • 避免分布式大单体

  18. 服务网格(Service Mesh)?

    • 是什么:基础设施层,处理服务间通信(如Istio、Linkerd)。

    • 特点:解耦业务代码与通信逻辑(Sidecar代理)。

    • 解决:服务发现、负载均衡、熔断、安全、可观测性等。

  19. DDD(领域驱动设计)?
    通过领域模型和通用语言解决复杂业务问题,核心包括:

    • 限界上下文(Bounded Context)

    • 实体、值对象、聚合根

    • 领域事件、仓储、工厂
      用于指导微服务拆分和架构设计。

八、分布式事务:

  1. 什么是分布式事务?
    跨多个数据库或服务的事务操作,需要保证所有操作要么全部成功,要么全部失败。

  2. 常用解决方案?

    • 2PC/3PC(强一致性)

    • TCC(补偿型)

    • 消息事务(最终一致性)

    • Saga(长事务)

    • 本地消息表

  3. XA方案流程?
    基于数据库XA协议:

    1. 事务管理器(TM)启动全局事务。

    2. 资源管理器(RM)执行分支事务(预提交)。

    3. TM收集所有RM状态,决定提交或回滚。
      缺点:同步阻塞,性能低。

  4. 2PC(两阶段提交)?

    • 阶段一(准备):协调者询问所有参与者是否可提交,参与者执行事务但不提交。

    • 阶段二(提交/回滚):若所有参与者同意,协调者通知提交;否则回滚。
      缺点:同步阻塞、单点问题、数据不一致(协调者宕机)。

  5. 3PC(三阶段提交)?
    在2PC基础上增加超时机制和预提交阶段:

    • CanCommit:询问参与者是否具备条件。

    • PreCommit:预执行事务。

    • DoCommit:提交或回滚。
      减少阻塞,但仍可能数据不一致。

  6. TCC(Try-Confirm-Cancel)?
    业务层补偿型方案:

    • Try:预留资源(如冻结库存)。

    • Confirm:确认操作(扣减库存)。

    • Cancel:取消操作(释放库存)。
      需业务实现补偿逻辑,保证最终一致性。

  7. Seata解决方案?

    • AT模式(默认):基于undo_log日志,实现两阶段提交(无侵入)。

    • TCC模式:需业务实现Try/Confirm/Cancel接口。

    • Saga模式:长事务补偿流程。

    • XA模式:基于数据库XA协议。

  8. 如何选择方案?考虑维度:

    • 一致性要求(强/最终)

    • 性能(吞吐、延迟)

    • 业务侵入性

    • 复杂度与维护成本

    • 技术栈兼容性

  9. Saga模式?
    长事务解决方案:将大事务拆分为多个本地事务,每个事务有对应补偿操作。失败时逆向执行补偿。
    适用于业务流程长、低一致性要求的场景。

  10. 常见分布式事务框架及原理?

    • Seata:AT/TCC/XA/Saga模式。

    • RocketMQ事务消息:半消息机制实现最终一致性。

    • LCN(早期):基于代理连接池,模拟两阶段提交。

  11. 消息队列解决分布式事务?
    使用事务消息(如RocketMQ):

    1. 发送半消息(对消费者不可见)。

    2. 执行本地事务。

    3. 根据本地事务结果提交或回滚消息。

    4. 消费者消费消息,保证最终一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98274.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98274.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98274.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础入门常用198英语单词详解

最近,我总结了一份Python学习者入门常用单词表,列出了Python学习中常见的198个高频单词,供初学者学习使用。 这些单词都比较简单,非常易于理解,在掌握好单词的基础上,再去学Python可以达到事半功倍的效果。…

EP-SPY 網路追蹤規避實驗:山脈通聯測試

EP-SPY V3.0 https://github.com/MartinxMax/ep-spy 基於 GI6E 編碼的無線電通信工具,用於保護您的隱私。 https://github.com/MartinxMax/gi6e 編寫了偽協議以防止內容被解密無法通過網絡追蹤,抵抗官方監控無線音頻廣播,用於隱蔽信息傳輸…

苹果 FoundationModels 秘典侠客行:隐私为先的端侧 AI 江湖

引子 话说侠客岛之上,有一对年轻侠侣 ——「青锋剑客」凌云与「素心仙子」苏凝,二人自幼习武,尤擅拆解各路奇功秘籍。 近日听闻苹果谷(Apple)于 WWDC 2025 武林大会之上,亮出一门全新绝学「FoundationMod…

华为基于IPD的产品质量计划模板

目录 模板:产品质量计划模板....................................... 1 1. 介绍...................................................................... 5 1.1. 范围和目的.................................................... 5 1.2. 参考资料..…

事务管理的选择:为何 @Transactional 并非万能,TransactionTemplate 更值得信赖

在 Spring 生态的后端开发中,事务管理是保障数据一致性的核心环节。开发者常常会使用 Transactional 注解快速开启事务,一行代码似乎就能解决问题。但随着业务复杂度提升,这种“简单”的背后往往隐藏着难以察觉的隐患。本文将深入剖析 Spring…

CodePerfAI体验:AI代码性能分析工具如何高效排查性能瓶颈、优化SQL执行耗时?

前阵子帮同事排查用户下单接口的性能问题时,我算是真切感受到 “找性能瓶颈比写代码还磨人”—— 接口偶尔会突然卡到 3 秒以上,查日志只看到 “SQL 执行耗时过长”,但具体是哪个查询慢、为什么慢,翻了半天监控也没头绪&#xff0…

《sklearn机器学习——绘制分数以评估模型》验证曲线、学习曲线

估计器的偏差、方差和噪声 每一个估计器都有其优势和劣势。它的泛化误差可以分解为偏差、方差和噪声。估计器的偏差是不同训练集的平均误差。估计器的方差表示对不同训练集,模型的敏感度。噪声是数据的特质。 在下图中,可以看见一个函数 f(x)cos⁡32πxf…

2025年AI PPT必修课-汇报中AI相关内容的“陷阱”与“亮点”

《2025年AI PPT必修课-汇报中AI相关内容的“陷阱”与“亮点”》 (适用于方案汇报、战略PPT、标书/投资人演示)一、内容类坑(战略/趋势层面)❌ Pitfall (不要写)✅ Correct Expression (推荐写法)Why (原因)还在强调 Caffe / Theano / TF1.x / LSTM采用 P…

Java数据结构 - 顺序表模拟实现与使用

目录1.顺序表的基本介绍2.顺序表的模拟实现2.1 常见的功能2.2 基本框架2.3 方法的实现2.3.1 add方法2.3.2 size方法2.3.3 display方法2.3.4 add(int pos,E data)方法2.3.5 remove方法2.3.6 get方法2.3.7 contain方法2.3.8 indexOf方法2.3.9 set方法2.3.1…

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十六)windows平台运行时隐藏控制台

1、主程序第一句添加: 必须放在所有代码第一句 #![cfg_attr(windows, windows_subsystem "windows")]2、 编译命令:cargo build --release3、 编译完成后运行可执行文件: 项目目录/target/release/项目名.exe

什么是静态住宅IP 跨境电商为什么要用静态住宅IP

静态住宅IP的定义静态住宅IP是指由互联网服务提供商(ISP)分配给家庭用户的固定IP地址。与动态IP不同,静态IP不会频繁变动,长期保持稳定。其特点包括:固定性:IP地址长期不变,适合需要稳定网络环境…

RabbitMQ 初步认识

目录 1. 基本概念 2. RabbitMq 的工作流程 3. 协议 4. 简单的生产者, 消费者模型 4.1 我们先引入 rabbitmq 的依赖 4.2 生产者 4.3 消费者 1. 基本概念 Pruducer : 生产者, 产生消息Consumer : 消费者, 消费消息Broker : RabbitMq Server, 用来接收和发送消息Connectio…

Redis(46) 如何搭建Redis哨兵?

搭建 Redis 哨兵(Sentinel)集群,确保 Redis 服务具有高可用性。以下是详细的步骤,从 Redis 安装、配置主从复制到配置和启动 Sentinel 集群,并结合相关的代码示例。 步骤 1:安装 Redis 首先,需要…

Grafana 多指标相乘

PromQL中多指标相乘 PromQL表达式: 0.045 * h9_daily_income{coin"nock"} * h9_pool_price_cny{coin"nock"}📈 基础:单指标运算 常数与指标相乘 在PromQL中,常数与指标的乘法是最简单的运算: # ✅…

【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录 一、前言 二、常用的数据同步解决方案 2.1 为什么需要数据同步 2.2 常用的数据同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介绍 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…

分布式数据架构

分布式数据架构是一种将数据分散存储在多台独立计算机(节点)上,并通过网络协调工作的系统设计。其核心目标是解决海量数据处理、高并发访问、高可用性及可扩展性等传统集中式数据库难以应对的挑战。以下是关键要点解析:一、核心原…

Spark 中spark.implicits._ 中的 toDF和DataFrame 类本身的 toDF 方法

1. spark.implicits._ 中的 toDF(隐式转换方法)本质这是一个隐式转换(implicit conversion),通过 import spark.implicits._ 被引入到作用域中。它的作用是为本地 Scala 集合(如 Seq, List, Array 等&#…

如何在MacOS上卸载并且重新安装Homebrew

Homebrew是一款针对macOS操作系统的包管理工具,它允许用户通过命令行界面轻松安装、升级和管理各种开源软件包和工具。Homebrew是一个非常流行的工具,用于简化macOS系统上的软件安装和管理过程。一、卸载 Homebrew方法1:官方卸载脚本&#xf…

如何简单理解状态机、流程图和时序图

状态机、流程图和时序图都是软件工程中用来描述系统行为的工具,但它们像不同的“眼镜”一样,帮助我们从不同角度看问题。下面用生活比喻来简单理解思路:状态机:想象一个交通信号灯。它总是在“红灯”“黄灯”“绿灯”这些状态之间…

消失的6个月!

已经6个月没有更新了 四个月的研一下生活 两个月暑假,哈哈,其实也没闲着。每天都有好好的学习,每天学习时长6h 暑假按照导师的指示开始搞项目了,项目是关于RAG那块中的应用场景,简单来说就是deepseek puls ,使用大…