weibocom / motan-go

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

关于agent的使用姿势咨询 #69

Open Viyond opened 6 years ago

Viyond commented 6 years ago

1、请问如果java之间也通过agent来发送请求的话,使用姿势是怎么样的呢,有没有可以运行的demo,前面提到的motan-example里面的java调用貌似是并没有通过agent的来交互的? 2、求一份如php、java分别通过agent来进行交互的可运行demo; 3、simple序列化针对用户自定义的POJO对象类型(非基本类型)可以序列化么

rayzhang0603 commented 6 years ago

1、 目前java client通过agent调用是在registry配置中使用direct注册中心,然后把address配置为agent的ip:port,让client直接调用到agent的代理端口上; java server侧也同样用direct注册中心,这样java server并不会注册服务。服务的注册配置在agent中,由agent注册serve,并反向代理java server的rpc端口。

不过这种方式稍显复杂,我们打算java中支持把agent作为注册中心,这样agent可以动态注册和订阅服务,agent中也不必再配一份配置了,只在java中配置一份就可以。目前这个功能正在研发中,预计发布需要1个月左右的时间。

2、php通过agent调用服务的方式可以参考 https://github.com/weibo-mesh , 我们正在逐步完善。

3、simple定位是简单数据类型的序列化,暂不支持pojo对象的序列化。我们正在开发新的对象序列化方式,适合java、php等不同语言交互,也会在近期完成。敬请关注~

TeacherKevin commented 6 years ago

我看go通过agent调用服务的demo中,agent设置了motan-refer, 而client的配置文件中,也设置了几乎相同的motan-refer。既然服务治理及交互主要是在agent中完成的,那client为什么也要配置motan-refer,我的潜意识认为,client应该只需要提供motan2协议的解码能力及与agent的交互能力即可。demo中的配置文件与我的潜意识不同,所以想问一下为什么需要这样。

另外,不通过agent来进行服务治理和交互时,motan本身就有服务治理功能,那么通过agent调用服务时,既然agent和motan的配置相似,都需要配置motan-refer,那么最终是谁在进行服务治理,是agent还是client?

rayzhang0603 commented 6 years ago

@TeacherKevin demo中client即可以通过agent访问服务,也可以直接访问服务,所以会有很多重复的配置项。 client在通过agent访问服务时,只需要protocol、path和group等信息就可以,并不需要服务治理相关的配置项,例如不同的治理filter。

也就是说,client和agent都可以配置服务治理能力,但是实际使用中,如果是 client直连就会在client中配置服务治理相关功能;如果是通过agent交互,则会在agent中配置服务治理。