面试实战题-分布式技术

|-----|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 分布式 | 分布式锁 | 1、数据库:select 的 for update 操作是基于间隙锁 gap lock 实现的,这是一种悲观锁的实现方式,所以存在阻塞问题。 2、zookeeper临时顺序节点+Watch机制,如果是最小节点,则获得锁 3、redis的setnx方法在 Redis 集群环境下,依然存在问题。由于 Redis 集群数据同步到各个节点时是异步的,如果在 Master 节点获取到锁后,在没有同步到其它节点时,Master 节点崩溃了,此时新的 Master 节点依然可以获取锁,所以多个应用服务可以同时获取到锁。 4、redLock原理:当应用服务成功获取锁的 Redis 节点超过半数(N/2+1,N 为节点数) 时,并且获取锁消耗的实际时间不超过锁的过期时间,则获取锁成功 | 分布式 | 如何设计更优的分布式锁? (多种方式) 慢谈 Redis 实现分布式锁 以及 Redisson 源码解析 (Redis实现) |
| | dubbo和zookeeper扫盲 | Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。 | Dubbo入门教程-CSDN博客 https://github.com/apache/dubbo-spring-boot-project (dubbo代码) |
| | 分布式事务(待优化) | ● XA 方案(强一致) 基于1PC的弱 XA (去掉 XA 的 Prepare 阶段) 基于2PC的强 XA (prepare commit/rollback )。 ● TCC 方案(本质2PC,分try confirm cancel) ● 本地消息表(严重依赖于数据库的消息表来管理事务) ● 可靠消息最终一致性方案( RocketMQ 就支持消息事务) ● 最大努力通知方案(RocketMQ 的消息重试) ● SAGA(长事务拆分为多个本地短事务,由 Saga 事务协调器协调,如果正常结束那就正常完成,如果某个步骤失败,则根据相反顺序一次调用补偿操作) | https://github.com/daydreamdev/MeetingFilm/blob/master/note/%E6%B5%85%E6%9E%90%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1.md https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html http://svip.iocoder.cn |
| | dubbo面试题 | Dubbo推荐使用什么序列化框架,你知道的还有哪些? 推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。 | http://svip.iocoder.cn |
| | dubbo调用流程 | ● Provider 第 0 步,start 启动服务。 第 1 步,register 注册服务到注册中心。 ● Consumer 第 2 步,subscribe 向注册中心订阅服务。 【异步】第 3 步,notify 当服务发生变化时,获取最新的服务列表,更新本地缓存。 ● invoke 调用 Consumer 直接发起对 Provider 的调用,无需经过注册中心。而对多个 Provider 的负载均衡,Consumer 通过 cluster 组件实现。 ● count 监控 【异步】Consumer 和 Provider 都异步通知监控中心。 | http://svip.iocoder.cn |
| | Dubbo通信协议 | Dubbo支持的通信协议:dubbo://(推荐)、rmi://、hessian://、http://、webservice://、thrift://、memcached://、redis://、rest:// | https://www.jianshu.com/p/eb4960467e00 |
| | Dubbo负载均衡策略 | 随机/加权轮询/最小活跃调用数/一致性hash | http://svip.iocoder.cn |
| | 接口如何实现幂等性 | ● 对于每个请求必须有一个唯一的标识 ● 每次处理完请求之后,必须有一个记录标识这个请求处理过了。 ● 每次接收请求需要进行判断,判断之前是否处理过。 | http://svip.iocoder.cn |
| | Dubbo服务暴露原理 | ● 本地暴露是暴露在JVM中,不需要网络通信. ● 远程暴露是将ip,端口等信息暴露给远程客户端,调用时需要网络通信. | https://www.jianshu.com/p/60a9263f2ee2 |
| | RPC框架大比拼 | 1 grpc 基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发 | 分布式RPC框架性能大比拼 |
| | CAP理论 | 对于一个分布式计算系统,不可能同时满足一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三个设计约束 | 23 | 想成为架构师,你必须掌握的CAP细节-从0开始学架构-极客时间 |
| | zipkin调用链原理 | 在接入zipkin后,一次http请求则携带了其他信息:trace信息以及时间戳,然后才由http client去真正执行GET请求,追踪器将这次请求的span信息异步发送到zipkin的收集器。此时完成了一次请求的追踪。 | 404,您访问的页面已经不存在! |
| | 注册中心对比 | Eureka是AP,Consul、Zookeeper是CP | Eureka&Zookeeper&Consul 原理与对比_eureka的 leader与follower-CSDN博客 微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比-CSDN博客 |
| | 大型网站架构演进 | 淘宝从单机到大型分布式系统的演进历程 | https://segmentfault.com/a/1190000018626163#comment-area |
| | 分布式ID | 美团数据库分布式id方案 | Leaf------美团点评分布式ID生成系统 - 美团技术团队 |
| | 集群中使用定时任务xxl-job | "GLUE模式(Java)"的执行代码托管到调度中心在线维护,相比"Bean模式任务"需要在执行器项目开发部署上线,更加简便轻量 | 分布式任务调度平台XXL-JOB |

相关推荐
懒洋洋的华3695 小时前
消息队列-Kafka(概念篇)
分布式·中间件·kafka
March€5 小时前
分布式事务的基本实现
分布式
DieSnowK7 小时前
[Redis][环境配置]详细讲解
数据库·redis·分布式·缓存·环境配置·新手向·详细讲解
Lill_bin8 小时前
深入理解ElasticSearch集群:架构、高可用性与数据一致性
大数据·分布式·elasticsearch·搜索引擎·zookeeper·架构·全文检索
鱼跃鹰飞8 小时前
Leetcode面试经典150题-349.两个数组的交集
算法·leetcode·面试
戊子仲秋12 小时前
【LeetCode】每日一题 2024_9_19 最长的字母序连续子字符串的长度(字符串,双指针)
算法·leetcode·职场和发展
哲伦贼稳妥14 小时前
程序人生-我的外服经历(4)
经验分享·程序人生·职场和发展
程序猿进阶14 小时前
如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
java·ide·vscode·算法·面试·职场和发展·架构
无名之逆15 小时前
云原生(Cloud Native)
开发语言·c++·算法·云原生·面试·职场和发展·大学期末
qingcyb15 小时前
下载Kafka 3.0.0教程
分布式·kafka