weibocom / motan-go

The golang implementation of Motan
Other
471 stars 112 forks source link

Agent 序列化以及转发问题 #76

Open andyyin opened 6 years ago

andyyin commented 6 years ago

最近在学习 motan-go,有两个方面的问题:

1、agent 在收到请求后是反序列化,然后做负载均衡转发,这块是对整个包进行了反序列化处理,这个对性能是不是影响比较大。 2、agent 在转发时使用的是同步,不知道是不是看错了,这块是不是会导致吞吐上不去。

dingzk commented 6 years ago

以下是我对上面两个问题的理解和解释,希望你也确认下,如有疑问欢迎再一起讨论~ 1,agent.go 中,你看Open第二个参数,proxy是true,然后你看mpro.Decode中header和meta是解的因为这里需要知道一些版本信息reqid等,内容很小,对性能没有大的影响,另外meta中包含service和分组信息,要不然怎么去找到cluster呢?你再看body只是简单的读取,并没有解开。在ConvertToRequest中判断是proxy的时候也没有把body解开,不是proxy的时候才把body解开的,比如你的程序直接作为client。 2,agent在转发的时候,accept是阻塞的(见Open第一个参数),但是继续往下读到m.run()调用了handleConn方法,这里是go协程,处理连接是协程。