mybatis框架
1.Mybatis怎样生成Mapper接口的实现类执行sql?
Mybatis运行时会使用JDK动态代理为Maper接口生成代理proxy对象,代理对象proxy会拦截接口方法,从而执行sql
Dubbo
1.Dubbo协议特点及适用场景?
①Dubbo缺省协议采用单一长连接和NIO异步通讯,②适合于小数据量大并发的服务调用,③以及服务消费者机器数远大于服务提供者机器数的情况
2.Dubbo服务调用超时的实现原理是什么?
①dubbo默认采用了netty做为网络组件,它属于—种NIO的模式。②消费端发起远程请求后,线程不会阻塞等待服务端的返回,而是马上得到一个ResponseFuture,③消费端通过不断的轮询机制判断结果是否有返回。④因为是通过轮询,所以要避免死循环,为了解决这个问题就引入了超时机制,只在一定时间范围内做轮询,如果超时时间就返回超时异常
3.Dubbo服务集群默认的容错模式是什么,并解释一下该模式?
①默认是Failover(失败自动切换)模式
②解释:失败自动切换,当出现失败,重试其它服务器。(缺省通常用于读操作,但重试会带来更长延迟
③可通过retries来设置重试次数
SpringCloud
1.Hystrix服务隔离策略有哪些?
①线程池隔离模式;①信号量隔离模式
缓存
1.Redis有哪些集群方案?
①codis 它支持在节点数量改变情况下,旧节点数据可恢复到新hash节点
②redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。具体看官方文档介绍
③在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高
Kafka
1.在kafka中,如果某个topic有多个partition,生产者是怎么知道该将数据发往哪个partition呢?
①partition在写入时候可以指定需要写入的partition,如果有指定,则写入对应partition。
②如果没有指定partition,但是设置了数据的key,则会根据key的值hash出一个partition。
③如果既没指定partition,又没有设置key,则会轮询选出一partition。
2.生产者在向kafka写入消I的时候,怎么保证消息不丢失呢?
①通过ACK应答机制!在生产者向队列写入数据的时候可以设置参数来确定是否确认kafka接收到数据,这个参数可设置的值为0、1、all。
②0代表producer往集群发送数据不需要等到集群的返回,不确保消息发送成功。安全性最低但是效率最高。
③1代表producer往集群发送数据只要leader应答就可以发送下一条,只确保leader发送成功。
④all代表producer往集群发送数据需要所有的follower都完成从leader的同步才会发送下—条,确保leader发送成功和所有的副本都完成备份。安全性最高,但是效率最低。