dubbo+zookeeper初体验
Posted 客技院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo+zookeeper初体验相关的知识,希望对你有一定的参考价值。
小P经过千辛万苦,终于拿到了心仪的offer,
今天是入职的第一天...
非常高兴的拿到项目,一阵操作猛如虎,回头一看0-5
分布式...?
zookeeper...?
dubbo...?
服务治理...?
负载均衡...?
什么是zookeeper。。。动物园管理员?
那dubbo又是干啥的?
- dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成
- 高性能和透明化的RPC远程服务调用方案
- SOA服务治理方案
- 基于TCP长连接Reactor模型通信框架
主要核心组件:
- Provider:暴露服务的服务提供方
- Consumer:调用远程服务的服务消费方
- Registry:服务注册与发现中心
- Monitor:服务的调用次数和调用时间的监控中心
- Container:服务运行容器
安装zookeeper
配置dubbo管理控制台
创建maven项目
项目结构: coustomer: 调用远程服务; interface: 存放公共接口; provider : 提供远程服务。
创建公共接口maven工程:interface
package com.alibaba.dubbo.demo;
public interface DemoService {
String sayHello(String name);
}
创建服务提供maven工程:provider
实现公共接口:
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配置声明文件:applicationContext.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">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="app-provider" />
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用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>
启动远程服务类:AppProvider.java
public class AppProvider
{
@SuppressWarnings("resource")
public static void main( String[] args ) throws IOException
{
System.out.println( "dubbo provider start!" );
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.start();
System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
}
}
观察dubbo管理控制台,提供者栏会出现一个服务信息,如下:
创建服务消费maven工程:coustomer
添加spring配置声明文件:applicationContext.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">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="app-customer" />
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>
创建App.java类,启动AppCoustomer.java类,调用远程服务
public class AppCoustomer {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
System.out.println("dubbo costomer start!");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.start();
DemoService demoService = (DemoService) context.getBean("demoService"); // 获取远程服务代理
String hello = demoService.sayHello("jackson wang"); // 执行远程方法
System.out.println(hello); // 显示调用结果
// 只有开着消费者,才能在控制台看到。为保证服务一直开着,利用输入流的阻塞来模拟
// System.in.read();
}
}
控制台输出结果为:
dubbo管理控制台,会出现消费者信息:
转眼间,已是夜深人静,,,
充实忙碌的一天就这样过去。
路灯下,小P骑着小蓝,来一场回家的速度与激情。。。
以上是关于dubbo+zookeeper初体验的主要内容,如果未能解决你的问题,请参考以下文章