squbs-actor-hierarchy
squbs 設(shè)置上面圖片中顯示的actor和組件層次結(jié)構(gòu), 以支持在 squbs 系統(tǒng)中運(yùn)行的actor和服務(wù)的模塊化運(yùn)行時(shí)。
- ActorSystem - 一個(gè)squbs系統(tǒng)使用一個(gè)單一ActorSystem村刨,來(lái)支持所有的服務(wù)和cube阀参。這將確保我們有一個(gè)單一的控制點(diǎn)運(yùn)行調(diào)度在一個(gè) squbs 系統(tǒng)。這個(gè)ActorSystem默認(rèn)名字為"squbs"但可以在application.conf重新命名吊说。
- Unicomplex - 這是核心的單例actor,用來(lái)管理squbs系統(tǒng)。它注冊(cè)所有的cubes和web服務(wù)actor間的通信葛超,以及cube監(jiān)管者(用于系統(tǒng)生命周期的管理)。它也負(fù)責(zé)啟動(dòng)web服務(wù)和服務(wù)注冊(cè)actor延塑。應(yīng)用或者系統(tǒng)組件能夠通過(guò)調(diào)用Unicomplex()訪問(wèn)ActorRef绣张。
- Listeners - 偵聽器創(chuàng)建處理傳入 HTTP 請(qǐng)求的流, 并將它們綁定到配置的端口。它們持有在reference.conf或application.conf中配置的監(jiān)聽器名稱关带。默認(rèn)情況下侥涵,默認(rèn)監(jiān)聽器綁定端口8080到地址0.0.0.0(任意接口)沒有使用https。然而宋雏,可以在application.conf覆蓋芜飘。可以在reference.conf或application.conf中分別配置庫(kù)或者應(yīng)用的其它監(jiān)聽器磨总。
- RouteDefinition/FlowDefinition - RouteDefinition 和FlowDefinition 都是不同形式的服務(wù)定義嗦明。一個(gè)RouteDefinition定義了服務(wù)的路由,而FlowDefinition定義一個(gè)流蚪燕。這兩個(gè)是不同類型的請(qǐng)求處理器娶牌,處理傳入的Http請(qǐng)求。RouteDefinition 和FlowDefinition 本身都不是actor馆纳,但是一個(gè)類繼承了它們各自的特質(zhì)诗良。它們由各自的服務(wù)注冊(cè), 并由相應(yīng)的actor主持。
- Route/Flow actors - 由 CubeSupervisor 創(chuàng)建的org.squbs.unicomplex.RouteActor或org.squbs.unicomplex.FlowActor 類型的actor, 用于主持每個(gè)相應(yīng)的 RouteDefinition 或 FlowDefinition鲁驶。因此累榜,它們成為孩子由它們所屬的CubeSupervisor 監(jiān)管。他們的請(qǐng)求處理程序?qū)⒆詣?dòng)對(duì)所有綁定的偵聽器進(jìn)行注冊(cè), 從而允許將偵聽器的請(qǐng)求發(fā)送到相應(yīng)的請(qǐng)求處理程序。
- Request handler actors - 不是使用 RouteDefinition/FlowDefinition 來(lái)進(jìn)行服務(wù), 而是開發(fā)人員可以選擇在低級(jí)別 API 上工作并注冊(cè)一個(gè)請(qǐng)求處理actor壹罚。避免使用高級(jí)路由 API 通常會(huì)占用較少的內(nèi)存, 并允許處理流式請(qǐng)求, 但與路由 DSL 相比更難進(jìn)行編碼葛作。
- CubeSupervisors - CubeSupervisors直接由actor系統(tǒng)創(chuàng)建并通過(guò)Unicomplex注冊(cè)它們。一個(gè)cube創(chuàng)建一個(gè)CubeSupervisor實(shí)例猖凛。它們作為服務(wù)處理器的監(jiān)管者赂蠢,注冊(cè)well-known actors(可以通過(guò)名稱查找),處理錯(cuò)誤辨泳,重啟這些actor虱岂。它們負(fù)責(zé)它們孩子的生命周期。需要初始化的Well-known actor將在 squbs-meta.conf文件中聲明這些需求菠红。它們可以與它們的父母通信-CubeSupervisor負(fù)責(zé)它們的狀態(tài)第岖。CubeSupervisor 將再次溝通生命周期狀態(tài),并初始化更新Unicomplex(維護(hù)了整個(gè)系統(tǒng)的生命周期狀態(tài))试溯。有關(guān)cube和服務(wù)配置條目的信息, 請(qǐng)參考引導(dǎo)章節(jié)蔑滓;生命周期狀態(tài)和狀態(tài)的更新請(qǐng)參考運(yùn)行時(shí)生命周期&API章節(jié)。此外遇绞,cube結(jié)構(gòu)還為well-known actor提供了命名空間, 以防止由不同cube提供的well-known actor之間的命名沖突键袱。RouteActor 和 FlowActor 在技術(shù)上等同于well-known actor。
- Well-known actors - 這些注冊(cè)的actor由CubeSupervisor啟動(dòng)摹闽。它們通過(guò)squbs-meta.conf注冊(cè)和提供基本的啟動(dòng)信息蹄咖,例如路由器。請(qǐng)參考引導(dǎo)章節(jié)中付鹿,關(guān)于cube配置的詳細(xì)信息澜汤。可以通過(guò)cube的reference.conf通過(guò)額外的配置舵匾。請(qǐng)參考Typesafe 配置庫(kù)文檔中關(guān)于reference.conf 和application.conf的詳細(xì)信息银亲。