3.correlation ID——一个具有唯一性的数字,用于标识请求消息,同时也会出现在响应消息和错误日志中。
4.client ID——用于标识发送的请求的客户端
broker会在它的每一个端口上运行一个acceptor,这个线程会创建一个连接,并把它交给processor线程去处理。linux 增加一个管理员用户processor线程(网络线程)的数量时可配置的,网络线程负责从客户端获取请求消息,把他们放进请求队列,然后从响应队列获取响应消息,把他们发送给客户端。
请求消息被放到请求队列后,IO线程会负责处理它们,下面是几种最常见的请求类型:
1.生产请求:生产者发送的请求,它包含客户端要写入broker的消息
2.获取请求:在消费者和跟随者副本需要从broker读取消息时发送的请求
修正一个客户端获取无效用户信息的bug x。
服务端通过data事件来获取客户端发送来的数据,如果是握手请求,则发送http 101响应,否则解析得到的数据并打印出来,然后判断是不是断开连接的请求(opcode为8),如果是则断开连接,否则将接收到的数据组装成帧再发送给客户端。
c->s: option request //客户端通过option方法询问服务端支持哪些方法 s->c: option response //服务端进行回应,提供了所支持方法的名称 c->s: describe request //客户端通过describe方法查询服务端媒体的初始化描述//信息 s->c: describe response //服务端回应媒体初始化描述信息,采用的是sdp会话描述//格式 c->s: setup request //客户端通过setup方法设置会话的属性、传输模式等参数,//并请求建立会话 s->c: setup response //服务端响应回话请求,与客户端建立会话,并返回会话标识//符及其他相关信息 c->s: play request //客户端通过play方法请求播放某一多媒体资源 s->c: play response //服务器回应请求,开始发送流数据 s->c: … //此时,rtsp通过其他协议发送流媒体数据 c->s: teardown request //客户端通过teardown方法请求关闭会话 s->c: teardown response //服务器回应请求,会话关闭,交互结束 。
tcp-syn flood又称半开式连接攻击,每当我们进行一次标准的tcp连接(如www浏览,下载文件等)会有一个一个三次握手的过程,首先是请求方向服务方发送一个syn消息,服务方收到syn后,会向请求方回送一个syn-ack表示确认,当请求方收到syn-ack后则再次向服务方发送一个ack消息,一次成功的tcp连接由此就建立,可以进行后续工作了,如图所示:。
那么客户端怎么知道往哪里发送请求呢?
客户端使用了另一种请求类型,也就是元数据请求,这种请求包含了客户端感兴趣的主题列表。服务器端响应消息里指明了这些主题所包含的分区,每个分区都有哪些副本,以及哪个副本是首领。元数据请求可以发送给任意一个broker,因为所有broker都缓存了这些信息。
一般情况下,客户端会把这些信息缓存起来,并直接往目标broker上发送生产和获取请求。它们需要时不时地发送元数据请求来刷新这些信息(刷新时间间隔通过meta.max.age.ms配置)从而知道元数据是否发生了变更——比如在新的broker加入集群时,部分副本被移动到新broker上。另外如果客户端收到非首领错误,它会尝试重发请求之前先刷新元数据,因为这个错误说明客户端正在使用过期的元数据信息。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-92089-2.html
宣布独立试试