在akka中,router 也是一種 actor 型別,是負責負載均衡和路由的抽象,把訊息按照路由規則排程,分配給routee去運算,用於排程actor任務或進行負載均衡策略
它路由到來的訊息到其他的actors,其他那些actors就叫做routees(被路由物件)。
有兩種方式來建立router
actor group
:routees由外界其它actor產生(自行建立,自行管理),特點是能實現靈活的routee構建和監控。
list
routees =
newarraylist
<
>()
;for
(int i =
0; i <
5; i++
)router router =
newrouter
(new
roundrobinroutinglogic()
, routees)
;
actor pool
:由router負責構建所有的routee,routee作為子actor,並在該子actor終止時將它從router中移除。
actorsystem actorsystem = actorsystem.
create
("lpsys");
actorref routeractorref = actorsystem.
actorof
( props.
create
(articleparseactor.
class).
withrouter
(new
roundrobinpool(8
)),//roundrobinpool:表示依次往復迴圈傳送
"lprouteractor"
);
在前面我們使用了 roundrobinpool/roundrobingroup, 用於指定 router 將訊息傳送給各 actor 的順序。akka 內建了一些路由策略:
路由策略
功能round robin
依次向 pool/group 中的各個節點傳送訊息,迴圈往復。random——隨機向各個節點傳送訊息。
smallest mailbox
向當前包含訊息數量最少的 actor 傳送訊息。由於遠端 actor 的郵箱大小未知,因此假設它們的佇列中已經有訊息在排隊。所以會優先將訊息傳送給空閒的本地 actor。
scatter gather
向 group/pool 中的所有 actor 都傳送訊息,使用接收到的第乙個響應,丟棄之後收到的任何其他響應。如果需要確保能夠盡快收到乙個響應,那麼可以使用 scatter/gather。
tail chopping
和scatter/gather類似, 但是router並不是一次性向 group/pool中的所有 actor 都傳送一條訊息,而是每向乙個 actor 傳送訊息後等待一小段時間。有著和scatter/gather 類似的優點,但是相較而言有可能可以減少網路負載。
consistent hashing
給 router 提供乙個 key,router 根據這個 key 生成雜湊值。使用這個雜湊值來決定給哪個節點傳送資料。想要將特定的資料傳送到特定的目標位置時,就可以使用雜湊。在下章中,我們將討論更多有關一致性雜湊的問題。
balancingpool
balancingpool 這個路由策略有點特殊。只可以用於本地 actor。多個 actor 共享同乙個郵箱,一有空閒就處理郵箱中的任務。這種策略可以確保所有actor 都處於繁忙狀態。對於本地集群來說,經常會優先選擇這個路由策略。
router.tell(
new akka.routing.broadcast(msg)
);
如果使用 pool 的方式建立 router,由 router 負責建立 actor,那麼這些路由物件會成為 router 的子節點。建立 router 時,可以給 router 提供乙個自定義的監督策略,呼叫 withsupervisorstrategy 方法指定 router 對 pool 中路由物件的監督策略。
VUE中的路由router
vue router是vue.js官方的路由外掛程式,它和vue.js是深度整合的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和元件的,路由用於設定訪問路徑,並將路徑和元件對映起來。傳統的頁面應用,是用一些超連結來實現頁面切換和跳轉的。在vue router單頁面應用中,則是路徑之間的切換...
在Win7 Hyper v虛擬機器中掛接真實機的音效卡
最近在測試lync的語音功能,環境已在虛擬機器中搭建好,但hyper v中不支援音效卡,一直未測試成功,經過一番嘗試後終於成功,細節如下 2.真機中mstsc的設定如下 新增乙個dword值如下圖 4.遠端連線後出現的錄音裝置 5.在虛擬中用lync呼叫 如果你按照上面的設定還是不行 請參照如下設定...
centos7 kvm虛擬機器中開啟虛擬機器
1 檢視當前宿主機系統中是否支援。cat sys module kvm intel parameters nested y 結果為y表示當前的作業系統已經支援了巢狀虛擬化,使用跑虛擬化的程式直接使用就ok了 n 那當然就表示當前作業系統未配置巢狀虛擬化嘍2 如果你的結果為n,看下配置過程吧 vi e...