Jafka源代码分析——网络架构

在kafka中,每一个broker都是一个服务器。按照一般理解,服务器就是一个SocketServer,其不断接收用户的请求并进行处理。在Java中进行网络连接有两种方式一种为阻塞模式一种为非阻塞模式。Jafka采用非阻塞模式进行网络通讯。在Java的非阻塞模式中,建立socket server的一般流程如下:

1.启动ServerSocketChannel并将其绑定到特定的端口。

2.将ServerSocketChannel以及其感兴趣的操作注册到Selector,在这里感兴趣的操作是Accept

3.不断轮询Selector是否有感兴趣的事件发生,如果有则accept远程连接并进行处理

以上基本上是所有网络编程的基本流程,jafka也不例外。在jafka中,类Acceptor具体负责服务器的实现。该实现比较简单,这里不再做详细的叙述。

需要注意的是,Acceptor接收客户端的请求后会把其交给Processor类进行处理。用户会在配置文件中配置Processor的个数,Acceptor会议、以round robin的方式将客户端连接交给Processor进行处理。

Jafka源代码分析——网络架构,布布扣,bubuko.com

时间: 2024-12-23 11:56:45

Jafka源代码分析——网络架构的相关文章

Jafka源代码分析——随笔

Kafka是一个分布式的消息中间件,可以粗略的将其划分为三部分:Producer.Broker和Consumer.其中,Producer负责产生消息并负责将消息发送给Kafka:Broker可以简单的理解为Kafka集群中的每一台机器,其负责完成消息队列的主要功能(接收消息.消息的持久化存储.为Consumer提供消息.消息清理.....):Consumer从Broker获取消息并进行后续的操作.每个broker会有一个ID标识,该标识由人工在配置文件中配置. Kafka中的消息隶属于topic

Jafka源代码分析——LogManager

在Kafka中,LogManager负责管理broker上所有的Log(每一个topic-partition为一个Log).通过阅读源代码可知其具体完成的功能如下: 1. 按照预设规则对消息队列进行清理. 2. 按照预设规则对消息队列进行持久化(flush操作). 3. 连接ZooKeeper进行broker.topic.partition相关的ZooKeeper操作. 4. 管理broker上所有的Log. 下面一一对这些功能的实现进行详细的解析. 一.对于Log的管理 LogManager包

Jafka源代码分析——Processor

Jafka Acceptor接收到客户端请求并建立连接后,Acceptor会将Socket连接交给Processor进行处理.Processor通过以下的处理步骤进行客户端请求的处理: 1. 读取客户端请求. 2. 根据客户端请求类型的不同,调用相应的处理函数进行处理. Processor读取客户端请求是一个比较有意思的事情,需要考虑两个方面的事情:第一,请求规则(Processor需要按照一定的规则进行请求的解析):第二,如何确定一次请求的读取已经结束(因为是非阻塞连接,非常有可能第一次读操作

MyBatis架构设计及源代码分析系列(一):MyBatis架构

如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处. 一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedur

分析比特币网络:一种去中心化、点对点的网络架构

比特币采用了基于互联网的点对点(P2P:peer-to-peer)分布式网络架构.比特币网络可以认为是按照比特币P2P协议运行的一系列节点的集合.本文来分析下比特币网络,了解它跟传统中心化网络的区别,以及比特币网络是如何发现相邻节点的. 中心化网络 为了更好的理解P2P网络,我们先来看看传统的中心化模型: 这是一种典型的星型("中心化")结构,我们常见B/S及C/S网络架构就是这种模型,C1 .C2 .C3等之间没法直接的连接,C节点如果要连接必须要通过中心化S节点做为桥梁.中心化节点

关于nspm品类产品在行业用户网络架构中的研究分析(建议安全自动化运维工具开发者,了解)

为配合NSPM产品在不同行业不同类型的网络架构中最大限度的发挥产品优势,探索不同网络架构中对产品的适配性.分多个行业目前的传统网络架构与未来演进的架构进行深入调研. 从目前数据中心所使用协议的数据层上看,IT方案都是以二/三层网络(例如以太网+IP网络)为基础的,例如GRE.VXLAN等等,其解决和设计方案就是为了解决现有网络的缺陷和不足,为某一个特定问题而设计的.而现有的二/三层网络本质问题并没有得到有效的解决,网络潜在的资源并未得到有效的利用,安全问题也并有效的管理和抑制.以下我们对不同行业

Openstack Liberty网络架构实现分析(一)

春节前在研究Openstack最新版本Liberty网络时,发现了一篇较好的介绍Liberty网络实现和一些新技术的文章.经过仔细研究后决定写写研究后的体会. 此系列文章分为7个部分,分别介绍: 1.Liberty网络总览 2.网络架构 3.Neutron配置 4.网络创建 5.添加路由.网络和子网 6.在租户网络启动虚机 7.在FLAT网络启动虚机 文章连接:OpenStack Liberty Neutron Deployment (Part 1-7 Overview) http://www.

pomelo源代码分析(一)

千里之行始于足下,一直说想了解pomelo,对pomelo有兴趣,但一直迟迟没有去碰,尽管对pomelo进行源代码分析,在网络上肯定不止我一个,已经有非常优秀的前辈走在前面,如http://golanger.cn/,在阅读Pomelo代码的时候,已经连载到了11篇了,在我的源代码分析參考了该博客,当然,也会添?我对pomelo的理解,借此希望能提高一下自己对node.js的了解和学习一些优秀的设计. 开发环境:win7 调试环境:webstorm5.0 node.js版本号:v0.8.21 源代

Monkey源代码分析之事件注入

本系列的上一篇文章<Monkey源代码分析之事件源>中我们描写叙述了monkey是怎么从事件源取得命令.然后将命令转换成事件放到事件队列里面的.可是到如今位置我们还没有了解monkey里面的事件是怎么一回事,本篇文章就以这个问题作为切入点.尝试去搞清楚monkey的event架构是怎么样的.然后为什么是这样架构的,以及它又是怎么注入事件来触发点击等动作的. 在看这篇文章之前,希望大家最好先去看下另外几篇博文,这样理解起来就会更easy更清晰了: <Monkey源代码分析番外篇之Andro