最近想研究一下分佈式開發,先拿了akka.net 跑一下性能git
參考本身寫個網絡實現,通常在本機通信,300M每秒的傳輸率,做爲參考github
嗯,先說結果,用Akka.net直接發bytearray,最後也只有40M每秒的傳輸率。跨域
因此高性能場合不適用。服務器
另外akka.net remote 有個小小的問題網絡
Akka.net 的 服務一側配置以下tcp
remote {分佈式
dot-netty.tcp {ide
port = 8090性能
hostname = 0.0.0.0.net
}
}
此時縱有千般武藝你也不可能連的進來
由於
Akka.net 有一個相似http的跨域設計,你客戶端請求地址以下
你不可能用0.0.0.0 作請求地址吧。
就算 從服務一側 指定 public_hostname 仍是有一個問題
一個服務器只能對應一個域名
這在調試時很是不便,我有一個服務。
我就想
"akka.tcp://server@127.0.0.1:8090/user/Echo";
"akka.tcp://server@localhost:8090/user/Echo";
"akka.tcp://server@10.1.1.176: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();
}
你能從這裏獲取代碼