Dubbo,入门Demo案列使用,框架原理,Zookeeper的使用,安装监控中心和管理控制台,service,provider,comsumer三个项目的Demo
- dubbo
分布式企业级分布式框架
https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html
二,背景
三,dubbo框架的原理
四,zookeeper
分布式协调服务组件
目的:解决分布式数据事务一致性
节点:类似于路径,节点可以存储数据
能做什么
- 管理配置文件
- 充当dubbo的注册中心
- 管理域名
单节点安装
条件:安装JDK,
解压,
http://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/
创建配置文件zoo.cfg
启动
集群安装
安装三个zookeeper
- 创建集群目录
- 配置完整一个服务
复制单节点到集群目录
创建数据文件目录
在数据文件目录添加myid文件
修改zk1/conf/zoo.cfg
myid:用于存储节点表示(编号)
zoo.cfg文件:用于配置集群
- 复制2份,共计三个服务
分别修改zk2,zk3的myid,zoo.cfg文件内容
- 启动
注意:关闭单节点zookeeper,避免避免端口冲突
五,安装监控中心
- 创建安装目录
- 解压
- 修改配置文件
- 启动
禁用防火墙
六,安装管理控制台(不是必须安装,只是为了方便管理)
- 解压tomcat,清空tomcat/webapps/ROOT
- 解压dubbo-admin.war至tomcat/webapps/ROO目录
- 修改dubbo.properties
- 启动tomcat
七,项目结构
dubbo-service:用于添加JAVA接口interface
dubbo-provider:用于添加JAVA接口实现类,并且发布服务
dubbo-consumer:用于消费服务,即服务的调用
服务发布
创建dubbo-service项目
https://mvnrepository.com/artifact/com.alibaba/dubbo/2.5.8
修改pom文件
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.8</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> <type>pom</type> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> |
public interface DemoService { void sayHello(String name); } |
创建dubbo-provider 项目
修改pom文件添加依赖
<dependencies> <dependency> <groupId>com.ljw</groupId> <artifactId>001dubboservice</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> |
public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return "hello"+name; } } |
dubbo-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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 1dubbo项目名称,提供方应用信息,用于计算依赖关系 --> <dubbo:application name="demo-provider" /> <!-- 2注定注册中心,使用zk广播注册中心暴露服务地址 --> <dubbo:registry id="zk1" address="centos-node6:2181,centos-node6:2182" protocol="zookeeper" /> <!-- 3指定暴露接口,协议,用dubbo协议在20880端口暴露服务 --> <dubbo:protocol id="mydubbo" name="dubbo" port="20880" /> <!-- 4和本地bean一样实现服务 --> <bean id="demoService" class="com.ljw.service.impl.DemoServiceImpl" /> <!-- 5发布服务声明需要暴露的服务接口 --> <dubbo:service interface="com.ljw.service.DemoService" ref="demoService" /> </beans> |
编写main方法发布
public class Provider { public static void main(String[] args) throws IOException { //读取配置文件,加载容器 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"dubbo-provider.xml"}); //启动容器 context.start(); //输入任意字符停止程序 System.in.read(); } } |
创建dubbo-consumer项目
修改POM文件
<dependencies> <dependency> <groupId>com.ljw</groupId> <artifactId>001dubboservice</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> |
创建dubbo-consumer.xml文件
<!-- 1dubbo项目名称,提供方应用信息,用于计算依赖关系 --> <dubbo:application name="demo-consumer" /> <!-- 2注定注册中心,使用zk广播注册中心暴露服务地址 --> <dubbo:registry id="zk1" address="centos-node6:2181,centos-node6:2182" protocol="zookeeper" /> <!-- 3,引用服务,生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="demoService" interface="com.ljw.service.DemoService" /> |
编写测试类comsumer的main方法
public class Comsumer { public static void main(String[] args) { //读取配置文件,加载容器 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"dubbo-comsumer.xml"}); DemoService bean = context.getBean("demoService", DemoService.class); String hstr=bean.sayHello("ljw"); System.out.println(hstr); } } |
八,负载均衡和注解
配置文件的方式
- 随机
loadbalance=”dandom”
默认是随机的
- 轮询
如果很慢就会卡住拥挤
loadbalance=”roundrobin”
- 最小活跃数原则
loadbalance="leastactive"
- 一致性hash原则
一次调用成功永远调用
loadbalance="consistenthash"
comsummer的XML文件配置
<dubbo:reference id="demoService" interface="com.ljw.service.DemoService" loadbalance="dandom"/>
注解的方式
Provider项目修改配置,开启注解
<!-- 1dubbo项目名称,提供方应用信息,用于计算依赖关系 --> <dubbo:application name="demo-provider" /> <!-- 2注定注册中心,使用zk广播注册中心暴露服务地址 --> <dubbo:registry id="zk1" address="192.168.1.2:2181,192.168.1.2:2182" protocol="zookeeper" /> <!-- 3指定暴露接口,协议,用dubbo协议在20880端口暴露服务 --> <dubbo:protocol id="mydubbo" name="dubbo" port="20880" /> <!-- 4开启注解 --> <dubbo:annotation package="com.ljw.service"/> |
实现类添加注解
import com.alibaba.dubbo.config.annotation.Service; import com.ljw.service.DemoService; @Service public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return "hello"+name; } } |
Comsumer项目
POM
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.10.RELEASE</version> <scope>test</scope> </dependency> |
开启注解
<!-- 4开启注解 -->
<dubbo:annotation package="com.ljw.comsumer"/>
测试类
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:dubbo-consumer.xml") public class ComsumerTest { @Reference(loadbalance = RoundRobinLoadBalance.NAME) DemoService demoService; @Test public void testSayHello() { String hstr=this.demoService.sayHello("ljw"); System.out.println(hstr); } } |
九,dubbo多版本
部分程序更新,部分服务不更新的情况
Provider项目
@Service(version = "1.1.0") public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return "hello"+name; } } |
Comsumer项目
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:dubbo-consumer.xml") public class ComsumerTest { @Reference(loadbalance = RoundRobinLoadBalance.NAME,version = "1.1.0") DemoService demoService; @Test public void testSayHello() { String hstr=this.demoService.sayHello("ljw"); System.out.println(hstr); } } |
十,分组聚合
Comsumer
Dubbo,入门Demo案列使用,框架原理,Zookeeper的使用,安装监控中心和管理控制台,service,provider,comsumer三个项目的Demo相关推荐
- SSH+ExtJs4开发项目的Demo实例视频讲解
大家好.应大家的需求和一些迷茫的人不知道如何去ExtJs开发.所以我做了一套视频和源码共享一下.分享一下经验. 搭建了SSH的框架.因为我在网上找SSH的时候.都只有一个Demo的实例.本身真正的作用 ...
- (STITP)jotm-btp项目的Demo分析
STITP的中期检查临近了,要抓紧时间赶赶进度了,相对次要的事放一边了-- 这次STITP项目做的是<基于BTP协议的WebService事务平台的实现>,看似很有研究价值的课题,协议打印 ...
- Dubbo入门Demo
2019独角兽企业重金招聘Python工程师标准>>> 1.Dubbo简单介绍 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方 ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...
- Dubbo入门----搭建一个最简单的Demo框架
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- Dubbo入门---搭建一个最简单的Demo框架
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- JDBC的入门案列以及JDBC的对事务的管理
JDBC的概念 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中 ...
- Dubbo入门之hello world(zookeeper做注册中心)
说明:注册中心可以用多种,项目中一般都用zookeeper 注册中心方式 demo1用的multicast广播注册中心方式 会了multicast广播注册中心方式,zookeeper就很简单了 dem ...
最新文章
- 详解keepalived配置和使用
- 函数字节不对齐函数崩溃_Excel中统计字符数,不需要一个一个的数,len函数能轻松搞定...
- ajax从php里能输出俩值,Ajax返回值作为PHP变量
- HDURevenge of Segment Tree(第二长的递增子序列)
- ceph rbd resize之后文件系统的调节
- 根据id来实现小程序tab切换,
- 再论《IT人员应聘建议》
- C++文本处理造轮子
- linux安装运行jmeter,Linux下安装运行Jmeter程序
- 10 年前被删的初恋,凌晨 1 点突然加我…屌丝的眼泪
- 微型计算机控制技术第二版第六章课后答案,微型计算机控制技术第6章习题答案...
- 【Java面试】Java面试简历—轻松月薪过w(附赠最全简历模板)
- SVG—最简单的SVG动画
- 稳压二极管及特性介绍
- 搜索引擎原理第三阶段之排名
- Dubbo学习之DubboService
- 周志华教授:如何做研究与写论文?
- 分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画 - AI 百晓生
- Excel使用公式引用其它sheet数据创建序列,无法忽略空白值的解决办法
- linux 创建一个数据库,Linux下手动创建一个数据库
热门文章
- 【定位原理揭秘第三期】室内定位技术原理揭秘
- 《文明之光》吴军 著,读书笔记
- 分享:你必须知道的H5加速器九大常识!
- 12000字解读安踏:DTC中国化的“热血战纪”
- 电主轴编码器测试工具VS sensorikHCU500/DCMU-BOX,海德汉PWM21/PWT101,LENORD+BAUER(L+B)211BSO/211CS04E2M使用对比
- 服务器怎么增加独立显卡,dell服务器设置独立显卡(dell服务器加显卡)
- 阿卡迪亚大学计算机专业好考吗,普通高中学生如何考取阿卡迪亚大学?
- WIN7下点击安全删除硬件没反应解决办法
- 基于cocos-2dx的游戏制作——I wanna save the princess
- 使用OneDNS完美解决办公网络优化问题