weibocom / motan

A cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services.
Other
5.89k stars 1.78k forks source link

motan什么时候支持泛化 #891

Open gavenwangcn opened 4 years ago

gavenwangcn commented 4 years ago

motan有支持泛化的规划吗?什么时候能支持,这个对集成中间件很重要啊

rayzhang0603 commented 4 years ago

使用motan2协议时,可以通过CommonHandler来实现与泛化调用类似的能力。可以参考这里

lhl4546 commented 4 years ago

motan1其实也能支持,需要做点改造。实现的关键在于DefaultRequest,DefaultRequest包含了interfaceName和methodName,这就是请求真正的接口和方法,我们只需能控制DefaultRequest里面的这2个属性即可。首先构造一个全新的RefererConfig,使用这个全新的RefererConfig生成自定义的泛化ref,这个ref可以将真实的接口名和方法名作为请求参数传入泛化方法,然后构造一个泛化Filter,这个filter用来从泛化方法中解析真实的接口名和方法名并更新DefaultRequest,这样就能完成泛化调用了。这涉及Invoker、GenericFactory、GenericRefererConfig、GenericFilter、GenericService这5个类 Invoker:调用入口,将真实请求的接口名、方法名、参数描述、参数作为调用参数一并传入 GenericFactory:生成GenericService的ref GenericRefererConfig:继承RefererConfig,覆盖init方法,添加自定义的GenericFilter GenericFilter:修改DefaultRequest GenericService:泛化调用接口,是所有泛化调用的入口