高并發(fā)Flink RPC架構(gòu)設(shè)計(jì)
Flink RPC基于Akka實(shí)現(xiàn)稚虎。它是異步撤嫩、高性能、非阻塞事件驅(qū)動(dòng)網(wǎng)絡(luò)編程框架模型蠢终。
Java BIO NIO Netty
Scala Actor Akka
- ActorSystem是管理Actor生命周期的組件序攘,重量茴她。Actor是負(fù)責(zé)通信的組件,輕量程奠。
- 每個(gè)Actor都有一個(gè)MailBox丈牢,用于接收存儲(chǔ)其他Actor發(fā)過(guò)來(lái)的郵件,通過(guò)這種方式實(shí)現(xiàn)異步瞄沙。
- 每個(gè)Actor單線程己沛,輪詢MailBox。Actor不適合調(diào)用會(huì)阻塞的方法距境。
- Actor可以改變自身的狀態(tài)申尼,可以接收消息,可以發(fā)送消息肮疗,可以生成新的Actor晶姊。
- 每個(gè)ActorSystem和Actor在啟動(dòng)時(shí)都會(huì)給定一個(gè)名字。獲取一個(gè)Actor可以通過(guò)如下方式:akka.tcp://actorsystem_name@bigdata02:9527/user/actorname user固定搭配
- 如果一個(gè)Actor與另一個(gè)Actor進(jìn)行通信伪货,首先獲得對(duì)方的ActorRef對(duì)象们衙,然后通過(guò)ActorRef進(jìn)行通信。
-
通過(guò)tell發(fā)送異步信息碱呼,不接收響應(yīng)蒙挑。通過(guò)ask發(fā)送異步信息,得到Future返回愚臀。通過(guò)異步回到返回處理結(jié)果忆蚀。