为什么要用dubbo?
 
还是让官方来解释吧:
 
一般 nginx+tomcat
         | ----> Controller1--------->service1
请求----->nginx  |
         |----->Controller2--------->service2
请求进了Controller 就只有一条路可以走了
 
使用dubbo后
              | ------->service1
请求------>Controller---->   |
              |---------->service2
简单的说 也就是 一个Contoller 我可以部署多个 service   。
 
一般的mvc项目 包含 Controller、Servicei、ServiceImpl、dao三层
使用doubbo我们可以把项目拆分:
Controller 作为 “消费着” 一个项目
ServiceImpl +dao 作为 “提供者” 一个项目
Servicei “接口” 可以作为一个项目
我们可以部署多个“提供着”。。。。。。。。。。。。。。。。。。。
 
Zookeeper作为Dubbo服务的注册中心,Dubbo原先基于数据库的注册中心,没采用Zookeeper,Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。我们先在linux上安装Zookeeper,我们安装最简单的单点
Windons 安装Zookeeper
 
1,Zookeeper 官网下载windons 版本,(不会下载百度)
单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如
 
打开目录机构为:
 
 
Zookeeper 的启动脚本在 bin 目录下,Windows 下的启动脚本是 zkServer.cmd。
 
在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper 的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。
 
打开以后
 
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181

  

  • tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
  • dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
  • clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
二.dubbo-admin。 dubbo管控台的安装
下载 dubbo-admin-2.5.3.war  
解压之后:
修改 META-INF/dubbo.properties文件
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

address:zookeeper 的ip地址 后面是端口号  ,和zookeeper中配置的端口号一样

修改完成后需要一个tomcat   打开tomcat     \webapps\ROOT 目录 ,此目录放置的是tomcat的首页,删除所有的文件,将解压后修改好的所有的dubbo-admin 里的文件复制到 \webapps\ROOT中,

此时我们已经配置好了。现在可以启动tomcat了 (主意:在启动tomcat之前要先启动zookeeper ,启动zookeeper前面有介绍)。 启动tomcat之后 在浏览器输入 http://localhost:8080  (我的是8083) 进入dubbo管控台的主页

(备注:使用jdk1.8 tomcat启动可能会出错  有关 URI。。。。 的错误。我最后换成1.7了)

用户名和密码就是dubbo.properties 中配置的 默认的是 用户名 :root, 密码:root

输入用户名和密码之后 进入首页

 当然现在还没有 消费者 和 提供者 
 
现在我们来开发   消费者  和 提供者
 

配置 好 zookeeper之后 搭建 maven+springmvc+dubbo环境
 
新建3个maven项目
1,test-dubbo-provider ,java项目,作为提供者,serviceImpl 和dao 层
2,test-public-interface ,java项目,存放公共的接口 ,servicei        是service的接口  (备注:1要依赖2,  3也要依赖2)
3,test-web-consumer,web项目,存放 Controller 和 页面 
 
首先我们来开发 服务的提供者也就是 test-dubbo-provider ,目录结构为
ApplicationContent-dubbo.xml        dubbo服务的配置文件(名字随意)     (待会再介绍)
ApplicationContent.xml       spring的配置文件
这两个配置文件 必须要放到 MATE-INF/spring/下面 (原因后面再说)
 
UserServiceImpl.java  借口的实现类
package com.cl.user.serviceImpl;

import org.springframework.stereotype.Service;

import com.cl.user.servicei.UserService;

@Service("userService")
public class UserServiceImpl implements UserService{ @Override
public String sayHello() { System.out.println("hello world----------------------------"); return "hello world"; }
}
 
有了 实现类 还需要接口  也就是项目test-public-interface 
 
 
这个项目很简单 只需要 接口 就行了
package com.cl.user.servicei;

public interface UserService {
public String sayHello(); }

当然 项目 1 要 依赖 项目 2

所以在1 的 pom.xml 中 有

 <dependency>
<groupId>test-web</groupId>
<artifactId>test-pubilc-interface</artifactId> 加入项目2依赖
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>

那么 1 中的 UserServiceImpl 就可以实现 UserService接口

 当然我们用到 dubbo 就要有dubbo的核心jar包  所以在1 的 pom.xml 中 有

 <dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>

还要有 zookeeper的  所以在1 的 pom.xml 中 有

 <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>

下面介绍一下项目1 中 的 ApplicationContent-dubbo.xml   和  ApplicationContent.xml

 
ApplicationContent.xml  主要是spring的配置 不多说。
 <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
<context:component-scan base-package="com.cl.user.serviceImpl"/>

ApplicationContent-dubbo.xml   dubbo服务的配置

     <!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="hehe_provider" />
<!-- 使用zookeeper注册中心暴露服务地址 端口是zookeeper 中配置的2181-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 具体的实现bean -->
<bean id="userService" class="com.cl.user.serviceImpl.UserServiceImpl" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.cl.user.servicei.UserService" ref="userService" />

主意:有可能你的配置文件中不识别 <dubbo:>  去网上找解决的办法

到这里我们的  “提供者” 即 服务   已经开发完了,那么如何启动服务呢?  在项目1中有个start.java

 package com.test;

 import org.apache.log4j.PropertyConfigurator;

 public class start {
static{
PropertyConfigurator.configure("src/main/resources/log4j.properties");
}
public static void main(String[] args) { com.alibaba.dubbo.container.Main.main(args);
}
}

主意里面有main方法,可以直接运行启动了。别急!!! 之前还有个问题就是为什   ApplicationContent-dubbo.xml   和  ApplicationContent.xml    这两个配置文件 必须要放到 /MATE-INF/spring/下面

因为  com.alibaba.dubbo.container.Main.main(args)  默认就会去加载 /MATE-INF/spring/ 下的配置文件

我们来看一下源码

 看完源码 这下明白为什么了吧!!!!!!!!!!!!!!!!!
 
启动服务后  我们在 dubbo-admin中就能看到我们刚才开发的的  “提供者”
 
 
 
192.168.56.1 是本地局域网 地址
 
这是 “提供者”  此时还没有“消费者”   接下来我们就要开发 “消费者”
 
test-web-consumer   
 
 
UserController.java
@Controller
public class UserController { @Resource(name="userService")
private UserService userService; @RequestMapping("/hello/test/world")
public void sayHello(){
System.out.println(userService.sayHello()+"**************************");
}
}

ApplicationContext-mvc.xml 都是springmvc的配置 如下不解释了

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<context:component-scan base-package="com" /> <!-- 对静态资源文件的访问 restful-->
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/lib/**" location="/lib/" />
<mvc:resources mapping="/plugins/**" location="/plugins/" />
<mvc:resources mapping="/uploadFiles/**" location="/uploadFiles/" />
<mvc:resources mapping="/WEB-INF/html/**" location="/WEB-INF/html/" /> <!-- 配置SpringMVC的视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/html"/>
<property name="suffix" value=".jsp"/>
</bean> <!-- 上传拦截,如最大上传值及最小上传值 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
<property name="defaultEncoding">
<value>utf-8</value>
</property>
</bean>

ApplicationContext-dubbo.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-2.5.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="hehe_consumer" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 组播注册 -->
<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --> <!-- 生成远程服务代理,可以像使用本地bean一样使用userService -->
<dubbo:reference id="userService" interface="com.cl.user.servicei.UserService" />
</beans>

开发完消费者后 ,启动消费者,可以在管控台看到

 完了!!      Dubbo更多详细的东西还去官网的用户手册寻找吧!!  http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/    用户手册说的挺详细的!这里仅供参考!

 
最后 ,在开发的时候为了方便,我们可以使用组播注册!
 <!-- 组播注册 -->
<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
 源码:
 https://github.com/KellyLChen/Dubbo.git
 
 
 
作者原创转载请说明:http://www.cnblogs.com/c9999/p/6019307.html
 

域名购买.com 后缀好域名 

https://mi.aliyun.com/shop/38040

 
 
 
 
 
 
 
 
 

maven+springmvc+dubbo+zookeeper的更多相关文章

  1. 关于Maven+Springmvc+Dubbo+Zookeeper整合

    为什么要用dubbo?   还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/   一般 nginx+tomcat  | - ...

  2. Dubbo与Zookeeper、Spring整合使用 maven+springmvc+dubbo+zookeeper

    为什么要用dubbo?   还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/   一般 nginx+tomcat  | - ...

  3. 170328、Maven+SpringMVC+Dubbo 简单的入门demo配置

    之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程序猿来说,真是一个好消息.最近有时间了,打算做一个demo把dubbo在本地跑起来先. 先copy一段dubbo ...

  4. Maven+SpringMVC+Dubbo 简单的入门demo配置

    转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...

  5. MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建

    : 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程  API    Pom.xml:不用引用任何东西  Provider    Pom.xml:要denpend ...

  6. 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

    平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis ...

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

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

  8. 搭建SpringBoot+dubbo+zookeeper+maven框架(二)

    上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善. 下了demo的网友可能会发现项目在启动时会有警告: ...

  9. 搭建SpringBoot+dubbo+zookeeper+maven框架(一)

    这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...

随机推荐

  1. 对 Serializable和Parcelable理解

    1.首先他们两个接口都是为了实现对象的序列化,使之可以传递,所谓序列化就是将对象信息装换成可以存储的介质的过程. 2.Serializable是jdk所提供的序列化接口,该接口存在于io包下,可想用于 ...

  2. LinqToXml (一) Create Xml file By Dom /Linq

    目前,在xml 应用编程领域比较流行的开发模型是W3C 提供的DOM(文档对象模型),在.net Framework 通过命名空间 System.Xml 对该技术提供了支持.随着Linq to XMl ...

  3. 9.2.1 .net framework下的MVC 控件的封装(上)

    在写.net core下mvc控件的编写之前,我先说一下.net framework下我们MVC控件的做法. MVC下控件的写法,主要有如下三种,最后一种是泛型的写法,mvc提供的控件都是基本控件. ...

  4. Windows编译Nginx源码

    Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...

  5. 腾讯AlloyTeam移动Web裁剪组件AlloyCrop正式开源

    传送门 Github地址:https://github.com/AlloyTeam/AlloyFinger/tree/master/alloy_crop 在线Demo演示: 简介 裁剪图片的应用场景有 ...

  6. 在Visual Studio 2015 中添加SharePoint 2016 开发模板

    前言 SharePoint 2016已经发布很久了,然而,默认安装VS2015以后,却没有SharePoint 2016的开发模板.其实问题很简单,和VS2012开发SharePoint 2013一样 ...

  7. Quartz2D内存管理

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #239619 } p.p2 ...

  8. android常用框架收录

    1.Volley.Retrofit 网络框架2.ormlite.GreenDao数据库框架3.AndroidAnnotations.butterknife.Dagger注解框架4.响应式编程    R ...

  9. vim的高亮查找操作

    使用了VIM这么久,却一直无法牢记一些基本的操作指令.今天查找一个关键字时,想不起来怎么查找“下一个”,于是google之并解决,顺便把有用的都贴过来罢. 查找指令:/xxx 往下查找?xxx 往上  ...

  10. [C#6] 1-using static

    0. 目录 C#6 新增特性目录 1. 老版本的代码 1 using System; 2 3 namespace csharp6 4 { 5 internal class Program 6 { 7 ...