dubbo 使用

来源:互联网 发布:泰国出行必备软件 编辑:程序博客网 时间:2024/05/16 03:38

1、dubbo 是什么?

  (1)、远程服务的调用的分布式框架;

2、dubbo 能做什么?

 (1)、透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API入侵;

 (2)、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。

 (3)、服务自动与发现,不再需要写死的服务地址,注册中心基于接口名的查询服务者的IP地址,并且能够添加和删除服务者;

3、项目中为什么用dubbo?

 (1)、服务URL配置管理更加的简单

   通过服务注册中心(zookeeper),来进行统一管理服务,动态的注册和发现服务,使服务的位置更加的透明化;

  通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。

  (2)、服务间依赖关系变得清晰

   通过服务注册中心(zookeeper),就可以看到那个应用依赖于那个服务,就可以很快的分得清哪个应用要在哪个应用之前启动;

 (3)、对服务的监控

    要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标,方便开发者更加清晰看到,这个服务需要多少机器支撑?什么时候该加机器

其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。

4、怎么用dubbo?

(1)dubbo提供服务端:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd  

        http://code.alibabatech.com/schema/dubbo  

        http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">

  dubbo:application name="tuia-media" />  //dubbo的应用名称

<dubbo:registry address="${media.zookeeper.address}" //zookeeper 注册地址

protocol="zookeeper" />


<!-- 用dubbo协议在25002端口暴露服务 -->

<dubbo:protocol name="dubbo" port="25002" /> //dubbo端口号

       <bean id="remoteTagBackendService"

class="cn.com.duiba.tuia.core.biz.remoteservice.RemoteTagBackendServiceImpl" />

<dubbo:service ref="remoteTagBackendService"

interface="cn.com.duiba.tuia.core.api.remoteservice.RemoteTagBackendService"

version="${tuiaCore.provider.version2}" retries="0" timeout="5000"

group="default" />   


(2)dubbo消费端:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation="http://www.springframework.org/schema/beans  

        http://www.springframework.org/schema/beans/spring-beans.xsd  

        http://code.alibabatech.com/schema/dubbo  

        http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">

<dubbo:application name="tuia-media-manager" />   //dubbo的应用名称

<dubbo:registry address="${media.manager.zookeeper.address}"   //zookeeper 注册地址

protocol="zookeeper" />

<!-- 用dubbo协议在25001端口暴露服务 -->

<dubbo:protocol name="dubbo" port="25001" />        //dubbo端口

<!-- 要引用的服务 -->

<dubbo:reference id="remoteTagBackendService"

interface="cn.com.duiba.tuia.core.api.remoteservice.RemoteTagBackendService"

version="${media.manager.consumer.tuiacore.version}" retries="0"

check="false" group="default" />


5、dubbo API:

    (1)、service:dubbo提供服务;

    (2)、reference:dubbo引用服务;

    (3)、retries:当调用dubbo服务失败时候,重新连接次数;

    (4)、check:如果为true 的时候,如果启动的时候,就会检查有没有这个服务,没有的话就报错,false 就不会检查

    (5)、timeout:连接超时的时间;

    (6)、group:分组,如果一个接口有多种实现的方法就采用分组的形式;

    (7)、version:版本号


7、dubbo 流程图:


  

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。


调用关系说明:

0. 服务容器负责启动,加载,运行服务提供者。

1. 服务提供者在启动时,向注册中心注册自己提供的服务。

2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

























                                             
0 0
原创粉丝点击