zoukankan      html  css  js  c++  java
  • Dubbo 备注

    Dubbo是阿里开源的一款服务治理中间件,主要包含如下节点:

    • Provider: 暴露服务的服务提供方。
    • Consumer: 调用远程服务的服务消费方。
    • Registry: 服务注册与发现的注册中心。
    • Monitor: 统计服务的调用次调和调用时间的监控中心。
    • Container: 服务运行容器。

    服务提供方配置如下:

    <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-2.5.xsd
           http://code.alibabatech.com/schema/dubbo
           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="demo_provider_app" owner="demo_provider_app"/>
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
    
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880" host = "127.0.0.1"/>
    
        <dubbo:service interface="com.fredric.demo.IProviderService" ref="ProviderServiceImpl" />
    
    </beans>  

    服务消费方配置如下:

        <dubbo:application name="demo_consumer_app" owner="demo_consumer_app"/>
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <!-- 注册中心地址 -->
        <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
        
        <!-- 用户服务接口 -->
        <dubbo:reference interface="com.fredric.demo.IProviderService" id="ProviderServiceImpl" />

    对于dubbo的依赖,全部配置在maven的工程依赖中。其中启动时可以做dubbo的可执行jar包。

    <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <classesDirectory>target/classes/</classesDirectory>
              <archive>
                <manifest>
                  <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                  <useUniqueVersions>false</useUniqueVersions>
                  <addClasspath>true</addClasspath>
                  <classpathPrefix>lib/</classpathPrefix>
                </manifest>
                <manifestEntries>
                  <Class-Path>.</Class-Path>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>

     安装部署时:

    1、安装zookeeper;

    2、安装dubbo admin管理后台;(可选)

    3、发布服务提供方和消费者,本例中用的都是可执行jar包,因此只要java -jar XXX即可。

    执行后可在dubbo admin中查看当前的提供方、消费者和应用。

    dubbo还支持容错和负载均衡,架构如下:

    这里我的理解是,尽管两者都是集群部署,但是有差别的:多个容错节点形成一个invoke在多个invoker中,可以使用loadbalence;

    原文描述如下:

    这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地址及Service接口信息。
        Directory代表多个Invoker,可以把它看成List<Invoker>,但与List不同的是,它的值可能是动态变化的,比如注册中心推送变更。
        Cluster将Directory中的多个Invoker伪装成一个Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个。
        Router负责从多个Invoker中按路由规则选出子集,比如读写分离,应用隔离等。
        LoadBalance负责从多个Invoker中选出具体的一个用于本次调用,选的过程包含了负载均衡算法,调用失败后,需要重选。
  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5939279.html
Copyright © 2011-2022 走看看