文件名称:synapse:简单高效的RPC
文件大小:32KB
文件格式:ZIP
更新时间:2024-06-01 12:31:10
Go
突触 这是什么? 突触是: 基于的RPC有线协议 Go中该协议的库实现 该库旨在与进行序列化。 为什么不使用MessagePack RPC? 当我们第一次开始为该库编写代码时,它应该是MessagePack RPC实现。 但是,我们发现该协议的性质使得很难从网络上的格式错误或意外的消息中恢复。 Synapse和MessagePack RPC协议之间的主要区别是synapse使用长度前缀的帧来指示从网络中读取消息之前的消息的完整大小。 这有一些好处: 序列化是在处理程序中完成的,而不是在I / O循环中完成的。 将请求/响应主体复制到内存的保留块中,然后在单独的goroutine中完成序列化。 因此,在不中断其他消息的情况下,序列化可能会失败。 可以有效地跳过意外或不需要的消息,因为我们不必遍历它即可知道其大小。 能够快速丢弃不需要的消息或意外消息,可以提高针对旨在耗尽服务器资源的
【文件预览】:
synapse-master
----stack.go(2KB)
----debug.go(4KB)
----client.go(10KB)
----response.go(2KB)
----client_test.go(3KB)
----stack_race.go(455B)
----handler.go(2KB)
----command.go(2KB)
----Protocol.md(2KB)
----_examples()
--------arith()
--------hello_world()
----jspipe.go(1KB)
----sema()
--------sema15_386.s(158B)
--------sema15_amd64.s(158B)
--------sema14_amd64.s(165B)
--------sema15_arm.s(154B)
--------sema14.go(119B)
--------sema14_arm.s(161B)
--------sema14_386.s(165B)
----map_test.go(3KB)
----map.go(3KB)
----.travis.yml(25B)
----LICENSE(1KB)
----request.go(1024B)
----README.md(6KB)
----server.go(8KB)
----mux.go(606B)
----.gitignore(5B)
----setup_test.go(2KB)