客户端源码总结
1. 把核心流程封装在一个方法里面,代码流程是比较清晰的
2. 自定义异常,异常的提示很清晰.
3. 底层代码异常往上抛,核心逻辑捕获异常,对异常进行处理.
4. 面向对象的思想还是不错的.
5. 自己设计高性能的多线程结构(线程安全,读多写少)
6. 高并发的情况下,为了性能(线程安全),尽量缩小锁的粒度.分段加锁.
7. 为了减少GC,设置了内存池.
8. 客户端发送消息,支持异步,异步化的设计(回调函数),提升了性能.
9. kafka的网络设计,一个客户端是管理多个网络的.
10. 批处理的设计(吞吐量上升)
11. 多个请求,把发往同一个broker请求合并在一起(减少网络请求)
12. 响应的处理(考虑的很全面)
13. 支持序列化,可以配置压缩格式.
14. 拆包/粘包 的处理,