Session 指的是 ZooKeeper 服务器与客户端会话。在 ZooKeeper 中,一个客户端连接是指客户端和服务器之间的一个 TCP 长连接。客户端启动的时候,首先会与服务器建立一个 TCP 连接,从第一次连接建立开始,客户端会话的生命周期也开始了。通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向Zookeeper服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的Watch事件通知。
Zookeeper Watcher 机制
Watcher(事件监听器),是Zookeeper中的一个很重要的特性。Zookeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper服务端会将事件通知到感兴趣的客户端上去,该机制是Zookeeper实现分布式协调服务的重要特性。
Zookeeper ZAB 协议
ZAB(ZooKeeper Atomic Broadcast 原子广播) 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。 在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。
SkyWalking Collector源码浅析
SkyWalking Collector 入口
SkyWalking Collector 入口是 org.apache.skywalking.oap.server.starter.OAPServerStartUp 的 main() 方法。
SkyWalking Agent源码浅析
SkyWalking Agent 入口
SkyWalking Agent 采用 JavaAgent 机制,其相关原理可自行 google。
SkyWalking Agent 入口在 org.apache.skywalking.apm.agent.SkyWalkingAgent 的 premain() 方法。主要看以下三行代码:
Apache SkyWalking 使用指南
简介
SkyWalking 是针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native 和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统。主要提供以下功能:
SpringBoot源码解析二
前言
要说 SpringBoot 有什么优点的话,比较核心的就是简化配置和自动配置了。前面我们分析了 SpringBoot 的启动流程还有一些监听器相关的源码,今天来分析下 SpringBoot 的自动配置具体怎么实现的,以便日后遇到相关错误知道从哪里入手。
常量池及字符串对象的创建
SpringBoot源码解析一
启动流程
1 | @SpringBootApplication |
首先从启动类开始看起,main() 方法很简单,调用 SpringApplication 的静态方法run()。
ThreadPoolExecutor
简介
- 对象的创建和销毁需要一定的开销,线程亦是对象,创建线程和销毁线程必然也需要同样的开销。
- 在某些情况下,线程执行的任务耗时不长,但是任务很多。这样就导致频繁的创建、销毁线程,需要很大的时间开销和资源开销。线程池应运而生。
- 线程池相当于在这一个池中维护多个线程,需要执行任务时从池中取出一个线程用来执行任务,任务执行完成后将线程放回池中。这样也就减少了开销。