Akka.net 效能測試兼使用小技巧
最近想研究一下分散式開發,先拿了akka.net 跑一下效能
參考自己寫個網路實現,一般在本機通訊,300M每秒的傳輸率,作為參考
嗯,先說結果,用Akka.net直接發bytearray,最後也只有40M每秒的傳輸率。
所以高效能場合不適用。
另外akka.net remote 有個小小的問題
Akka.net 的 服務一側配置如下
remote { dot-netty.tcp { port = 8090 hostname = 0.0.0.0 } }
此時縱有千般武藝你也不可能連的進來
因為
Akka.net 有一個類似http的跨域設計,你客戶端請求地址如下
"akka.tcp://[email protected]:8090/user/Echo" ;
你不可能用0.0.0.0 做請求地址吧。
就算 從服務一側 指定 public_hostname 還是有一個問題
一個伺服器只能對應一個域名
這在除錯時非常不便,我有一個服務。
我就想
"akka.tcp://[email protected]:8090/user/Echo"; "akka.tcp://server@localhost:8090/user/Echo"; "akka.tcp://[email protected]:8090/user/Echo";
這三種方式都能訪問
現在的akka是做不到的,除非你用我這個辦法
static void AddAkkaRemoteHost(ActorSystem system, string[] morehost = null) { var ext = system as ExtendedActorSystem; IRemoteActorRefProvider provider = ext.Provider as IRemoteActorRefProvider; var addrs = provider.Transport.Addresses; var addrslist = addrs.GetEnumerator(); addrslist.MoveNext(); Address first = addrslist.Current; if (first.Host != "localhost") addrs.Add(new Address(first.Protocol, first.System, "localhost", first.Port)); if (first.Host != "127.0.0.1") addrs.Add(new Address(first.Protocol, first.System, "127.0.0.1", first.Port)); if (morehost != null) { foreach (var host in morehost) { if (first.Host != host) addrs.Add(new Address(first.Protocol, first.System, host, first.Port)); } } }
using (var system = ActorSystem.Create("server", config)) { AddAkkaRemoteHost(system, new string[] { "10.1.1.176" }); system.ActorOf( Props.Create( () => new ChatServerActor() ) , "Echo" ); Console.ReadKey(); }
你能從這裡獲取程式碼