dubbo 概览

1、stub:存根,桩,模拟的代理远端的服务,可以附加容错等功能。

    2、消费方 stub: 内部使用proxy,提供容错等机制,配置时使用stub

        <dubbo:reference id="userService" interface="org.huxin.dubbo.test.user.service.UserInterface" 

                    stub="org.huxin.dubbo.test.UserServiceStub" protocol="dubbo"/>

 

        public class UserServiceStub implements UserInterface {

            

            //必须定义这个接口,以便接收dubbo在调用远程服务生成的服务代理类

            private UserInterface userLocalService ;

            

            //这个构造函数必须要提供,dubbo框架会在消费者这一方调用这个方法

            public UserServiceStub(UserInterface userLocalService ) {

                this.userLocalService = userLocalService  ;

            }

 

            public User getUserById(Integer id) {

                User user = null ;

                        try {

                              if (id == 1) {

                                    user =  this.userLocalService.getUserById(id) ;

                              }else {

                                    user = new User(); 

                                    user.setName("系统用户");

                              }

                        }catch(Exception e) {

                              user = new User(); 

                              user.setName("异常用户");

                        }

                      return user ;

            }

        }

    3、架构

    1》每个client 每个server 分别与zookeeper连接,并进行心跳检测,同时维护每个service的地址列表,和对应的client列表

    2》 client从zookeeper通过服务名获取所有服务进程,并分别建立连接;server有变化时,zookeeper同步变化给client。调用时客户端负载均衡。

    3》 server 注册自己到zk

 

    4、分层架构

        Serialize 序列化和工具

        Transport 封装netty

        Exchange 同步转异步,封装Request和Response

        Protocol 封装Invocation和Result,扩展接口为Protocol、Invoker和Exporter

        Monitor 监控次数和时间、

        Cluster 负载均衡

        Registry 注册,中心是URL

        Proxy   接口的代理,

        Config  服务的配置

        service 具体业务逻辑

 

 

        核心是exchange  protocol,proxy

 

    5、调用过程

com.alibaba.dubbo.common.bytecode.proxy-->InvokerInvocationHandler -->MockClusterInvoker-->FailoverClusterInvoker-->route规则-->DubboInvoker-->exchanger->Filterchain

 

ConsumerContextFilter->MonitorFilter->FutureFilter

 

6、暴露服务的过程

ClassPathXmlApplicationContext refresh-->ServiceConfig doExportUrlsFor1Protocol()

 

init bind -->Exporter --> url:invoker-->Wrapper(serviceImpl)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值