2021-05-12-md1

news/2024/11/17 16:01:10/文章来源:https://www.cnblogs.com/Aeons/p/18375595

本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。

1. zookeeper下载安装

本文的例子使用zookeeper作为注册中心。

首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/releases.html

然后,从conf文件夹找到zoo_sample.cfg配置文件,复制一份副本,重命名为zoo.cfg。重命名后打开,找到dataDir=/tmp/zookeeper这一行,可修改为自定义的文件夹: dataDir=../data。然后返回根目录,建一个data文件夹即可。

zookeeper下载安装

最后,启动bin目录下的zkServer.cmd,即可启动zookeeper。注意输出内容可能会有端口信息,默认2181。

2021-05-12 22:54:09,460 [myid:] - INFO  [main:NIOServerCnxnFactory@674] - binding to port 0.0.0.0/0.0.0.0:2181

2.dubbo例子

1)新建项目

新建两个项目,服务消费consumer模块和服务提供provider模块 。添加对应的maven支持和spring支持。

项目结构如下:

项目

2)服务提供provider

  • 在pom.xml中添加dubbo相关的依赖。
<dependencies><!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.6</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.10</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.5</version></dependency><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.32.Final</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.8.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.8.0</version></dependency></dependencies>
  • 定义接口Animal。
/*** 动物接口*/
public interface Animal {/*** 描述: 返回动物的叫声*/String sound();
}
  • 定义具体类Cat实现Animal接口
public class Cat implements Animal {public String sound() {return "喵";}
}
  • 在resources 下新建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://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!--整个dubbo应用的名称和所属者--><dubbo:application name="myApp" owner="yt"/><!-- 监控中心配置 --><dubbo:monitor protocol="registry"/><!--dubbo这个服务所要暴露的服务地址所对应的注册中心--><!--<dubbo:registry address="N/A"/>--><dubbo:registry address="zookeeper://localhost:2181" check="false"/><!--当前服务发布所依赖的协议;webserovice、Thrift、Hessain、http--><dubbo:protocol name="dubbo" port="20880"/><!--服务发布的配置,需要暴露的服务接口--><dubbo:service interface="com.yt.provider.Animal" ref="cat"/><!--Bean bean定义--><bean id="cat" class="com.yt.provider.Cat"/>
</beans>
  • 新建一个Provider类,用来启动项目
public class Provider {public static void main(String[] args) throws IOException {// xml配置文件的路径ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/provider.xml");context.start();// 任意键退出System.in.read();}
}

项目结构:

provider

至此整个服务端就启动完成了。

3)服务消费consumer

  • 在pom.xml中添加dubbo相关的依赖。这一步和provider的依赖类似,只是多了要导入provider的依赖这一块。
<dependencies><!-- 依赖于服务提供者的包 --><dependency><groupId>com.yt</groupId><artifactId>provider</artifactId><version>1.0-SNAPSHOT</version></dependency>...<!-- 其他的就是provider的依赖,就省略了-->....</dependencies>
  • 在resources 下新建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://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 应用配置 --><dubbo:application name="myApp" owner="yt"/><!-- 监控中心配置 --><dubbo:monitor protocol="registry"/><!--dubbo这个服务所要暴露的服务地址所对应的注册中心--><!-- <dubbo:registry address="N/A"/> --><dubbo:registry address="zookeeper://localhost:2181" check="false" /><!-- 引用配置 --><dubbo:reference id="animal" interface="com.yt.provider.Animal"/>
</beans>
  • 新建Consumer类,用来调用provider提供的接口
package com.yt.consumer;import com.yt.provider.Animal;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 消费consumer*/
public class Consumer {public static void main(String[] args) {// 配置文件路径ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/spring/consumer.xml");context.start();// 暴露的是接口Animal,多态。Animal animal = (Animal) context.getBean("animal");System.out.println(animal.sound());}
}
  • 输出结果:

项目结构:

consumer

至此,一个简单的dubbo例子就完成了。

当然,一个提供者可以供多个消费者消费。所以将consumer拷一份命名为consumer2,依然可以同时获取到provider暴露出的接口。

consumer2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785990.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Myslq千万级数据量查询

两千四百万数据量SQL查询没有索引时 如果字段无索引,耗时十分钟无索引查询过程 MySQL 需要对 2400 万条数据一一进行比较,假设每条记录的处理时间为 0.025 ms,那么总查询时间大约为 10 分钟(即 2400 万 0.025 ms)。 •全表扫描: 当查询 kh = 03356129487 时,如果表上没有…

001.MinIO简介

MinIO 简介 MinIO 是天然的云原生存储,可以作为轻量级容器运行,由相关编排服务(如 Kubernetes )管理。 整个服务器是一个不到100MB的静态二进制文件,并且在使用CPU和内存资源方面即使在高负载场景也非常高效,因此可以在共享硬件上共同托管大量租户。 MinIO 可以在任何地方和…

转载:国产麒麟v10、UOS系统在线比较两个Word文件的内容差异

调用PageOffice的WordCompare方法,同时在线打开两个Word文档,可以切换显示其中的一个文档,或者显示两个文档的对比结果,即可实现在线的文档内容比较功能。此功能可以应用在以下方面: 文档管理中,比较两个版本Word文档的差别。 在处理文档管理的Web项目中,比较两个版本的…

并发编程[5]_wait和notify

1. wait 和 notify wait() 方法是Object类中的方法,他的作用是让当前线程进入等待状态,而使用notify() 方法可以唤醒。wait(long): void ,参数是毫秒,表示等待毫秒数,直到时间结束或被唤醒; wait(long, int): void ,第一个参数是毫秒,第二个参数是纳秒,如果纳秒在0-99…

【2024-08-23】邬贺铨院士:大模型赋能企业数字化转型

一、AI的演进之路:从生成式AI到通用A1二、大模型的构建与应用:自建与协作开发的行业大模型2.1 自建基础大模型2.2 合作开发行业大模型三、对MaaS及其工具链的探索四、大模型推动云服务创新4.1 大模型时代对算力网络的要求4.2 大模型推动IaaS创新发展4.3 大模型催生AI PaaS创新…

.NET 8 + Vue 3 极简 RABC 权限管理系统

前言 在日常工作中,几乎每家公司都需要一个后台管理系统来处理各种任务。为了帮助大家快速搭建这样一个系统,给大家介绍一个基于最新技术 .NET 8 和前端框架 Vue 3 实现的极简 RABC(基于角色的访问控制)权限管理系统。 该系统后端采用经过精心精简的 ABP框架,前端则使用了…

ToDesk支持多系统互控,使用教程来了!

能多系统跨设备进行远控的软件被我找到了! 就是ToDesk远程控制👍官网就能免费下载使用 遇到公司电脑window系统,但家里笔记本手机是苹果再也不会束手无策了! 电脑手机平板都能互相远程控制,一个账号可登录多个设备 传输文件速度高达12m/s,画质高清还能匹配网速流畅度进行…

初识 Flutter

一、Flutter 简介 Flutter 是 Google 推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter 提供了丰富的组件、接口,开发者可以很快地为 Flutter 添加 Native(即原生开发,指基于…

Windows11下安装Docker

一、准备工作 先下载以下资源,暂时不要安装: Docker安装包 Wsl2安装包 二、开始安装 1.打开主板BIOS的虚拟化选项,可以在任务管理器中确实是否已经打开2.勾上虚拟机平台所有选项(建议完成这一步骤重启)3.用管理员身份打开PowerShell,执行下面命令启动wsl dism.exe /onlin…

振弦式应变计 可同步测量温度,监测混凝土结构的应力与应变

振弦式应变计 可同步测量温度,监测混凝土结构的应力与应变振弦式应变计广泛适用于长期埋设在水工建筑物或其他混凝土结构物内部,如梁、柱、桩基、挡土墙、衬砌、墩以及基岩等,用于测量埋设点的线性变形(应变)和应力,同时也可兼测埋设点的温度。GEO SFxxxx系列振弦式应变计…

iPhone 16 即将推出,,这将是苹果最大的升级, 这里有 7 个你不敢相信 的功能

iPhone 16 即将推出,,这将是苹果最大的升级, iphone16有哪些新功能呢?iPhone16值得买么?这里有 7 个你不敢相信 的功能,让我们先睹为快。iphone16有哪些新功能 1. 您现在可以链接两部 iPhone 以在 iOS 18 中发送现金 2.新的AI智能计算器 3.用眼睛控制你的iPhone 4. 阻止使…

苹果电脑如何远程控制?ToDesk三步操作就成功!

随着电子设备深入我们的日常生活,远程控制也成为了人们电脑手机中的常备软件,无论是为了工作、学习还是生活便利,远程控制软件能让我们跨越空间实现不同设备之间的远控连接。目前市面上有众多国内外远控软件,但小社长最常用的还属ToDesk远程控制。它的操作界面简单还易上手…