ClassLoader

类加载机制

  在编译成的Class文件最终都要加载到虚拟机中才能被运行和使用Java虚拟机把描述类的数据从Class文件加载到内存并对数据进行校验转换解析和初始化最终形成可以被虚拟机直接使用的Java类型这个过程被称作虚拟机的类加载机制

Read More

Kafka-Concept

  关于Kafka的文章主要是为了学习在分布式系统下非常重要的部分如数据复制数据分区的真正实践同时对于消息队列的使用并不是很多从而通过学习Kafka相关内容来进行深入当然没有大型项目关于Kafka的深入实践很难结合业务场景来调优最佳实践和更加深刻的认知但还是希望通过这种方式来进行入门了解万变不离其宗的分布式系统下的复杂性

Read More

Kafka-Producer

  如今在维护各个微服务下考虑到最多的就是分布式系统的可用性–CAP那么就像数据密集型服务描述的那样需要考虑分布式系统下数据复制数据分区分布式事务本节通过看kafka的多分区复制方式来学习数据复制中需要考虑到的通用处理

Read More

Kafka-Fetch

  每个Broker上都有一个ReplicaManager它管理每个Partition的数据同步逻辑因为每个Partition都会存在副本从而在Broker中的TopicPartition可能是Leader或者Follower

  当它是Leader时就需要处理来自Producer的请求写入log数据同时等ISR集合同步完成如果是Follower就需要同步来自Leader的log数据保持数据同步

  在ReplicaManager中就会开启同步Follower线程来FetchMessage在ReplicaManager中会调用makeFollowers来处理同步Leader数据的逻辑

Read More

Netty write 流程

1. ChannelPipline 传播事件

  每一个Channel都会分配一个新的ChannelPipline所有的出入站事件都会流经ChannelPipline来进行处理

  其中处理每一个事件的主要是ChannelHandler例如ChannelOutboundHandlerChannelInboundHandler分别用来处理出入站事件通过调用ChannelHandlerContext实现它将被转发给同一超类型的下一个ChannelHandler进行处理

Read More

分布式事务

  在如今的项目实践中存在多个微服务之间互相通信对于一个外卖服务涉及到订单支付优惠券扣减餐厅下单外卖配送等在微服务设计下就需要保证多个系统之间的数据一致性这个时候就需要考虑到分布式事务来处理一致性问题

Read More

Zookeeper 简介与使用场景

  Zookeeper的视图结构和标准的Unix文件系统非常类似但没有引入传统文件系统中目录和文件等相关概念而是使用了其特有的数据节点概念我们称之为ZNodeZNode是Zookeeper中数据的最小单元每个ZNode上都可以保存数据同时还可以挂载子节点因此构成了一个层次化的命名空间我们称之为树

Read More

任务调度

  • 任务场景
      在支付宝中如果你在蚂蚁森林里面种植了一颗树苗它会根据用户每天使用支付宝的各种场景地铁出行线下支付等来生成相应的能量每天早上支付宝会通知每个用户收取能量以便他们能够种植更多的树苗

Read More

垃圾回收与检查工具

java内存区域

  运行时数据区域

  1. 程序计数器

  当前线程私有是当前线程所执行的字节码的行号指示器

  1. java虚拟机栈

  当前线程私有每个方法被执行时的栈帧用于储存局部变量表操作数栈动态连接方法出口等信息动态连接作用就是为了将这些方法符号引用转换为调用方法的直接引用因为有的对象调用方法时动态生成的所以在编译器不能确定要执行的符号从而需要在运行时去方法区动态的找

Read More