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

关于RefererConfigBean的问题 #983

Open crab890715 opened 2 years ago

crab890715 commented 2 years ago

场景:有这样一个工程M1:假设他定义了一个接口A,这个接口A需要暴露给其他服务M2、M3等服务调用,但同时M1也需要调用接口A,为了避免后续服务拆分,所以在M1工程中都统一使用MotanReferer注入bean,但是问题来了,如果统一使用MotanReferer注入bean,如果发布的bean和注入bean都在同一个工程,但依旧会走motan那套服务发现,没有办法直接引用本地的bean进行交互调用。

rayzhang0603 commented 2 years ago

如果client和server是运行在一个jvm中,可以考虑使用injvm协议,injvm协议是对象调用,不会走网络协议栈。

    <!-- 配置motan或者motan2协议。-->
    <motan:protocol id="motan2_protocol" name="motan2" ... />

    <!-- 配置injvm协议。-->
    <motan:protocol id="injvm_protocol" name="injvm" />

    <!-- 在basicSerice或者service配置中的export配置项里增加injvm协议导出。多个协议之间使用逗号分隔 -->
    <motan:basicService export="injvm_protocol,motan2_protocol:8002" ... />
    <!-- 配置motan/motan2协议 -->
    <motan:protocol id="motan2_protocol" name="motan2" ... />

    <!-- 配置injvm协议-->
    <motan:protocol id="motan_injvm" name="injvm" />

    <!-- 在basicReferer或者referer配置中,通过占位符指定实际使用的协议 -->
    <motan:basicReferer protocol="${used_protocol}" ... />