为什么dubbo需要用到JDK的动态代理

先说明:
有A和B两台服务器,然后在B服务器开发接口和实现类.
将B服务器中开发好的接口拿到A服务器中使用,就是A服务器中的程序拿到接口调用B服务器中的实现.这个过程是怎么做的?

假设A服务器拿到了接口

public interface A {

    void get(String s);
}

然后怎么调用该A接口在B服务器中的调用?
以下模拟:

public class TestDemo2 {

    public static void main(String[] args) throws Exception {
        A a = (A)Proxy.newProxyInstance(TestDemo2.class.getClassLoader(), new Class[]{A.class}, new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                System.out.println(method.getName());
                System.out.println(args[0]);
                return null;
            }
        });
        a.get("nihao");
    }
}

在这里插入图片描述
想象一下,dubbo利用了JDK的动态代理,然后定义自己的协议,通过这种JDK代理方式,把接口名,方法名,参数传送到B服务器,然后B服务器拿到了接口,方法和参数,这样就可调用真正的实现,然后返回结果给A服务端.

那当在A服务器的JDK代码里拿到了接口,方法名,参数后怎么传输给B服务器端呢?
当然是通过dubbo的netty网络通信框架了

微服务猜想:
其实有时不要为了微服务而专门搞微服务,不同的服务器之间的通信调用比在本地进程中通信要慢多了
怎么样才需要微服务,如果公司有多系统,而系统之间需要关联调用,那就需要微服务
如果仅仅是一个系统,而这个系统又是大访问量的可能需要,其他不需要

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值