内容简介:最近想研究一下分布式开发,先拿了akka.net 跑一下性能参考自己写个网络实现,一般在本机通讯,300M每秒的传输率,作为参考嗯,先说结果,用Akka.net直接发bytearray,最后也只有40M每秒的传输率。
最近想研究一下分布式开发,先拿了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://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(); }
你能从这里获取代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。