ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 问题 1. 注册中心 eureka, zk,consul 和 nacos,做对比? 就分布式一致性协议角度出发,zk和consul都是CP确保一致性和容错性的;eureka和nacos是AP确保高可用和容错性的。(nacos还可以做为配置中心使用,选择CP模式) 就实现语言角度出发,Consul是go语言实现,其他3个都是Java实现。 就健康检查支持而言,4个都支持,zk是KeepAlive 生态支持,nacos支持sc集成,dubbo集成,k8s集成。 ![](https://img.kancloud.cn/8c/95/8c957b730d6a14697255102147ff9712_1358x1232.png) 2. 为什么nacos更适合做注册中心? * nacos的服务注册和下线快,基于消息机制通知客户端变更本地缓存的注册表信息。 * nacos支持多环境配置,可以通过namespace,Group等区分不同环境。 * 支持生态全,支持springcloud等,dubbo集成,k8s集成等。 3. 博弈论 * 海盗分金 ![](https://img.kancloud.cn/c3/52/c352e098460f3f71383f2062658007d0_1696x1068.png) 反向推理: - 首先到了4号提出的方案的时候肯定是最终方案,因为不管5号同意不同意都能通过,所以4号5号不必担心自己被投入大海。那此时5号获得的金币为0,4号获得的金币为100。 - 5号:因为4号提方案的时候 ,自己获取的金币为0 。所以只要4号之前的人分配给自己的金币大于0就同意该方案。 - 4号:如果3号提的方案一定能获得通过(原因:3号给5号的金币大于0, 5号就同意 因此就能通过),那自己获得的金币就为0,所以只要2号让自己获得的金币大于0就会同意。 - 3号:因为到了自己提方案的时候可以给5号一金币,自己的方案就能通过,但考虑到2号提方案的时候给4号一个金币,2号的方案就会通过,那自己获得的金币就为0。所以只要1号让自己获得的金币大于0就会同意。 - 2号:因为到了自己提方案的时候只要给4号一金币,就能获得通过,根本就不用顾及3 号 5号同意不同意,所以不管1号怎么提都不会同意。 - 1号:2号肯定不会同意。但只要给3号一块金币,5号一块金币(因为5号如果不同意,那么4号分配的时候,他什么都拿不到)就能获得通过。 答案:98,0,1,0,1 4. 分布式事务? 多数据源的数据一致性需要分布式事务保障。 分布式事务的实现有很多种协议,如Oracle的XA协议,有二阶段提交和3阶段提交两种实现。 二阶段提交: 阶段:准备和提交。 缺点: 1. 性能不好,资源占用高。未提交或者回滚,数据库资源会一直被占用。 2. 协调者故障,导致运行中的事务无法继续完成。 3. 丢失消息导致数据不一致性,一部分节点收到提交消息,另一部分没收到提交消息。 3阶段提交: