Akka.net 性能测试兼使用小技巧


最近想研究一下分布式开发,先拿了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的跨域设计,你客户端请求地址以下

"akka.tcp://server@10.1.1.176:8090/user/Echo";

你不可能用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();

}


你能从这里获取代码

https://github.com/lightszero/akka.learn

相关文章
相关标签/搜索