Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出

代码下载:https://download.csdn.net/download/drsbbbl/12269042

无需积分

Spring  方面:

我把 对应的 接口 动态注入到 IOC容器中,并且给对应的接口生成对应的 动态代理类, 当有请求过来的时候 通过动态代理类,取出对应的参数,参数类型,类的类型,返回值类型  生成对应的请求对象,并且通过配置的 ip+port 的方式请求对应的  服务 并且得到对应的返回值,返回给调用者。

Redis  方面:

使用Redis 来模拟 Zookeeper 来模拟 注册中心。因为redis 本身来说 也是有 对应的 监听事件, 比如 对应的 移除key 的时候可以监听操作,还有新增key 的时候 , 都有一定的监听操作,具有 对应的 注册中心的特点,而且存储方式也是可以满足负载均衡的存储方式。还具有稳定性,响应速度高的特点(PS:我写的 没有写关于对应的监听的事件 )

 

Netty 方面:

在真实的 dubbo 框架中也是采用Netty 作为 通信的方式,不过我写的肯定没有 dubbo  那么全面 我只是 模拟最核心的一些步骤。还有关于 对应的心跳机制

 

 

看过mybatis +spring 源码的都知道 mapper接口注册到 IOC容器的中的操作。我们只需要 相同的操作  来一遍 就可以了 把我们需要 进行 远程调用的接口 动态注入到ioc 容器中 生成对应的代理对象

实现 BeanDefinitionRegistryPostProcessor 接口。我们进行 扫描包的操作

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第1张图片

实现对应的 接口:

 

其中 这个地址 com.mbb.ann  这个 名字 在 dubbo 框架中 是配置对应的配置文件中, 我这里简写了

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第2张图片

 对应的  我们注入 beanFactory  来生成类  并加持上 autowire 属性 能够使用 autowire 注解

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第3张图片

 在beanFactory 中 为对应的对象生成对应的 动态代理类  

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第4张图片

关于redis讲解: 这里有redis 的取值:

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第5张图片

我画下 我对redis 的存储结构

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第6张图片

看到代码 你会发现。。怎么写反了。。没错 就是写反了。。当我想写 负载均衡的时候 发现事情不对 也就没改这个东西最近老是加班。。。。。。。。。。。。。。。。。。。。。反正正确应该这样 

这样 就可以从对应的 服务列表中取出我们想要请求的服务了

 

封装请求实体类:

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第7张图片

简单说明下这个类:

 private Class interfaceClass;  接口类型 
    private String methodName; 请求 这个类的那个方法
    private Class[] paramTypes; 方法参数类型
    private Object[] args; 方法的参数

通过这几个参数 可以通过反射调用任何一个类的 任何方法

 

通过interfaceClass 可以得到对应的类型和名字   我这里很简陋。。。

applicationContext.getBean() 可以通过类型和名字在ioc 容器中找到对应的 类

    String name = msg.getInterfaceClass().getSimpleName().substring(0, 1)
                                                .toLowerCase() + msg.getInterfaceClass().getSimpleName().substring(1);
                                        System.out.println(name);
                                        Object bean = RpcServerConfiguration.applicationContext
                                                .getBean("testServiceImpl");

    Object bean = RpcServerConfiguration.applicationContext
                                                .getBean("testServiceImpl");

远程调用的过程;

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第8张图片

写个注解》用于注解 实现接口:把 对应的服务注入到redis 中去

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第9张图片

这就是 那一段 写反了代码。。。。。。。。。。。。。。。。。。。。。。。。把服务注到redis

 

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第10张图片

Redis+spring+Netty 实现 dubbo框架 不足之处 谢谢指出_第11张图片

 

Netty 部分 不在一一列举:都是模板代码 

编码解码的过程 接收消息

 

 

 

 

 

 

你可能感兴趣的:(源码分析,spring,springcloud,java,redis,分布式,spring)