1.1 下载 http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ ,这里选择版本3.4.8
1.2 解压到一个目录下(D:\zookeeper-3.3.6)打开conf文件夹,拷贝zoo_sample.cfg文件,并重命名为zoo.cfg(必须是这个名字)。打开zoo.cfg修改配置如下:
tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间
initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值
clientPort:服务的监听端口:后面的Dubbo配置管理与此端口保持一致。
dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)
dataLogDir:用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争
syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。
集群配置使用
server.A=B:C:D:
A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址
C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
D是在leader挂掉时专门用来进行选举leader所用。1.3 找到bin目录下的zkServer.cmd,启动zookeeper.
2.1 下载dubbo-master https://github.com/alibaba/dubbo
2.2 编译打包:进入admin-master/dubbo-admin/目录,调出命令行,运行maven命令:mvn clean install -Dmaven.test.skip=true,成功后在target目录下找到war包。
2.3 将war包放入tomcat(注意端口冲突)的webapps目录下,运行startup.bat解压war包后,在解压后的dubbo-admin的WEB-INF目录下打开dubbo.properties配置文件
这里本机使用2181端口,不需要修改。
3.3 启动tomcat,输入tomcat的访问网址http://localhost:8888/dubbo-admin-2.8.4/,root用户登录,密码root
3.1 创建Maven Project
3.2 在DemoService中新建 DemoService接口
3.3 将DemoService安装到本地Maven库,项目右键 -> Run As-> Maven install ,这里需注意Jdk的版本,项目右键 -> Build Path -> Configure Build Path -> Libralies .jdk版本要保持一致。
4.1 proverder需要引入DemoService依赖,需要引入Dubbo,ZooKeeper,log4,spring依赖。Dubbo自带spring依赖,版本旧需手动移除。下面给出一个pom实例
com.test
DemoService
0.0.1-SNAPSHOT
org.springframework
spring-core
4.3.9.RELEASE
org.springframework
spring-context
4.3.9.RELEASE
org.springframework
spring-beans
4.3.9.RELEASE
org.springframework
spring-web
4.3.9.RELEASE
org.springframework
spring-webmvc
4.3.9.RELEASE
com.alibaba
dubbo
2.5.3
org.springframework
spring
org.jboss.netty
netty
org.apache.zookeeper
zookeeper
3.4.8
log4j
log4j
1.2.16
org.slf4j
slf4j-api
1.7.5
com.github.sgroschupf
zkclient
0.1 0
provider01
4.2 provider提供者需要实现公共接口以向消费者提供服务。Provider01与provider02实现时可以在内容上有所区别:
4.3 增加项目所需配置文件,在classpath目录下新建3个配置文件:applicationContext.xml(Spring配置文件),log4.properties,provider.xml(dubbo提供者配置文件,重要)
4.3.1 ApplicationContext.xml(provider01与provider02一样)
4.3.2
log4.properties(provider01与provider02一样)
log4j.appender.mylog = org.apache.log4j.ConsoleAppender
log4j.appender.mylog.target = System.out
log4j.appender.mylog.layout= org.apache.log4j.PatternLayout
log4j.appender.mylog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.my2log = org.apache.log4j.RollingFileAppender
log4j.appender.my2log.File = D://Logger//mylog.log
log4j.appender.my2log.MaxFileSize = 50KB
log4j.appender.my2log.MaxBackupIndex = 1
log4j.appender.my2log.layout= org.apache.log4j.PatternLayout
log4j.appender.my2log.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.rootLogger = info,mylog,my2log
4.3.3
Provider.xml文件,dubbo的配置文件,需要注意暴露服务的端口,在同一台机器上暴露不同的端口。
Provider01:
Provider02:
contextConfigLocation
classpath*:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
log4jConfigLocation
/WEB-INF/classes/log4j.properties
log4jRefreshInterval
60000
org.springframework.web.util.Log4jConfigListener
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encodingFilter
/*
default
*.jpg
default
*.png
default
*.js
default
*.css
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath*:springmvc-servlet.xml
1
这里需要注意的是:2个provider的应用名,服务名保持一样,因为模拟集群负载均衡,模拟一个服务。2个provider的端口需不一样,因为是同一台机子模拟2个服务,如果是多台就无所谓了。
4.4 将provider01和provider02分别放入到两个tomcat里。启动!查看dubbo-admin发现:有一个服务,DemoServcie,一个应用Provider,两个提供者。
5.1 consumer01与Provider一样,需要依赖DemoService,dubbo,spring,log4j,zookeeper依赖。下面给出一个pom实例:
4.3.9.RELEASE
com.test
DemoService
0.0.1-SNAPSHOT
junit
junit
3.8.1
test
com.alibaba
dubbo
2.5.3
spring
org.springframework
org.jboss.netty
netty
org.springframework
spring-core
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context-support
4.3.11.RELEASE
commons-logging
commons-logging
1.2
javax.servlet
javax.servlet-api
3.0.1
provided
javax.servlet
jstl
1.1.2
provided
javax.servlet.jsp
javax.servlet.jsp-api
2.3.1
provided
jstl
jstl
1.2
taglibs
standard
1.1.2
log4j
log4j
1.2.16
org.slf4j
slf4j-api
1.7.5
org.apache.zookeeper
zookeeper
3.4.8
com.github.sgroschupf
zkclient
0.1
consumer01
5.2 添加配置文件,在classpath目录下新建4个配置文件:applicationContext.xml(Spring配置文件),springmvc-servlet.xml,log4.properties,consumer.xml(dubbo提供者配置文件,重要)
Application.xml:
springmvc-servlet.xml
log4j.xml
log4j.appender.mylog = org.apache.log4j.ConsoleAppender
log4j.appender.mylog.target = System.out
log4j.appender.mylog.layout= org.apache.log4j.PatternLayout
log4j.appender.mylog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.my2log = org.apache.log4j.RollingFileAppender
log4j.appender.my2log.File = D://Logger//mylog.log
log4j.appender.my2log.MaxFileSize = 50KB
log4j.appender.my2log.MaxBackupIndex = 1
log4j.appender.my2log.layout= org.apache.log4j.PatternLayout
log4j.appender.my2log.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.rootLogger = info,mylog,my2log
Consumer.xml
contextConfigLocation
classpath*:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
log4jConfigLocation
classpath:log4j.properties
log4jRefreshInterval
3000
org.springframework.web.util.Log4jConfigListener
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/
default
*.jpg
default
*.png
default
*.js
default
*.css
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath*:springmvc-servlet.xml
1
springmvc
/
5.3 新建一个TestController类
package com.test.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.test.service.DemoService;
@Controller
public class TestController {
@Autowired
private DemoService demoService;
@RequestMapping("/test/demo")
public String testDemo() {
return "consumer01 : "+demoService.sayHello();
}
}
5.4 将cosumer01放入一个tomcat中,启动后,查看dubbo-admin
访问消费者服务后应会出现两种情况:
consumer01 : this is Provider01
consumer01 : this is Provider02
最近项目中用到dubbo框架,在此记录一下。参照博客:点击打开链接