1.rocketMQ的事务消息原理是怎样的?half消息存在哪里?
- 应用模块遇到要发送事务消息的场景时,先发送prepare消息给MQ。
- prepare消息发送成功后,应用模块执行数据库事务(本地事务)。
- 根据数据库事务执行的结果,再返回Commit或Rollback给MQ。
- 如果是Commit,MQ把消息下发给Consumer端,如果是Rollback,直接删掉prepare消息。
- 第3步的执行结果如果没响应,或是超时的,启动定时任务回查事务状态(最多重试15次,超过了默认丢弃此消息),处理结果同第4步。
- MQ消费的成功机制由MQ自己保证。
事务消息有专门的一个队列RMQ_SYS_TRANS_HALF_TOPIC,所有的prepare消息都先往这里放,当消息收到Commit请求后,就把消息再塞到真实的Topic队列里,供Consumer消费,同时向RMQ_SYS_TRANS_OP_HALF_TOPIC塞一条消息。简易流程图如下: 事务消息有专门的一个队列RMQ_SYS_TRANS_HALF_TOPIC,所有的prepare消息都先往这里放,当消息收到Commit请求后,就把消息再塞到真实的Topic队列里,供Consumer消费,同时向RMQ_SYS_TRANS_OP_HALF_TOPIC塞一条消息。简易流程图如下:
2.hashMap的实现原理?
3.rocketMQ的顺序消息是怎样的?
4.JVM内存结构
1.程序计数器:行号指示器
2.虚拟机栈:局部变量表、操作数栈、动态链接、方法出口
3.本地方法栈:本地native方法
4.方法区:类信息、常量、静态变量
5.堆:对象
对象怎么分配的?
5.负载均衡策略有哪些
1、随机策略——RandomRule
2、轮询策略——RoundRobinRule 注:Ribbon默认策略
3、重试策略——RetryRule
4、最低并发策略——BestAvailableRule
5、可用过滤策略——AvailabilityFilteringRule 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) 性能仅次于最低并发策略。
6、响应时间加权策略——WeightedResponseTimeRule
每隔30秒计算一次服务器响应时间,以响应时间作为权重,响应时间越短的服务器被选中的概率越大。
7、区域权衡策略——ZoneAvoidanceRule
6.你还知道哪些RPC框架?TCP还是HTTP?
7.Nacos原理是怎样的?
8.Redis集群之间是如何通信的?采用的是什么协议?
redis cluster节点间采取gossip协议进行通信。
9.Redis在项目中的用途是怎么样的?
缓存/分布式锁
10.线程池的原理是怎样实现的?
- corePoolSize: 核心线程数量
- maximumPoolSize: 最大的线程数量
- workQueue:多余任务等待队列
- keepAliveTime:非核心线程空闲时间
- threadFactory: 创建线程的工厂
- handler:线程池拒绝策略
线程池原理关键技术:锁(lock,cas)、阻塞队列、hashSet(资源池)
11.IO模型熟悉吗?netty是怎样的?
12.如何解决项目中的慢查询问题?
13.你项目中的监听mysql binlog是怎么实现的?(cannel)
14.ThreadLocal是怎么样的?
ThreadLocal提供了「线程局部变量」,一个线程局部变量在多个线程中,分别有独立的值(副本)。 ThreadLocalMap key:ThreadLocal, value:共享变量
15.AQS你熟悉吗?都有哪些实现呢?state变量是如何控制的?
16.你项目中用到了哪些设计模式?
策略、责任链等
17.rocketMQ是怎么保证消息可靠性的?刷盘是同步还是异步?
1.生产者重试机制 2.broker一主多从,同步刷盘 3,消费者重试机制,死信队列
18.场景分析:如果做一个用户积分兑换怎样设计?
19.阻塞队列有哪些?
1. ArrayBlockingQueue
由数组结构组成的有界阻塞队列
2 LinkedBlockingQueue
由链表结构组成的有界阻塞队列
大小默认值是 Integer.MAX_VALUE
LinkedBlockingQueue 实现了读写分离,可以实现数据的读和写互不影响,这在高并发的场景下,对于效率的提高无疑是非常巨大的
3 SynchronousQueue
一个没有缓冲的无界队列
4)PriorityBlockingQueue
支持优先级排序的无界队列
默认大小为 11
5)DelayQueue 带有延迟时间的无界阻塞队列