
软件工程应用与实践
文章平均质量分 80
一个双子座的程序猿
来自山东大学的一条咸鱼
展开
-
ZooKeeper源码分析网络通信总结
文章目录2021SC@SDUSC整体框架客户端发起请求/接收响应服务端接收请求服务端处理请求2021SC@SDUSC本章将用图来进行网络通信大总结整体框架客户端发起请求/接收响应服务端接收请求服务端处理请求...原创 2021-12-26 18:49:45 · 858 阅读 · 0 评论 -
ZooKeeper源码分析之完整网络通信流程(三)
文章目录2021SC@SDUSC前言客户端收到服务端的响应后的处理流程总结2021SC@SDUSC前言上一章讲到服务端处理完请求,通过NIOServerCnxn的sendBuffer()方法写入客户端的缓冲区中,在此之前一步已经初始化了ConnectResponse响应对象,因此写完后会调用rsp.serialize(bos, “connect”),返回给客户端一个ConnectResponse响应对象。当客户端收到这一响应对象时,又该如何操作,且看下文。客户端收到服务端的响应后的处理流程在第一章原创 2021-12-19 14:33:17 · 1125 阅读 · 0 评论 -
ZooKeeper源码分析之完整网络通信流程(二)
文章目录2021SC@SDUSC前言SelectorThread总结2021SC@SDUSC前言本章进入源码世界来一步一步分析客户端与服务端之间是如何通过ClientCnxn/ServerCnxn来建立起网络通信的。在上一章中已经介绍客户端是如何将请求发送到服务端的,本章将介绍服务端是如何响应客户端请求的,下一章将介绍客户端收到服务端的响应之后是如何操作的。SelectorThread在上一章讲述到客户端将请求发送到服务端时,会将传输的请求包写入缓冲区中。此时服务端将通过SelectorThrea原创 2021-12-12 17:52:49 · 1547 阅读 · 0 评论 -
ZooKeeper源码分析之完整网络通信流程(一)
文章目录2021SC@SDUSC前言ClientCnxn执行流程2021SC@SDUSC前言在本章中,将进入源码世界来分析客户端与服务端之间是如何通过ClientCnxn来建立网络通信的ClientCnxn执行流程① 在ZooKeeper的构造函数中,创建了客户端与服务端之间的ClientCnxn交互连接。从而使客户端发出请求通过该交互连接传输给服务端,其中createConnection方法返回的是ClientCnxn。 // 创建客户端连接,并初始化SendThread和Eve原创 2021-12-05 15:11:13 · 845 阅读 · 0 评论 -
ZooKeeper源码分析之ClientCnxn
2021SC@SDUSCClientCnxn在ZooKeeper中扮演的角色在Session创建之前,首先要了解客户端如何发起这些连接请求的,以及怎样处理的。在此之前的文章中,已经详细分析了客户端与服务端之间的连接以及ZooKeeper是如何维护这些连接的。就好比自来水工厂给每个家庭输送自来水。其中,我们已经分析明白了自来水工厂与每个家庭之间使用的水管是用的什么材料的、水管长度有多长、直径大小是多少、所能传输自来水的流量是多大、这根水管连接到哪户家庭的等等,即NIOServerCnxn或者Netty原创 2021-12-04 17:10:47 · 657 阅读 · 0 评论 -
ZooKeeper源码分析之Session
文章目录2021SC@SDUSC前言SessionTrackerImpl属性run()线程机制initializeNextSessionId生成会话IDtouchSession确定ticktime基本方法总结2021SC@SDUSC客户端创建 Socket 连接后,会尝试与服务器连接,如果连接成功,则与服务器之间形成Session。前言在ZooKeeper中,客户端和服务端之间的会话是怎样创建、检查更新、删除以及被如何维护的,将再接下来的文章中进行介绍和分析。SessionTrackerImpl原创 2021-11-28 23:27:23 · 1645 阅读 · 0 评论 -
ZooKeeper部分通信总结及后续内容简介
文章目录2021SC@SDUSC前言ZooKeeper通信模型服务端与客户端的通信流程Client、Follower和Leader三者之间的通信关系总结2021SC@SDUSC前言前面几篇文章对ServerCnxn以及ServerCnxnFactory源码进行了分析和解读。本章将对上述服务端连接进行细节讲解和总结,以进一步了解服务端连接的内容。ZooKeeper通信模型这里将用通信模型图来从全局观察ZooKeeper服务端与客户端、服务端与服务端之间是如何通信的。#mermaid-svg-h6P原创 2021-11-21 17:47:02 · 553 阅读 · 0 评论 -
ZooKeeper源码分析之NettyServerCnxnFactory
文章目录2021SC@SDUSC2021SC@SDUSC原创 2021-11-14 22:19:41 · 1492 阅读 · 0 评论 -
ZooKeeper源码分析之NIOServerCnxnFactory
文章目录2021SC@SDUSCNIOServerCnxnFactory工作流程(一)NIOServerCnxnFactory工作流程(二)NIOServerCnxnFactory.configureNIOServerCnxnFactory.start()启动服务该函数用来启动后台服务AcceptThreadSelectorThreadConnectionExpirerThread总结2021SC@SDUSC在讲述NIOServerCnxnFactory之前,先了解一下NIOServerCnxnFact原创 2021-11-07 23:03:45 · 1968 阅读 · 0 评论 -
ZooKeeper源码分析之NettyServerCnxn
文章目录2021SC@SDUSC源码分析总结2021SC@SDUSC本章将讲述基于Netty实现ServerCnxn服务器连接。使用Netty框架来高效处理服务器与客户端之间的通信。源码分析(1)属性,与NIO类似。NettyServerCnxn维护了服务器与客户端之间的通道缓冲、缓冲区以及会话等属性。 //获取基于Netty框架服务连接的日志 private static final Logger LOG = LoggerFactory.getLogger(NettyServerC原创 2021-10-31 22:41:31 · 1209 阅读 · 0 评论 -
ZooKeeper源码分析之NIOServerCnxn
文章目录2021SC@SDUSC源码分析总结2021SC@SDUSCNIOServerCnxn继承了ServerCnxn抽象类,使用NIO来处理与客户端之间的通信。源码分析(1)属性 //日志 private static final Logger LOG = LoggerFactory.getLogger(NIOServerCnxn.class); //基于NIO的ServerCnxn工厂 private final NIOServerCnxnFactory factor原创 2021-10-24 22:12:04 · 3504 阅读 · 0 评论 -
ZooKeeper源码分析之ServerCnxnFactory
文章目录2021SC@SDUSC类图ServerCnxnFactory源码分析2021SC@SDUSC服务端为每一个客户端连接维护了一个ServerCnxn来进行网络IO操作。而ZooKeeper中使用ServerCnxnFactory来管理与维护客户端的连接。类图#mermaid-svg-pqNsUAtrsjpczpf3 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);原创 2021-10-17 21:31:48 · 363 阅读 · 0 评论 -
ZooKeeper源码分析之ServerCnxn
文章目录2021SC@SDUSC类图ServerCnxn源码分析总结2021SC@SDUSCServerCnxn表示了一个客户端与服务端之间的连接,并且有两个具体实现——NIOServerCnxn和NettyServerCnxn。类图#mermaid-svg-VNF5bzEsLCsFgO4P .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:原创 2021-10-10 22:18:41 · 477 阅读 · 0 评论 -
ZooKeeper源码解析前期工作
文章目录2021SC@SDUSC一、ZooKeeper综述1.ZooKeeper是什么2.ZooKeeper文件系统3.ZooKeeper主从节点同步——ZAB协议二、组内分工总结2021SC@SDUSC一、ZooKeeper综述1.ZooKeeper是什么ZooKeepe是Apache Hadoop项目下的一个子项目,是一个树形目录服务。ZooKeeper是一个分布式的、开源的分布式应用程序的协调服务。换句话说,它是一个用来管理分布式应用程序的软件。既然它是一个管理的软件,那么它也为分布原创 2021-09-28 15:45:30 · 200 阅读 · 0 评论