Dubbo——快速启动(2)

2023-10-27

快速启动

Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展 进行加载。
mvn:

<!-- dubbo 依赖-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.6.4</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

服务提供者
定义服务接口:

package com.alibaba.dubbo.demo;
public interface DemoService {
    String sayHello(String name);
}

在服务提供方实现接口:

package com.alibaba.dubbo.demo.provider;
 
import com.alibaba.dubbo.demo.DemoService;
 
public class DemoServiceImpl implements DemoService {
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

用 Spring 配置声明暴露服务:
provider.xml:

<?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://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
 
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="hello-world-app"  />
 
    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
 
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />
 
    <!-- 和本地bean一样实现服务 -->
    <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" />
</beans>

加载 Spring 配置:

import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class Provider {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/provider.xml"});
        context.start();
        System.in.read(); // 按任意键退出
    }
}

服务消费者
consumer.xml:

<?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://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
 
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="consumer-of-helloworld-app"  />
 
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>

加载Spring配置,并调用远程服务:

import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.demo.DemoService;
 
public class Consumer {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/consumer.xml"});
        context.start();
        DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理
        String hello = demoService.sayHello("world"); // 执行远程方法
        System.out.println( hello ); // 显示调用结果
    }
}

项目启动

目前项目无法启动,原因如下:
在这里插入图片描述
我们的配置的multicast组播,需要使用zookeeper

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dubbo——快速启动(2) 的相关文章

  • Redis——初识Redis

    Redis简介 Redis的数据结构致力于帮助用户解决问题 而不是像关系型数据库那样 要求用户扭曲问题来适应数据库 除此之外 通过复制 持久化和客户端分片 client side sharding 等特性 用户可以很方便的将Redis扩展成
  • Redis缓存击穿、雪崩、穿透!(超详细)

    缓存的击穿 穿透和雪崩应该是再熟悉不过的词了 也是面试常问的高频试题 不过 对于这三大缓存的问题 有很多人背过了解决方案 却少有人能把思路给理清的 而且 网络上仍然充斥着 大量不太靠谱的解决方案 难免误人子弟 我的这篇文章 则会对这三大缓存
  • 【redis】Redis cluster是AP架构还是CP架构?

    最近刚好在看CAP理论 加上之前分析的redis cluster 就在想redis的cluster是什么模式的 AP还是CP 首先还是简单讲下CAP 具体的可见 CAP分别是 强一致性 Consistency 可用性 Availabilit
  • k8s-多节点部署efk-dial tcp 172.20.2.134:5601: getsockopt: connection refused

    异常信息 Error dial tcp 172 20 0 145 5601 getsockopt connection refused Trying to reach http 172 20 0 145 5601 分析 部署好efk后 通过
  • Azkaban的囚徒——Azkaban运行模式和流

    文章目录 Azkaban运行模式 Azkaban运行 Azkaban 流 Job Dependency Azkaban运行模式 在3 x版本里 提供了3种运行模式 the stand alone solo server mode stand
  • Spark一路火花带闪电——Pair RDD常用算子(参数及其返回值)探究

    文章目录 转化算子 行动算子 转化算子 以键值对集合 1 2 3 4 3 6 为例 RDD U T 注意下面的函数 对应U和T reduceByKey f T T gt T RDD U T 合并具有相同值的键 rdd reduceByKey
  • windows安装docker desktop

    windows安装docker desktop 前言 一 docker desktop 是什么 二 安装步骤 1 下载 2 安装 总结 前言 这里针对windows 10 家庭中文版 其他版本部分步骤可跳过 一 docker desktop
  • Hadoop是小象——YARN / Split&Block

    了解Hadoop架构 Hadoop可运行于一般的商用服务器上 具有高容错 高可靠性 高扩展性等特点 特别适合写一次 读多次的场景 其架构如下 HDFS 分布式文件存储 可靠性由心跳机制和冗余提供 YARN 分布式资源管理 MapReduce
  • 基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化 中台 思想 多租户saas设计的企业开发架构 支持源码二次开发 支持其他业务系统集成 集中式应用权限管理 支持拓展其他任意子项目 架构源码可以加我WX haiwab
  • 分布式系统之Raft算法

    介绍 Raft是一种为了管理日志复制的分布式一致性算法 Raft 出现之前 Paxos 一直是分布式一致性算法的标准 Paxos 难以理解 更难以实现 Raft 的设计目标是简化 Paxos 使得算法既容易理解 也容易实现 Paxos 和
  • 深入ZooKeeper——ZooKeeper原语和架构

    ZooKeeper基础 设计一个用于协作需求的服务的方法往往是 提供原语列表 暴露出每个原语的实例化调用方法 并直接控制这些实例 这种设计存在一些重大的缺陷 首先 我们要么预先提出一份详尽的原语列表 要么提供API的扩展 以便引入新的原语
  • 数据库架构演变过程

    背景 在互联网初创时期 企业往往采用单体架构去搭建自己的应用系统 但是 随着企业的不断壮大 系统访问量不断随之上升 数据量也急剧增长 数据的存储是首先要解决的问题 在这个大数据时代 数据就是企业的命根子 数据库的单体架构很难满足数据的存储
  • JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1 传统三层架构 all in one项目 传统三层架构大致可以分为表现层 业务层和持久层 数据访问层 其中表现层负责接受请求和转发请求 业务层负责处理请求 注 事务管理 日志记录等AOP类型的操作均封装在这一层 持久层主
  • Springcloud五大组件

    1 什么是springcloud springcloud是一系列框架的有序集合 它利用springboot的开发便利性巧妙地简化了分布式系统基础设施的开发 如服务发现注册 配置中心 消息总线 负载均衡 断路器 数据监控等 都可以用sprin
  • Apache架构师都遵循的30条设计原则

    Srinath 通过不懈的努力最终总结出了 30 条架构原则 他主张架构师的角色应该由开发团队本身去扮演 而不是专门有个架构师团队或部门 Srinath 认为架构师应该扮演的角色是一个引导者 讨论发起者 花草修建者 而不是定义者和构建者 S
  • Distributed Database System —— Mysql Binlog不止是主从同步

    文章目录 引入 Binlog应用场景 读写分离 数据恢复 保证数据最终一致性 异地多活 引入 Mysql 5 0以后 支持通过binary log 二进制日志 以支持主从复制 复制允许将来自一个MySQL数据库服务器 master 的数据复
  • Elasticsearch使用教程

    下载ES elasticsearch的下载地址 https www elastic co cn downloads elasticsearch ik分词器的下载地址 https github com medcl elasticsearch
  • docker 安装 mysql (windows版本)

    docker 安装 mysql windows版本 1 下载 MySQL 社区版映像 运行以下命令 docker pull mysql mysql server 5 7 2 启动Docker容器 请使用以下命令 docker run nam
  • Distributed System Transaction —— 2PL

    文章目录 2PL 并发控制常见的方式有2PL MVCC等方式 2PL 两阶段锁 two phase locking 是用来解决多线程之间的竞态条件的 其算法非常简单 数据库中的每一个数据对象都有两种锁 S hared lock 和 e X
  • 什么是分布式架构

    一 分布式架构定义 什么是分布式架构 分布式系统 distributed system 是建立在网络之上的软件系统 内聚性 是指每一个数据库分布节点高度自治 有本地的数据库管理系统 透明性 是指每一个数据库分布节点对用户的应用来说都是透明的

随机推荐

  • node.JS之中转服务器

    经过前面node的学习 我们对node已经有了一定的了解下面我直接上中转服务器实现过程和思路说明 let http require http let https require https var iconv require iconv l
  • mysql的binlog详解

    author skate time 2012 03 27 mysql的binlog详解 什么是binlog binlog日志用于记录所有更新了数据或者已经潜在更新了数据 例如 没有匹配任何行的一个DELETE 的所有语句 语句以 事件 的形
  • 洛谷T160512 G - 森林(并查集)

    题目思路 按照正常的并查集思路来想的话 对于操作一 分裂成两颗树后 比较难维护的是其中一颗子树的所有子节点的祖先节点 因为 在find找祖先节点的时候会找到分裂前的的那个祖先节点 如果给每个子节点都更改的话 复杂度不允许 但是 如果我们把删
  • 【Yarn】yarn源码阅读之AsyncDispatcher

    文章目录 1 概述 1 1 图示如下 2 源码解读 2 1 继承关系 2 2 构造方法 2 3 serviceInit方法 2 4 serviceStart 2 5 dispatch 2 6 注册类型方法 2 7 GenericEventH
  • (三)Qlabel显示图片

    在 一 QT学习中 我们说过label这个控件是可以显示图片的 那么这篇让我们看下如何显示图片 首先让我们创建一个项目picture 为项目布置上对应的控件label 让图片显示在label上 代码很简单 如下 QLabel abel ne
  • Unity+ECS框架(Entity Component System)学习(图文详细+源码)(一)——概念

    Unity ECS框架 Entity Component System 学习 图文详细 源码 一 概念 官方链接 一 ECS介绍 Entity 实体 Component 组件 System 系统 实例化系统 实例化系统 二 ECS概念 En
  • Java开发主流框架有哪些?

    SSM组合 SSM是一种Java Web开发的组合框架 是Spring Spring MVC和MyBatis的缩写 Spring是一个轻量级的Java应用框架 提供了一系列的模块 包括IoC容器 AOP MVC框架 数据访问和事务等 可以帮
  • react native xcode unable to open configuration settings file

    解决方案 pod install 然后重开 pod install可能会很久 pod install verbose 可以看进度
  • blender动画全面学习教程

    大小解压后 31 8G 时长28小时 包含项目文件 1920X1080 MP4 语言 英语 中英文字幕 根据原英文字幕机译更准确 Gumroad 活着 Blender中的动画课程 云桥网络 平台获取课程 信息 Alive 是迄今为止发布的最
  • Python import Queue ImportError: No module named 'Queue'

    python3 中引入Queue 会报出这个问题 python3 中这样引入 import queue python2 中这样引入 import Queue 为了兼容 可以这样 import sys if sys version gt 3
  • 机器学习-线性回归-多维度特征变量

    1 假设函数 之前的几篇文章里面 我们都只是介绍了单维特征变量的线性回归模型 比如预测房价的时候 我们只用了房子的面积这个维度 接下来我们会去研究多个维度的线性回归模型 还是从预测房价这个例子入手 假设我们现在不只是单纯的考虑房子的面积 还
  • verilog 简单分频程序

    偶数分频 最简单二分频 在输入时钟上升沿翻转即可 N分频 N为偶数 计数器计数到N 2 1翻转 如进行4分频 count 4 2 1 1时翻转 6分频计数器计到2 翻转 程序如下 经过实测验证 正确 时序如图 可以看出 从36到42是一个周
  • 西瓜书 第一章 绪论

    1 1 引言 理解机器学习 人类的 经验 对应计算机中的 数据 让计算机来学习这些经验数据 生成一个算法模型 在面对新的情况中 计算机便能作出有效的判断 这便是机器学习 1 2 基本术语 假设我们收集了一批西瓜的数据 例如 色泽 青绿 根蒂
  • linux下只读文件的修改方法

    命令前面加sudo 是以管理员方式打开
  • vue+flask实现视频目标检测yolov5

    开始做这个之前 了解一些vue的基础 然后对flask完全不知道 所以特别感谢很多博主的文章 主要参考的是这篇文章 在WEB端部署YOLOv5目标检测 Flask VUE 博主在GitHub上详细的代码给我一个很好的参考 他采用的是前后端分
  • latex公式自动换行与不自动换行的实现

    例如在双栏中 行内公式太长 就会溢出 很难看 公式中的元素 默认 有些是能自动换行 有些是不能的 例如 内的东西就不能自动换行了 如果是运算符 就能自动换行 可以参考下面这个博客讲的 Latex中行内公式如果在该行不能显示完整则会自动从下一
  • 安装了多个java 如何切换java版本

    安装了多个java 如何切换java版本 问题描述 平常用的是java8 最近在学习java的新特性 这就需要从java8往更高的java版本切换 由于还在使用java8 测试完新特性后我需要再切换回java8 如何切换 安装java的时候
  • JAVA,同级包下的类引用不需要import

    类ServiceResponse 的属性含有同级包下的属性类型为EServiceResPonseStatus类型的变量 此时并没有import引入 而只需要类EServiceResPonseStatus存在即可 如果EServiceResP
  • 连续整数检测法原理C语言,最大公约数的三种算法(欧几里得递归算法、连续整数检测算法、公共质因数相乘算法)...

    最大公约数的算法在编程中是比较典型的 常见的有三种 按效率高低分别为 欧几里得递归算法 连续整数检测算法 公共质因数相乘算法 如下 1 欧几里得递归算法 第一步 如果n 0 返回m值作为结果 同时过程结束 否则进入第二步 第二步 m除以n
  • Dubbo——快速启动(2)

    快速启动 Dubbo 采用全 Spring 配置方式 透明化接入应用 对应用没有任何 API 侵入 只需用 Spring 加载 Dubbo 的配置即可 Dubbo 基于 Spring 的 Schema 扩展 进行加载 mvn