10 2019 档案
摘要:通过前面几篇文章,我们可以从整体上看到zk是如何处理网络数据的宏观架构。 本文我们从细节着手,看一下一个tcp的包是如何转换到内部的数据流处理的。 一、监听用户请求socket 基于NIO的端口监听,获取tcp数据流。 二、从连接中解析数据 接上一个nio提交过来的连接后,由 SelectorThr
阅读全文
摘要:我们知道,zk就是一个个处理链组成的。 但是,这些处理链是在什么创建的呢? ZooKeeper 中有三种角色的服务节点存在: Leader, Follower, Observer . 而每个服务节点的承担的任务是不一样的,所以处理任务的逻辑是不一样的。而在ZK中,则是巧妙的通过责任链模式将各自节点的
阅读全文
摘要:ZooKeeper 作为优秀的分布系统协调组件,值得一探究竟。它的启动类主要为: 1. 单机版的zk 使用 ZooKeeperServerMain 2. 集群版的zk 使用 QuorumPeerMain 与用户端各服务端之间存在着各种通信!当然主要分为三个: 1. 客户端与zk的通信; 2. 各zk
阅读全文
摘要:我们有些场景,是需要使用 多线各一起执行某些操作的,比如进行并发测试,比如进行多线程数据汇总。 自然,我们可以使用 CountDownLatch, CyclicBarrier, 以及多个 Thread.join()。 虽然最终的效果都差不多,但实际却各有千秋。我们此处主要看 CyclicBarrie
阅读全文
摘要:所谓异步任务,就是不在当前线程中进行执行,而是另外起一个线程让其执行。那么当前线程如果想拿到其执行结果,该怎么办呢? 如果我们使用一个公共变量作为结果容器,两个线程共用这个值,那么应该是可以拿到结果的,但是这样一来,对业务就会造成侵入干扰了,因为你始终得考虑将这个共享变量传入到这个异步线程中去且要维
阅读全文