1.事务基本特性
- A(原子性):要么全部成功,要么全部失败;
- C(一致性):程序设计要与业务逻辑相匹配;
- I(隔离性):事务之间是互不干扰的;
- D(持久性):事务提交后数据会存储到磁盘中;
2.AOP理解
AOP:面向切面编程,体现了低耦合的特点;一般用于日志、权限等核心组件,而这些核心组件融入到业务逻辑中(每个业务逻辑都需要补充核心组件)会造成代码冗余,所以使用aop实现;通过将公共代码逻辑抽象出一个切面,然后注入到目标对象(具体业务)中;aop就是通过动态代理的方式,将需要注入切面的对象进行代理,在调用时将公共逻辑添加进去,不改变原有业务逻辑,直接对原有业务逻辑进行功能加强即可;具体可见aop日志处理
下面简单介绍几个核心概念:
切面:有@Aspect注解,生成公共逻辑;
连接点:某个方法调用的时间点或者异常处理的时间点。一个连接点代表一个方法的执行;
通知:在切面的某个特定连接点执行的动作,常有around、after、before等;
切点:满足该切点的连接点上进行通知操作;@PointCut注解;
3.IOC理解
依赖注入
应用程序依赖IOC容器,将应用程序所用的对象注入到IOC容器中,需要时直接获取即可;
没有IOC时使用new创建对象,有了IOC可以通过构造函数注入、属性注入等方式进行依赖注入;
控制反转
由之前的程序内部new对象,反转为IOC容器控制对象的生命周期;
4.kafka的rebalance机制
rebalance是一个协议,规定了一个消费组下的消费者如何分配topic的分区
触发rebalance机制的条件:
- 消费者成员个数发生变化(新增消费者加入到消费组中或离开消费组)
- 订阅的topic个数发生变化
- 订阅的topic的分区发生变化
消费者分区策略:
- Range 范围分区(默认)
- RoundRobin 轮询分区
- Sticky策略