栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

KAFKA那些事-07-从KAFKA总结分布式下的发送和连接

KAFKA那些事-07-从KAFKA总结分布式下的发送和连接

分布式模型下的客户端应用运行的关键?

分布式下,通常有多个角色进行互相协调。因此作为一个分布式角色来说,首先要解决的就是如何和其他分布式角色进行通信。
对于客户端而言,首先需要明确集群的信息,以及如何进行连接,因此也涉及到具体使用到的IO模型是什么?

如下是kafka producer发送一条消息需要进行的操作:
1、拉取集群元数据
2、底层利用NIO建立sokcet连接进行向指定节点进行发送信息。

分布式模型下的服务端应用运行的关键?

作为服务端来说,更关心的是如何更好的接收和管理众多的连接,以及对连接的请求响应的匹配是如何做到的?

一般来说,作为服务端,会有一个boss线程负责accept请求,然后抛给后续的若干个worker工作线程去处理内容,但这都属于IO线程的部分,一般实际的计算处理逻辑都要再另外抛给业务线程进行处理。

请求队列

但这个过程中可能存在请求过多,业务线程来不及处理,此时一般会使用一个队列进行解耦预先把worker线程解包好的请求内容进行堆积。

业务线程使用单线程还是多线程?

取决于业务的要求:
如果要求保证单个socket多次请求的顺序性,那么有2种方式: 1、发送方维护,串行发送消息,必然保证有序性,此时业务线程可以是多线程的。2、发送方不维护,异步发送消息,此时业务线程必然需要是单线程的。
如果不要求保证顺序性,那么可以使用多线程,典型的例子就是如果作为一个web服务,每个请求互相之间是不需要顺序保障的,那么业务线程采用多线程即可

响应队列

同样的,一个请求有来就要有响应,但这个过程中可能存在响应过多,worker线程来不及处理,此时一般会使用若干个响应队列进行解耦预先把响应内容进行堆积,为了降低复杂度,一般响应队列可以是与worker线程有一定的绑定关系的,为了方便后续的响应找到对应的请求socket进行返回。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号