`
2277259257
  • 浏览: 515225 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

dubbo 入门教程 基于zookeeper

 
阅读更多
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

 

从上午发布的安装zookeeper 遇到的第一个错误开始 一直在搞dubbo 中午吃了饭 睡了会觉 。中间错误一个又一个 慢慢的都解决了。小有成就,哈哈。算这个星期天没有白费吧。

 

学习的过程值得留恋。分享一下吧

只是之前听网友提过dubbo这个东西 一直都没有百度和使用过。前天答应老板 我们框架中留一个口出来 给dubbo 。今天天气热 就在宿舍研究吧。

 

首先是百度 知道是做什么的 后来就开始找教程 但是大家都知道 百度的教程 基本都是一个模板。看了大概有20篇 基本就换换字 代码 都是一样的。试了一下 不行 也不报错 也不知道在哪里入口。后来想想一定是不行 换一种方式吧 直接用main方法启动服务的方式。百度了一推 还是一样的模板 就是maven 但是哥没有使用过maven。在关键的时候还要研究一下maven 比较耗时间了。后来准备放弃的时候 聊会天,继续找有权威性的 找到dubbo的团队提供出来的。继续 发现spring的xml报错。后来浏览器访问啊 ping 啊 各种尝试 最后不行。再微博上看了dubbo发布的 在14年的时候 域名绑定就换成dubbo.io了 后来在这个网上看到了一个下载。是github 然后进去看看。 下载了2个demo。一个是基于http的,还有一个是基于ws也就是websevice的。看了一下 都是基于maven的。有点恼火了。刚刚开始百度的时候 第一步就是用zookeeper。最后官网给的例子不是zookeeper。继续看之前的例子,(总不能放弃吧)。还是没有结果。想想 先一步一步来吧。 于是新建了一个web项目 放入spring对应的包。找到dubbo的包 放了进来,然后找到zookeeper的包 放进来, 写一个接口 写一个实现类,配置文件就用的百度过来的,开始不明白,看了很多资料 自己也开始慢慢地理解过来了,于是在main里面启动服务,错误,说找不到类,好办了 我想一定是我的zookeeper的client没有加,但是我是服务器这边的 应该是不要的 想想  先加进去试试。服务器启动 再次报错。有看了一下包名 不是这个开放团队的client。再找 放进去 试试。还是对 少各种class 一个一个找 放进去。还不错 对了。服务启动  不抱错了,然后任何提示 启动成功的标志都没有 之后就学网上的人 在start 后面打印一句话。打印不出来,怎么回事呢。难道还是不对,百思不得其解。后来在想想 我是同时zookeeper注册的 我的zookeeper没有开。打开zookeeper。再次启动 对了。那叫一个兴奋。服务端就这样好了。

客户端就直接copy网上的代码,调用成功。 开始聊天 吹牛逼、。终于成功了。后来发现我的服务端和客户端都在一个项目上面的。然后在新建一个项目 放客户端。继续报错。 说找不到方法。找到对应的类下面的方法。是有的啊。难道是缓存。clear一下。还是不对。头晕了。准备放弃了。实在没有办法了。准备换http或者是ws的了。休息一下 喝杯水。想到了 难道是版本的问题。 找到上午发布文章的zookeeper下载的连接,下载了一个3.3.6的版本的zookeeper.jar放进去,好了。测试几次 真的是好了。哈哈

 

上面的话是写给我自己的 下面的教程是写给大家的。哈哈 有想法的可以评论 ;

第一步 在spring官网下载一个spring比较全的包。 我用的还是以前的3.2

第二步 新建一个web项目。将spring的包放在lib下面。

第三步 在dubbo.io官网的版本库下载dubbo的jar包。

第四步 在Apache的官网下载zookeeper的项目。 zookeeper的安装方法在上篇文章讲过了。拿出zookeeper根目录下面的zookeeper.jar就可以。

附加一些jar 工程下面有的 可以无视。slf4j-api-1.7.5.jar,slf4j-log4j12-1.7.5.jar,netty-3.7.0.Final.jar,jetty-util-6.1.26.jar,jetty-6.1.26.jar,commons-cli-1.2.jar 这些jar在zookeeper3.5的lib下面都有。直接拷贝就可以。

还有一个就是zkclient-0.1.0.jar 一定要下载I0Itec的,这个应该不是zk开发的。这个我也忘记在哪里下载的了。不好意思。要是需要的可以在下面评论 留个邮箱什么的。

下面新建一个接口:

1
2
3
4
5
6
package com.unj.dubbotest.provider;
public abstract interface DemoService {
  
 public abstract String build(String name) throws Exception;
  
}

新建一个实现类

1
2
3
4
5
6
7
8
package com.unj.dubbotest.provider.impl;
import com.unj.dubbotest.provider.DemoService;
public class DemoServiceImpl implements DemoService {
 public String build(String name) throws Exception {
  System.out.println("name is === " + name);
  return "你好 名称是 ------------- >>>> " + name;
 }
}

在src下面新建一个applicationContext.xml 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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
        ">
 <!-- 具体的实现bean -->
 <bean id="demoService"
  class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />
 <!-- 提供方应用信息,用于计算依赖关系 -->
 <dubbo:application name="xixi_provider" />
 <!-- 使用multicast广播注册中心暴露服务地址 
  <dubbo:registry address="multicast://224.5.6.7:1234" />-->
 <!-- 使用zookeeper注册中心暴露服务地址 -->
 <dubbo:registry address="zookeeper://127.0.0.1:2181" />
 <!-- 用dubbo协议在20880端口暴露服务 -->
 <dubbo:protocol name="dubbo" port="20880" />
 <!-- 声明需要暴露的服务接口 -->
 <dubbo:service interface="com.unj.dubbotest.provider.DemoService"
  ref="demoService" />
</beans>

最后写一个启动服务的类 (用过cxf的都知道)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.unj.dubbotest.provider;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
  
    public static void main(String[] args) throws Exception {
      
     ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
        context.start();
  
        System.out.println("新浪微博:疯狂的杨中仁.");
         
        System.in.read(); // 按任意键退出
    }
  
}

 

启动zookeeper。在执行启动服务的类 控制台打印了如下信息

1
2
3
4
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version
新浪微博:疯狂的杨中仁.

说明启动成功了。

下面在做客户端。同意 新建一个web项目 把服务端的jar全部拷贝到lib下面去。

新建一个接口 包名和服务端一样 这边接口 其实要在服务器那边拿过来的。

1
2
3
4
5
6
package com.unj.dubbotest.provider;
public abstract interface DemoService {
  
 public abstract String build(String name) throws Exception;
  
}

在src下面新建一个 applicationConsumer.xml文件。内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 <?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.unj.dubbotest.provider.DemoService" />
</beans>

 

新建一个main类来测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.unj.dubbotest.provider.DemoService;
public class Main {
  
 public static void main(String[] args) {
   
   
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
    new String[] { "applicationConsumer.xml" });
  context.start();
  DemoService demoService = (DemoService) context.getBean("demoService"); // get
  // service
  // invocation
  // proxy
  String hello = "";
  try {
   hello = demoService.build("新浪微博:疯狂的杨中仁");
  catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  // do invoke!
  System.out.println(Thread.currentThread().getName() + " " + hello);
 }
  
}

打印信息如下:

1
2
3
 log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
main 你好 名称是 ------------- >>>> 新浪微博:疯狂的杨中仁

在看一下服务器端打印的信息

 

这样就是dubbo 基于zookeeper。是客户端的 web还没有测试。 http,ws 也会在这几天写出来。

下文将介绍基于web容器的。

我想共享一些准备好的jar出来,但是没找到地方,看csdn 但是容量小。求方案。

 

引自:http://my.oschina.net/superman158/blog/466637

分享到:
评论

相关推荐

    dubbo+sping+zookeeper整合例子完整版(包括步骤文档和所有jar)

    【描述】该资源是一个全面的教程,涵盖了将Dubbo、Spring和Zookeeper整合到一起的实际操作步骤,包括完整的配置文件和必要的jar包。遗憾的是,它没有涉及Dubbo与Spring Boot、Redis、Zookeeper、Seata和RabbitMQ的...

    dubbo+zookeeper入门资源

    【描述】"dubbo+zookeeper入门资源,可直接使用,适合新手练习使用"意味着这个压缩包包含了学习和实践这两个技术的基础材料。通过这个资源,初学者可以了解如何配置和使用Dubbo与Zookeeper来实现服务间的通信和管理...

    dubbo.war+dubbo-monitor+zookeeper.rar

    总的来说,这个组合提供了构建基于Dubbo的分布式系统的基础环境。通过dubbo.war,我们可以管理和监控Dubbo服务;dubbo-monitor-simple-2.5.3-assembly.tar.gz提供了可视化的监控界面;而zookeeper-3.4.12.tar.gz则...

    Dubbo demo register monitor zookeeper

    5. **dubbo-registry-simple-2.0.12-assembly.tar.gz**: 这是 Dubbo 的简单注册中心组件,也是基于 Zookeeper 实现的。注册中心负责管理服务的生命周期,包括服务的注册、发现、下线等操作,使得服务提供者和消费者...

    springBoot+dubbo+zookeeper分布式微服务

    在"springBoot+zookeeper+dubbo"的项目中,SpringBoot作为基础,负责初始化应用环境和配置管理;Dubbo则作为服务治理框架,定义服务接口,实现服务的远程调用;Zookeeper作为服务注册与发现的中间件,维护服务提供者...

    springboot+dubbo+zookeeper实现多个生产者、消费者的负载均衡

    综上所述,本项目通过SpringBoot作为基础框架,利用Dubbo实现服务的提供与消费,借助Zookeeper进行服务注册与发现以及负载均衡,通过Maven进行模块化管理,构建了一个高可用、可扩展的分布式服务系统。

    Dubbo+zookeeper 入门简单实例

    【描述】"Dubbo入门实例Demo"暗示我们将通过一个简单的示例来了解如何在实际项目中使用Dubbo。这个Demo通常会包括创建服务提供者(Provider)和服务消费者(Consumer),并利用Zookeeper作为服务中心进行连接。 **...

    dubbo-zookeeper搭建

    本教程将详细讲解如何搭建一个基于Dubbo和Zookeeper的环境,以实现微服务架构中的服务治理。 首先,我们要理解Dubbo的核心概念。Dubbo是由阿里巴巴开发的一款高性能、轻量级的Java RPC框架,它提供了服务发现、服务...

    zookeeper3.8和Dubbo安装包

    在IT行业中,Zookeeper和Dubbo是两个非常重要的开源框架,尤其在分布式系统和服务治理领域。本篇文章将详细探讨这两个组件及其安装包的使用。 **Zookeeper 3.8** Zookeeper是由Apache软件基金会开发的一个分布式...

    springboot集成dubbo、zookeeper,基于注解形式+源代码+文档说明

    本项目是集成dubbo和zookeeper的一个练习项目,基于注解的配置形式,没有xml文件 ## 环境 #### 操作系统:ubuntu 16.04 LTS #### 开发工具:Idea ## 搭建过程 ### 一、安装zookeeper #### 1、下载zookeeper源码包 &gt;...

    springBoot2.0.1、zookeeper、dubbo、activemq、redis整合分布式架构

    在构建分布式架构的过程中,SpringBoot 2.0.1、Zookeeper、Dubbo、ActiveMQ 和 Redis 是五款至关重要的技术组件。它们各自扮演着不同的角色,共同为系统的高效运行和扩展性提供支持。 首先,SpringBoot 2.0.1 是...

    springboot-dubbo-zookeeper完整示例

    通过以上步骤,我们就构建了一个基于SpringBoot、Dubbo和Zookeeper的完整示例。这个示例展示了如何在SpringBoot环境中实现服务的发布与消费,以及如何利用Zookeeper进行服务的注册与发现,为微服务架构提供了基础的...

    springboot+dubbo+zookeeper构建的分布式调用服务框架

    在这个"springboot+dubbo+zookeeper"的项目中,开发者使用SpringBoot作为基础框架,构建微服务应用。SpringBoot的自动配置特性使得初始化和配置过程更加简洁。然后,Dubbo被引入作为服务治理框架,它允许服务提供者...

    springboot整合dubbo+zookeeper案例

    通过这个案例,你可以学习到如何在SpringBoot环境中构建和管理基于Dubbo的服务,以及如何利用Zookeeper进行服务注册和发现。同时,掌握Tomcat的部署和管理也是一项重要的技能。理解这些技术的原理和实践,将有助于你...

    dubbo+zookeeper+spring+springMVC+mybatis

    【标题】"dubbo+zookeeper+spring+springMVC+mybatis" 描述了一个基于这些技术构建的服务消费方与服务提供方的项目架构。在这个架构中,`Dubbo`是核心的服务框架,它负责服务的注册与发现;`Zookeeper`作为注册中心...

    Spingboot-Dubbo-zookeeper实例-带参数

    Zookeeper是Apache的一个分布式协调服务,它是基于分布式应用程序的配置管理、命名服务、集群管理和同步服务的工具。在Dubbo中,Zookeeper作为服务注册中心,负责存储和查找服务提供者和消费者的信息。 在这个...

    Springboot整合Dubbo/ZooKeeper_demo

    在本示例中,Spring Boot被用作应用程序的基础框架,为Dubbo的集成提供了一个友好的开发环境。 Dubbo是一款高性能、轻量级的Java RPC框架,它提供了服务治理的全套解决方案,包括服务注册、服务发现、负载均衡、...

    dubbo+zookeeper demo

    《Dubbo与Zookeeper整合详解——基于SpringBoot的XML配置》 在分布式系统中,服务治理扮演着至关重要的角色,而Dubbo和Zookeeper作为两个杰出的组件,常常被用来构建高效、稳定的服务架构。本教程将深入探讨如何将...

    SpringBoot整合dubbo的demo,基于yml文件和zookeeper集群

    这个项目为开发者提供了一个实战模板,展示了如何在SpringBoot环境中快速搭建一个基于Dubbo的微服务系统,并利用Zookeeper进行服务治理。通过这种方式,我们可以轻松地构建、扩展和管理分布式应用程序,实现高可用和...

    基于Zookeeper 和 Dubbo框架的电商项目

    《基于Zookeeper和Dubbo框架的电商项目解析》 在当今的互联网时代,电商项目已经成为了商业运营的重要组成部分。为了实现高效、稳定的运行,开发者们通常会采用分布式架构来构建电商平台。本项目就是一个典型的例子...

Global site tag (gtag.js) - Google Analytics