公司项目要用这两个东西,于是打算学习它。

首先我的理解dubbo是什么?zookeeper是什么?为什要这么搞。

项目分层:

  传统的,mvc -->垂直架构(将模块抽取成单独项目,项目互相调用)-->分布式服务架构(类似maven中央仓库类型,zookeeper提供注册器,类似容器,dubbo是一种手段类似,在垂直架构基础上,将服务provider(功能)发布,使用的项目consumer使用dubbo获取接口开发)

对传统工程改造
传统工程:MVC
控制层 Controller
业务逻辑层 service
模型层 dal,entity

一般改造过程:
将业务逻辑层、dao层以下的东西做成dubbo服务,控制层调服务

改造成Dubbo服务调用方式后的工程结构:
edu_common_parent(Maven父配置)
edu_facade_user(用户服务接口)
edu_service_user(用户服务实现)
edu_web_boss(服务消费者)

部署环境规划
edu-web-boss(consumer)
zookeeper-3.4.6(注册中心)
edu-service-user(provider)
MySql5.6(数据库)

第一步:

  mvc->垂直架构 (业务层,web层分离,facade服务层放些公共数据)

第二步:

  web使用facade接口代替service,服务层实现facade接口,使用装饰者模式。

第三步:

  服务接口配置prividexml:

<?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="edu_service_user"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:protocol name="dubbo" port=""/>
<dubbo:service interface="wusc.edu.facade.user.service.PmsUserFacade" ref="pmsUserFacade"/>
</beans>

  使用的消费项目配置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: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="demo-consumer"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:reference id="pmsUserFacade" interface="wusc.edu.facade.user.service.PmsUserFacade"/>
</beans>

然后项目部分完成。启动本地zookeeper,再启动privider项目注册,然后启动consumer项目测试是否能正常消费了。

zoopeeper wndows安装:

把下载的zookeeper的文件解压到指定目录

D:\machine\zookeeper-3.3.>

修改conf下增加一个zoo.cfg

内容如下:

# The number of milliseconds of each tick  心跳间隔 毫秒每次

tickTime=

# The number of ticks that the initial

# synchronization phase can take

initLimit=

# The number of ticks that can pass between

# sending a request and getting anacknowledgement

syncLimit=

# the directory where the snapshot isstored.  //镜像数据位置

dataDir=D:\\data\\zookeeper

#日志位置

dataLogDir=D:\\logs\\zookeeper

# the port at which the clients willconnect  客户端连接的端口

clientPort=

注:如果启动有报错提示cfg文件有错误,可以用zoo_sample.cfg内内容替代也是可以的

进入到bin目录,并且启动zkServer.cmd,脚本启动

遇到的其他问题:

  1、项目报<context:annotation-config />需要jdk1.5或者以上才支持。前面看我的maven里面的json-lib是jdk15版本的,所以怀疑是这里的问题,于是想去下载jdk16的,发现没有。发现jsonlib下载必须指定jdk版本否则下载不来。

  http://blog.csdn.net/rambo_china/article/details/7691409

  2、发现不一定是json-lib的问题,好像是说spring-core使用注解里面对于jdk8的版本的判定原因导致的前面的报错,于是将spring-core里面的JDKVersion进行替换,可惜没有产生什么效果。

  http://bbs.csdn.net/topics/390838736

  发现在jar包里面加东西可以直接打开jar包然后拖动进去就好了

  3、最后前面的问题是将jdk替换成1.6解决的。因为我的侧重点在于dubbo和zookeeper所以忽略掉了它。

  4、出现问题项目启动,web项目访问总是404.查询日志,没发现什么原因,恶心得很。最后找同事帮忙,发现maven依赖报红。万恶的错误不主动提示log,出问题了也不提供log。

  5、启动项目使用的是tomcat容器或者测试类,测试类和dubbo配置文件参照写法:

    http://dubbo.io/

   测试提供方的写法:

 public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"classpath:spring/spring-context.xml"});
context.start();
synchronized (ProvideStartTest.class){
while(true){
ProvideStartTest.class.wait();
}
}
}

  后面不加wait的话服务方得不到。

  6、中途出现的其他问题:

    mapper.xml的namespace没有写

    dubbo-privide-user.xml没有import

    

  dubbo的那几个jar:

  

 <!-- dubbo need Begin-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.2..Final</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.3</version>
</dependency>
<!-- dubbo need end -->

  继续进行项目提取分层:

项目增加工程:

edu-common(公共工程)
edu-common-config(公共配置工程)
edu-common-core(公共core工程)
edu-common-web(公共web工程)

这里注意一个要点:

  假如你的本地项目引用另一个本地项目,另一个本地项目引用其他的本地项目,你需要tomcat手动将这些项目全部引入依赖,不要指望自动引入,除非你安装到了maven,执行了install命令。

  

第一个dubbo+zookeeper项目例子的更多相关文章

  1. 从头开始搭建一个dubbo+zookeeper平台

    本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...

  2. 搭建一个dubbo+zookeeper平台

    本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...

  3. maven dubbo zookeeper 项目搭建(有效)jar包非war测试

    zookeeper安装以及dubbo-admin.war(管理端)配置启动,本章省略,参考其他内容 这里主要说服务提供者和消费者 项目结构: 1)服务端 DemoServer.java package ...

  4. idea+dubbo+zookeeper项目访问html页面的方法

    将js,html文件放入consumer的resource的static和template文件中 1 consumer的pom需要引入模板的jar包   <dependency>      ...

  5. dubbo+zookeeper示例记录

    提示:要直接看搭建例子的可以跳到 三 一.项目架构的发展 传统的mvc架构项目将整个系统功能实现全部写在一个项目中,部署在一个机器上,随着用户量的增涨,单个项目服务器无法承受暴增的用户请求时需要增加服 ...

  6. 第一章 第一个dubbo项目

    为了安全:服务启动的ip全部使用10.10.10.10 版本: dubbo:2.5.5 重要的网址: dubbo的github:https://github.com/alibaba/dubbo dub ...

  7. 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis

     分类: 分布式技术(3)    目录(?)[+]   平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...

  8. Dubbo+zookeeper+SpringMVC搭建最简单的分布式项目

    Dubbo 是什么 一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案 Dubbo 架构流程图 Provider:服务提供方 Consumer:服务消费者 Registry ...

  9. Dubbo+Zookeeper+SpringMVC+Maven整合实现微服务项目

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...

随机推荐

  1. Codeforces Round #426 (Div. 2) C. The Meaningless Game

    C. The Meaningless Game 题意: 两个人刚刚开始游戏的时候的分数, 都是一分, 然后随机一个人的分数扩大k倍,另一个扩大k的平方倍, 问给你一组最后得分,问能不能通过游戏得到这样 ...

  2. 从nodejs到在线商城

    nodejs安装express开发框架 (开发环境:mkdir nodeshop && cd nodeshop > npm init > npm install expre ...

  3. Web API过滤器

    Web API包含在操作方法执行之前或之后添加额外的逻辑的过滤器.过滤器可用于提供横切特性,比如日志记录.异常处理.性能测量.身份验证和授权等等. 过滤器可以应用于Web API控制器或一个或多个操作 ...

  4. Redis的两种连接方式

    1.简单连接 import redis conn = redis.Redis(host=) conn.set('foo', 'Bar') print(conn.get('foo')) a = inpu ...

  5. java 使用正则判断是不是一个数字

    public class Numeric { public static void main(String[] args) { String string = "-1234.15" ...

  6. 一个十分好用的动画工具:Velocity.js

    就像许多开发者确信的那样,在Web上使用CSS实现动画并不是唯一的方式,我们也可以使用JS来实现,并且JS还有一些CSS无法替代的优势. 然而抛开JS而选择CSS来实现动画,将以样式表内容膨胀,丧失对 ...

  7. Shell需注意的语法问题

    1.文件头声明别漏掉#和! #!/bin/bash 2.赋值语句①=号两端不能有空格(判断语句=号两端必须有空格)②使用变量必须使用符号$ var1=valecho $var1 3.if语句写错下面任 ...

  8. ubuntu server 无线网卡的处理

    1) iwconfig 确定一下接口的名称 2) 编辑 /etc/network/interfaces 加入下面的代码 auto wlan0 iface wlan0 inet dhcp wpa-ssi ...

  9. FMUtils.KeyboardHook 轻量级键盘监听器

    Nuget添加引用 Install-Package FMUtils.KeyboardHook 调用示例: var KeyboardHook = new Hook("Global Action ...

  10. 20170517xlVBA添加数据透视表

    Sub AddPovitTable() 'Constance Const DATA_SHEET As String = "Advanced Filter" Const DATA_A ...