您的位置:首页 > 数据库 > Redis

Dubbo zookeeper 初探【转】

2016-10-25 11:30 369 查看
摘要: Dubbo zookeeper 初探

先把zookeeper在本地给安装好,

这里的话讲述了两个工程一个工程是提供服务的,一个工程是调用服务的,因为dubbo是跟spring进行无缝连接的,故功能配置在spring的配置文件中,跟spring进行整合开发

1、工程是以maven进行构建的,使用的jar包如下:



2、服务提供者的工程

a、dubbo-demo-api 定义接口

[java] view plain copy

public interface IProcessData {

public String deal(String data);

}

b、dubbo-demo-provider 服务提供者

[java] view plain copy

public class ProcessDataImpl implements IProcessData {

/*

* @see com.xxx.bubbo.provider.IProcessData#deal(java.lang.String)

*/

@Override

public String deal(String data) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

return "Finished:" + data;

}

}

c、applicationProvider.xml配置

[html] view plain copy

<?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
">

<!-- Application name -->

<dubbo:application name="hello-world-app" />

<!-- registry address, used for service to register itself -->

<dubbo:registry address="zookeeper://127.0.0.1:2181" />

<!-- expose this service through dubbo protocol, through port 20880 -->

<!--

<dubbo:protocol name="dubbo" port="20880" />

<dubbo:protocol name="dubbo" port="9090" server="netty"

client="netty" codec="dubbo" serialization="hessian2" charset="UTF-8"

threadpool="fixed" threads="100" queues="0" iothreads="9" buffer="8192"

accepts="1000" payload="8388608" />

-->

<!-- Service interface Concurrent Control -->

<dubbo:service interface="com.huangjie.dubbo_Service.service.IProcessData"

ref="demoService" executes="10" />

<!-- Default Protocol -->

<!--

<dubbo:protocol server="netty" />

-->

<!-- designate implementation -->

<bean id="demoService" class="com.huangjie.dubbo_Service.service.impl.ProcessDataImpl" />

</beans>

d、启动服务

[java] view plain copy

public class DubboProviderMain {

public static void main(String[] args) throws Exception {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(

new String[]{"applicationProvider.xml"});

context.start();

System.out.println("Press any key to exit.");

System.in.read();

}

}

3、服务调用者的工程

a、调用类

[java] view plain copy

public class ConsumerThd implements Runnable {

/*

* @see java.lang.Runnable#run()

*/

@Override

public void run() {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(

new String[]{"applicationConsumer.xml"});

context.start();

IProcessData demoService = (IProcessData) context.getBean("demoService"); // get

// service

// invocation

// proxy

String hello = demoService.deal("nihao"); // do invoke!

System.out.println(Thread.currentThread().getName() + " "+hello);

}

public static void main(String[] args) {

new Thread(new ConsumerThd()).start();

/**

* 输出结果:

* Thread-0 Finished:nihao

*/

}

}

b、applicationConsumer.xml配置

[html] view plain copy

<?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
">

<!-- consumer application name -->

<dubbo:application name="consumer-of-helloworld-app" />

<!-- registry address, used for consumer to discover services -->

<dubbo:registry address="zookeeper://127.0.0.1:2181" />

<dubbo:consumer timeout="5000"/>

<!-- which service to consume? -->

<dubbo:reference id="demoService" interface="com.huangjie.dubbo_Service.service.IProcessData" />

</beans>

4、最后需要把zookeeper的服务给启动,在zookeeper安装文件夹下面的bin目录里面的zkServer.cmd给点击运行。不要关闭窗口,保持服务运行



这样整个调用就完成了,这样的好处是只要远程提供ip地址及端口号,以及对外调用的类,客户端就可以调用,客户端不必知道服务端的地址之类的

而且服务端可以开多个zookeeper服务,这样如果其中一个zookeeper 服务死掉了,其他服务还能正常运行

框架/平台构成:
Maven+Springmvc + Mybatis + Shiro(权限)+ Tiles(模板) +ActiveMQ(消息队列) + Rest(服务) + WebService(服务)+ EHcache(缓存) + Quartz(定时调度)+ Html5(支持PC、IOS、Android)

用户权限系统:
组织结构:角色、用户、用户组、组织机构;权限点:页面、方法、按钮、数据权限、分级授权

项目管理新体验:
快速出原型系统、组件树、版本控制、模块移植、协同开发、实时监控、发布管理

可持续集成:
所有组件可移植、可定制、可扩充,开发成果不断积累,形成可持续发展的良性循环

支持平台平台:
Windows XP、Windows 7 、Windows 10 、 Linux 、 Unix

服务器容器:
Tomcat 5/6/7 、Jetty、JBoss、WebSphere 8.5





















































































内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息