Dubbo项目简单实践
1.美图
上一节:https://blog.csdn.net/qq_21383435/article/details/81076625
1.zookeeper集群
zookeeper伪集群模式
2.新建maven项目DubboTest
<groupId>com.lcc.dubbo</groupId><artifactId>DubboTest</artifactId><version>1.0-SNAPSHOT</version>
然后引入包
<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.6</version></dependency><!-- 添加zk客户端依赖 --><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><!-- 添加对dubbo-common的依赖,使用UserService --><dependency><groupId>per.lx</groupId><artifactId>dubbo-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>
然后项目结构如下
2.1 生产者,提供者,provider
package com.lcc.dubbo.test.service;/*** Created by lcc on 2018/7/17.*/
public interface DemoService {String sayHello(String name);
}
package com.lcc.dubbo.test.service.impl;import com.lcc.dubbo.test.service.DemoService;/*** Created by lcc on 2018/7/17.*/
public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return "Hello " + name;}
}
package com.lcc.dubbo.test;/*** Created by lcc on 2018/7/17.*/
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Provider {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");context.start();System.in.read(); // 按任意键退出}
}
/Users/lcc/IdeaProjects/DubboTest/src/main/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:application name="lcc_provider" /><!-- 配置zookeeper的地址,集群地址用逗号隔开 --><dubbo:registry protocol="zookeeper" address="lcc:2181,lcc:2182,lcc:2183" /><!-- 用dubbo协议在29014端口暴露服务 --><dubbo:protocol name="dubbo" port="29014" /><!-- 声明需要暴露的服务接口 --><dubbo:service interface="com.lcc.dubbo.test.service.DemoService" ref="demoService" /><!-- 具体的实现bean --><bean id="demoService" class="com.lcc.dubbo.test.service.impl.DemoServiceImpl" />
</beans>
2.2 消费者
package com.lcc.dubbo.test;/*** Created by lcc on 2018/7/17.*/
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lcc.dubbo.test.service.DemoService;public class Consumer {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");context.start();DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理String hello = demoService.sayHello("lcc"); // 执行远程方法System.out.println( hello ); // 显示调用结果}
}
/Users/lcc/IdeaProjects/DubboTest/src/main/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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --><dubbo:application name="lcc_consumer" /><!-- 配置zookeeper的地址,集群地址用逗号隔开 --><dubbo:registry protocol="zookeeper" address="lcc:2181,lcc:2182,lcc:2183" /><!-- 生成远程服务代理,可以和本地bean一样使用demoService --><dubbo:reference id="demoService" interface="com.lcc.dubbo.test.service.DemoService" />
</beans>
然后分别运行provider
消费者
可以看到我们调用了服务
2.3 zookeeper查看
运行provider前
[zk: localhost:2181(CONNECTED) 35] ls /
[zookeeper]
运行provider后
[zk: localhost:2181(CONNECTED) 38] ls /
[zookeeper, dubbo]
[zk: localhost:2181(CONNECTED) 39] ls /dubbo
[com.lcc.dubbo.test.service.DemoService]
[zk: localhost:2181(CONNECTED) 40] ls /dubbo/com.lcc.dubbo.test.service.DemoService
[configurators, providers]
[zk: localhost:2181(CONNECTED) 41] ls /dubbo/com.lcc.dubbo.test.service.DemoService/providers
[dubbo%3A%2F%2F192.168.1.47%3A29014%2Fcom.lcc.dubbo.test.service.DemoService%3Fanyhost%3Dtrue%26application%3Dlcc_provider%26dubbo%3D2.5.6%26generic%3Dfalse%26interface%3Dcom.lcc.dubbo.test.service.DemoService%26methods%3DsayHello%26pid%3D4131%26side%3Dprovider%26timestamp%3D1531809097088]
[zk: localhost:2181(CONNECTED) 42] ls /
再次运行Consumer后
zk: localhost:2181(CONNECTED) 42] ls /
[zookeeper, dubbo]
[zk: localhost:2181(CONNECTED) 43] ls /dubbo
[com.lcc.dubbo.test.service.DemoService]
[zk: localhost:2181(CONNECTED) 44] ls /dubbo/com.lcc.dubbo.test.service.DemoService/
Command failed: java.lang.IllegalArgumentException: Path must not end with / character
[zk: localhost:2181(CONNECTED) 45] ls /dubbo/com.lcc.dubbo.test.service.DemoService
[consumers, configurators, routers, providers]
[zk: localhost:2181(CONNECTED) 46] ls /dubbo/com.lcc.dubbo.test.service.DemoService/consumers
[]
3.注意:
我们如果与运行一次后,修改包名后,再次运行会报错,因为已经在zookeeper中注册过了,可以修改配置文件xml或者删除掉zookeeper中的注册信息
Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /192.168.1.47:29014, cause: Failed to bind to: /0.0.0.0:29014at com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(AbstractServer.java:67)at com.alibaba.dubbo.remoting.transport.netty.NettyServer.<init>(NettyServer.java:63)at com.alibaba.dubbo.remoting.transport.netty.NettyTransporter.bind(NettyTransporter.java:33)at com.alibaba.dubbo.remoting.Transporter$Adaptive.bind(Transporter$Adaptive.java)at com.alibaba.dubbo.remoting.Transporters.bind(Transporters.java:57)at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchanger.bind(HeaderExchanger.java:41)at com.alibaba.dubbo.remoting.exchange.Exchangers.bind(Exchangers.java:71)at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.createServer(DubboProtocol.java:277)... 24 more
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /0.0.0.0:29014at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:303)at com.alibaba.dubbo.remoting.transport.netty.NettyServer.doOpen(NettyServer.java:94)at com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(AbstractServer.java:62)... 31 more
Caused by: java.net.BindException: Address already in useat sun.nio.ch.Net.bind0(Native Method)at sun.nio.ch.Net.bind(Net.java:433)at sun.nio.ch.Net.bind(Net.java:425)at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
删除指令:
delete path [version]
删除指定节点数据,其version参数的作用于set指定一致
delete /node_1/node_1_10000000001
整个节点全删除
注意:delete只能删除不包含子节点的节点,如果要删除的节点包含子节点,使用rmr命令
rmr /node_1
Dubbo项目简单实践相关推荐
- Dubbo基础专题——第二章(Dubbo工程简单实践)
前言:刚完成的Spring基础专题本想更新源码的,但是发现分布式非常火,而我喜欢玩这个,所以今年我希望把我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从一个 ...
- 说一下dubbo项目简单的搭建过程_dubbo学习(1)--简单的入门搭建实例
1 简介 dubbo是一个分布式服务框架,由阿里巴巴的工程师开发,致力于提供高性能和透明化的RPC远程服务调用.可惜的是该项目在2012年之后就没有再更新了,之后由当当基于dubbo开发了dubbox ...
- Dubbo入门(2) - 简单实践
作者:不洗碗工作室 - Marklux 出处:Dubbo入门(2) - 简单实践 版权归作者所有,转载请注明出处 在了解什么是分布式框架之后,我们需要上手实践一下,来了解整个系统是如何运作起来的. 本 ...
- SSM+Maven+Dubbo+Zookeeper简单项目实战以及易错注意点
最近为了熟悉Dubbo远程过程调用架构的使用,并结合SSM+Maven整合了简单的一套项目实战 直接看项目结构图 各模块介绍 dubbo-common:存放项目需要的公众类,像查询模型.数据库实体模型 ...
- Dubbo Cloud Native 实践与思考
Dubbo Cloud Native 实践与思考 分享简介 Cloud Native 应用架构随着云技术的发展受到业界特别重视和关注,尤其是 CNCF(Cloud Native Computing F ...
- Dubbo原理与实践(2)
Dubbo是阿里开源的的rpc框架,现已成为Apache的顶级项目.Dubbo在国内的大公司中使用较多,具有良好的服务治理能力. 在阿里停止维护一段时间后,2017年又重新开始维护,2.x的最新版本为 ...
- 公司项目NODEJS实践0.3[ mongo / session ...]
一.前言 ⋅⋅⋅书接上回,我们搭建了WEB服务端路由.模板等功能,完成了register 通过ajax与后端的通信,今天主要完成数据与mongodb的存取,实现注册 / 登录 / 退出功能 ⋅⋅⋅DE ...
- 第 28 小时项目管理过程实践和案例分析
第 28 小时项目管理过程实践和案例分析 根据考试大纲,这部分作为下午 考试的内容,共有 3 道大题,每题 25 分,共 75 分,45 分及格.考题形式为"计算+项目管理有关知识" ...
- Redis的简单实践
Redis的简单实践 文章目录 Redis的简单实践 前言 Redis简介 Redis基本操作命令 Java使用Redis 使用IDEA搭建Redis项目 使用Jedis进行简单增删改查 使用Jedi ...
最新文章
- ubuntu tacacs 服务器安装启动
- vim一些挺方便的功能
- 课程设计---停车场管理系统
- Pixhawk(PX4)之驱动详解篇(0)_前期准备(招贤令)
- Picocli 2.0:事半功倍
- #define和const的区别
- leetcode 59. 螺旋矩阵 II(递归)
- 强制性国家标准 对胎压监测传感器提出更高要求
- 集成腾讯信鸽推送遇到的大坑
- 虚拟偶像成为二次元香饽饽,从直播切入有戏吗?
- 讯飞2021年营收183亿:同比增41% 净利为15.56亿
- dble 不支持的关键字 mysql_分布式 | DBLE Release Notes 详细解读 2.19.11.0
- SVN update拒绝访问,clean up失败
- 贪吃蛇游戏 c++代码 ↑,↓,→,←分别控制蛇的方向 增加蛇长 随机生成食物 吃食物 吃撞墙 撞到自己
- eclipes error
- 优化ESD防护的PCB设计准则
- open wrt 跟换主题_分享个openwrt主题 可以简单自定义的 主题
- 质数与合数系列——素数判断
- JAVA 事务注解@Transactional用法
- 从足球说到鲁伯特之泪