Concurrency level: 8 threads Complete requests: 20000 Time taken for tests: 0.886 seconds Time per request: 0.044 ms (avg) Requests per second: 22573 [#/sec] (avg)
Concurrency level: 8 threads Complete requests: 10000 Time taken for tests: 0.424 seconds Time per request: 0.042 ms (mean) Requests per second: 23584 [#/sec] (avg)
测试环境使用 AWS 虚拟机 AWS EC2 C4 Instance Model c4.2xlarge,配置如下:
Processor: Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz vCPU: 8 Memory: 15 GiB Storage: 30G EBS-Only Bandwidth: 1,000 Mbps OS: Windows Server 2012 R2
假设 Actor 1 (Tyep:hello, Name:hello-001, Address:192.168.1.139, Port:8888) 需要与 Actor 2 (Type:world, Name:world-001, Address:192.168.1.158, Port:7777) 进行通信,则仅需发送消息时指定 Actor 2 的身份 (world, world-001),其中 world 为 Actor 2 的类型,world-001 为该 world 类型下名称为 world-001 的 Actor Peer。
Redola.Rpc 基本契约
任意 Actor 均需向 Actor Master 注册,提供自身 Actor Identity 信息;
仅指定 Actor Type 发送消息,则会随机 Lookup 一个该 Type 的 Actor 进行通信;
Actor 不区分 Client 和 Server 角色,角色由使用者设计;
RPC 调用接口有同步和异步之分,由使用者选择;
支持 Request/Response 同步阻塞模式,可设置阻塞超时时间;
消息注册后,通过反射匹配消息处理方法,On + MessageType 契约编程;
RPC 限流在消息处理侧实施,默认 RateLimiter 限制 CPU 相同数量线程;
内部 TCP 配置 Buffer Pool 连续内存会伴随连接数和吞吐增加,单 Buffer 8K 大小;