首页 > 代码库 > dubbo+zookeeper+spring搭建框架

dubbo+zookeeper+spring搭建框架

头忽然要弄RPC,好吧,那就弄吧,看了几天视频文档总算搭好了,记录下。

spring就不用说了,在src.main.resources下弄个spring文件夹,在web.xml中放入消费方,提供方等配置xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
       classpath*:/spring/spring-*.xml
     </param-value>
</context-param>

 

zookeeper也很简单,修改conf文件夹下zoo_sample.cfg为zoo.cfg

启动bin下的zkServer.cmd,服务就启动了,可以用zkCli.cmd来查看信息

简单的操作命令,从别的地方粘过来的~

  • 显示根目录下文件

    ls /              //查看当前节点数据
    ls2 /             //查看当前节点数据并能看到更新次数等数据
    
  • 创建文件, 并设置初始内容:

    create /config "test" //创建一个新的节点并设置关联值
    create /config “”     //创建一个新的空节点
    
  • 获取文件内容

    get /brokers      //获取节点内容
    
  • 修改文件内容

    set /zk "zkbak"   //对 zk 所关联的字符串进行设置
    
  • 删除文件

    delete /brokers  //删除节点
    rmr    /brokers  //删除节点及子节点

 

下面就是dubbo

先单独写一个接口jar,这个文件提供方,消费方都要用

public interface IHelloWorld {
    String getBook(Book book);
}

提供方实现 IHelloWorld接口

public class HelloWorldImp implements IHelloWorld{
    @Override
    public String getBook(Book book) {
        return "book的名称为:"+book.getName();
    }
}

提供方xml spring-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:p="http://www.springframework.org/schema/p"
    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="hello-world-app"/>
 
    <!-- 使用zookeeper广播注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.gensoft.rpc.zz.IHelloWorld" ref="demoService" />
 
     <!-- 和本地bean一样实现服务 -->
    <bean id="demoService" class="cn.com.gensoft.rpc.HelloWorldImp" />
 
</beans>

消费方xml spring-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:p="http://www.springframework.org/schema/p"
    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"
    default-lazy-init="false">
 
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="consumer-of-helloworld-app"  />
 
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
 
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.gensoft.rpc.zz.IHelloWorld" />
    
</beans>

消费方调用

ServletContext sc = request.getSession().getServletContext();   
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);     
IHelloWorld iHelloWorld = (IHelloWorld)ac1.getBean("demoService");
String bookName = iHelloWorld.getBook(book);
System.out.println(bookName);

 

大功告成~

dubbo+zookeeper+spring搭建框架