1、是否简略形容下reactor线程模型?
三个点,事件驱动、一个或者多个数据源、多路复用
事件驱动简略了解 :
场景1 : 比如说小A HR要招聘一个NB的程序员,既要Java根底厉害,又波及大数据畛域(不单单只会皮毛的)的人,忽然小A在xxx
招聘网站看到了一个小B,发现小B就是我想要找的人哈,怎么办?打个电话吧?嘟嘟嘟...,接通了,聊了聊,挺好,过去下班吧
场景2 : 还有一种状况就是,小A和小B聊了聊,小A说,你先关注订阅一下咱们公司,咱们有新音讯了告诉你,因为我本人做不了主,须要主管看看,
一个工夫,主管看了看,桌子一拍,唉吆喂,这不就是我想要找的人么,回调发一个邮件,来下班吧,小A收到邮件,高高兴兴来下班了
同步了解音讯驱动 :
HR 小A在各种招聘网站都看,要么Java根底不行的,要么大数据不会的,肿么办?要不在xxx上公布一个招聘音讯吧,一旦有这样能力的人看到,说不定会分割我
总结 :
简略了解 : 事件驱动就是我是被动的,比如说RPC,我被动来调用你,你有事件告诉我 ; 音讯驱动,我把音讯处理完毕了,放到这里了,你想生产就生产哈
一个或者多个数据源 : NIO 多路复用能够反对百万client连贯,承受客户端的Accept、Read、Write事件
多路复用 : client channel的注册到一个selector,轮询channel事件,事件处理
2、Kafka的 reactor线程模型能说说么?最好画个图吧?
简略说说,Acceptor线程疯狂的承受客户端的连贯,come on,来和我建设连贯吧,Acceptor领有Processor线程的援用,过去了,是吧。
好,打入到Processor线程中,一直的轮询打。一旦客户端有新的事件,我要读,好,Processor线程感知到了,而后又摔到一个线程平安的队列中,Handler线程池中,感知到了,会从队列中获取,比如说真正的IO操作(磁盘读/写操作,可能很浪费时间,没事,搞到线程池中,你干你的,不要阻塞我上游的线程),一旦Handler线程操作实现,因为Handler线程领有Processor中的响应队列援用,间接写回去,Processor线程在轮询的时候,吆,Handler处理完毕了,好吧,我写给客户端,好的,客户端实现了一次读取操作
欢送点赞加关注,用最简略的话,聊艰涩难懂的技术