Dubbo入门

Dubbo是什么

分布式服务框架
高性能与透明化的RPC远程服务调用方案
SOA服务治理方案

Dubbo架构

这里写图片描述
Provider:暴露服务的服务提供商
Consumer:调用远程服务的消费方
Registry:服务注册与发现服务中心
Monitor:统计服务调用次数与调用时间的监测中心
调用流程:
0:服务容器启动,加载,运行服务提供者
1:服务提供者启动后,向注册中心注册自己的服务
2:服务消费者启动后,向注册中心订阅需要调用的服务
3:注册中心向消费者返回对应调用服务的URL列表
4:消费者根据返回的URL地址列表,通过软负载均衡的算法,选出一台提供者进行调用
5:服务提供者与消费者,在内存中累计服务的调用次数与调用时间,并把这些信息定时发送给监测中心

Dubbo注册中心

对于服务提供方,它需要发布服务,随着业务的复杂度逐渐提高,需要提供的服务类型与数量也逐渐增加。
对于服务消费者,它关心如何调用自己需要的服务,面对服务的类型与数量逐渐增加,需要对这些服务进行合理的管理方便消费者调用。
对于服务提供者与服务消费者来说,它们可能兼具这两种角色,服务提供方同时也可能是服务消费方。
将服务统一管理起来,可以有效的优化内部对服务的发布与调用。服务注册中心可以通过某种特定的协议完成服务的对外统一。
常见的dubbo服务注册中心有:
Multicast注册中心
Zookeeper注册中心
Redis注册中心
Simple注册中心

Dubbo优缺点

1:透明化的远程方法调用(可以像调用本地方法一样调用远程方法,只需要简单的配置,没有API的侵入)
2:软负载均衡及容错机制
3:服务注册中心自动注册
—不需要写死服务提供者ip,注册中心可以根据接口名自动查询服务提供者ip
4:服务接口的监控与治理
可以通过Dubbo-admin与Dubbo-monitor对服务接口进行监控与治理
5:Dubbo只能用于java程序

Dubbo入门Demo

1:服务提供方相关dubbo配置

  <!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20881端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20881" />
    <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口-->
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" protocol="dubbo" />
    <!--具体实现该接口的 bean-->
    <bean id="demoService" class="com.alibaba.dubbo.demo.impl.DemoServiceImpl"/>

2:服务消费方相关dubbo配置

  <dubbo:application name="demotest-consumer" owner="programmer" organization="dubbox"/>
    <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--使用 dubbo 协议调用定义好的 api.PermissionService 接口-->
    <dubbo:reference id="permissionService" interface="com.alibaba.dubbo.demo.DemoService"/>
    <dubbo:reference id="findNameService" interface="com.dubbo.user.api.UserService" />

3:项目启动步骤
此处提供两个服务,分别为dubbo-provider与dubbo-user-provider。dubbo-provider是用dubbo协议在20881端口暴露服务,dubbo-user-provider是用dubbo协议在20880端口暴露服务。dubbo-consumer服务消费者同时订阅这两个服务。

 //测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        //dubbo-provider提供
        DemoService demoService = context.getBean(DemoService.class);
        //dubbo-user-provider提供
        UserService userService = context.getBean(UserService.class);
        System.out.println("consumer");
        System.out.println(demoService.getPermissions(1L));
        System.err.println(userService.findName(1L));

4:备注
需要先启动zookeeper服务注册中心,再启动服务提供者(比如这里的dubbo-provider,dubbo-user-provider),最后消费者才能对服务进行调用。

5:代码下载
https://download.csdn.net/download/qq_31071543/10579798
https://download.csdn.net/download/qq_31071543/10579821

2018-09-30:搭建一个springboot+dubbo项目,项目地址为:
https://github.com/lx-sunday/springboot-dubbo.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值