Zookeeper+dubbo 客户端超时设置,怎么设置安全认证

zookeeper与dubbo的使用
按照计划,本月开始学习总结分布式和集群的相关知识点。公司所在项目使用的分布式是基于zookeeper和dubbo,就以它们为例进行总结,zookeeper是对分布式服务进行协调的应用,dubbo是分布式服务框架。学习理论枯燥且难以直观理解,本篇只讲使用,续文再讲原理。
一.zookeeper安装
二.dubbo安装
三.dubbo server端
四.dubbo client端
一.zookeeper安装
1.1 下载Vmware,上面安装一个linux系统,从公司FTP中找到了Centos6.7,就直接拿来使用了。先查看有没有已安装的JDK
yum list installed | grep jdk
发现没有已经安装的JDK,那就进行安装(安装jdk8)
yum -y install java-1.8.0-openjdk*
然后查看是否被安装以及可执行路径
安装tomcat8,下载apache-tomcat-8.5.8.tar.gz &
tar -zxvf -C 解压即可
1.2 下载最新版zookeeper-3.4.9.tar.gz,解压后进入conf目录,将zoo_sample.cfg重命名为zoo.cfg。
查看zoo.cfg的配置,这个时候还没有server的配置;先不做任何修改
修改环境变量,将zookeeper添加进去。
vim /etc/profile在末尾添加:export PATH=&$PATH:/usr/local/soft/zookeeper-3.4.9/bin&重启虚拟机,执行
通过zkServer.sh status查看状态,会发现是standalone状态,说明这个时候还没有进行集群;另外我们可以在/root/zookeeper.out中看到启动的日志
1.3 zookeeper集群
1.3.1 再克隆出两台虚拟机,三台机器的ip这个时候分别为:
192.168.13.118
192.168.13.120
192.168.13.1211.3.2&接着再每个虚拟机上编辑域名映射信息vim /etc/hosts添加下面内容192.168.13.118
192.168.13.120
192.168.13.121
zk3这样三台机器的域名分别为zk1,zk2,zk3;这样我们可以互相ping通
1.3.3启动zookeeper,并且查看状态
为什么会启动失败呢,查找下原来是防火墙的问题,关闭防火墙
chkconfig iptables off
重启三台虚拟机,并且分别运行zookeeper,这个时候再查看状态,两个是follewer,一个leader(保持这三个服务开启,后面会用到)
二.dubbo安装
2.1 dubbo-admin &dubbo控制台安装 &下载dubbo-admin-2.5.4.war
unzip -d 解压后,直接放在tomcat的webapps目录下,并把该目录下其他文件删除:
然后修改dubbo-admin-2.5.4/WEB-INF下的dubbo.properties配置,如zk1的地址是192.168.13.118
dubbo.registry.address=zookeeper://192.168.13.118:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest接着就可以在浏览器里访问控制台了
2.2&dubbo-monitor &dubbo监控中心安装 &下载dubbo-monitor-simple-2.5.4.tar.gz
tar -zxvf -C解压后,编辑dubbo-monitor-simple/dubbo-monitor-simple-2.5.4-SNAPSHOT/conf下的dubbo.properties文件:
dubbo-monitor采用jetty启动,这里的jetty的端口注意不要和上面的dubbo-admin的tomcat端口冲突,dubbo-admin采用的是8080,这里jetty就使用8180好了。
bin/start.sh启动后,在浏览器里访问
现在我们已经安装好了监控中心和控制台,那么它们有什么区别,看起来功能很相似?
区别是控制台可以提供服务治理的功能, 即可以修改服务的状态。
三.dubbo server端
概述:在两个应用之间进行接口的调用时(称之为RPC),我们可以使用传统的httpClient;其实还可以使用dubbo,它的工作机制是服务提供者(被调用者)把服务注册到dubbo,然后调用者从dubbo中获取服务,这样就完成了一次调用。 现在就解决了什么是dubbo的问题,即以区分httpClient的方式提供和调用服务。那为什么要使用dubbo?因为dubbo在应用之间提供和使用服务的时候,没有了地址的概念,而是换成了服务名,这样一方面省却了变化地址的问题,另一个方面也省却了增加或者减少地址的麻烦,因为对于dubbo来说,只需要增或减相关的服务即可。
下面就来介绍dubbo的使用
3.1 如何使用dubbo?
要想实现dubboServer和dubboClient之间完成调用,首先服务端和客户端需要一个接口来公用。可以有两种方式
1) 接口写在一个应用中,服务端和客户端都对这个应用进行引用
2) 更多的时候,两个应用是不太可能引用同一个应用。这个时候应该把接口以jar包的形式给Server和Client共同使用
然后,Server对jar包中的接口进行实现,并且向dubbo进行注册,而Client端调用jar包中的接口中的方法名,dubbo会去自动的寻找这个由Server端注册的方法的实现,本文就以jar包为例。
3.2 新建一个接口,然后打成jar包
package com.
public interface dubboService {
public String getString(String test);
3.3 然后建一个项目,用来做Server端;这个项目就采用之前搭建的一个项目&
这个项目采用的是JDK8,另外每次maven update或者install的时候,BuildPath都会采用Execution environment,我们需要修改其中的jdk版本:
另外还有一个问题是,如果maven install出现javax-servlet不存在(说明jdk配置还是稍微有点问题,因为javax-servlet在jdk中自带),那干脆就直接在pom中新增javax-servlet的依赖吧。
3.4 详细步骤
在pom中添加dubbo和zookeeper相关依赖:
&!-- 配置dubbo和zookeeper --&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&dubbo&/artifactId&
&version&2.5.3&/version&
&exclusions&
&!-- 屏蔽dubbo自带的spring --&
&exclusion&
&groupId&org.springframework&/groupId&
&artifactId&spring&/artifactId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&org.apache.zookeeper&/groupId&
&artifactId&zookeeper&/artifactId&
&version&3.4.9&/version&
&/dependency&
&!-- 看看有没有其他的zkclient --&
&dependency&
&groupId&com.github.sgroschupf&/groupId&
&artifactId&zkclient&/artifactId&
&version&0.1&/version&
&/dependency&
由于dubbo内置的spring版本是2.5,低于我们使用的最新版4.3 &所有把内置的spring排除注意添加完成后,maven update,然后再maven clean,maven install
导入jar包,然后写实现类:
package com.mycompany.dubboS
import org.springframework.stereotype.S
import com.mycompany.dubboS
@Service(&dubboService&)
public class dubboServerImpl implements dubboService{
public String getString(String arg0) {
return arg0+&Dubbo&;
新建spring-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=&/schema/dubbo&
xsi:schemaLocation=&http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
/schema/dubbo
/schema/dubbo/dubbo.xsd&&
&!-- 指定注册中心 --&
&dubbo:registry address=&zookeeper://192.168.13.118:2181& check=&false&/&
&!-- 配置当前应用信息 --&
&dubbo:application
name=&myWebAppServer&/&
&!-- 服务提供方指定的端口 --&
&dubbo:protocol name=&dubbo& port=&20880& /&
&!-- 提供服务者配置 --&
&dubbo:service
cluster=&failsafe& ref=&dubboService& interface=&com.mycompany.dubboService& timeout=&6000&
web.xml中配置:
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:spring.xml,
classpath:springDubbo.xml,
classpath:springQuartz.xml
&/param-value&
&/context-param&接着project-clean下,用tomcat8启动即可。由于这个时候那三台虚拟机还开着,所以我们就可以在监控中心和控制台中看到服务提供者:
注:如果在启动的时候报刚才的jar包找不到对应的类,那就设置下编译路径:
还有运行时路径:
这样设置好了之后,除非在pom中新增依赖,否则就不要随便maven install了,不然路径的设置会被破坏,还要重新设置。
四.dubboClient端
配置和Server端基本相同,下面是几个不同:
4.1 新建一个完全一样的项目,更改项目名,导入jar包,新建一个消费服务的类:
package com.mycompany.dubboC
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
import com.mycompany.dubboS
@Service(&dubboClientTest&)
public class dubboClientTest{
@Autowired
private dubboService dubboS
public void test(){
System.out.println(&dubboClientTest.test():&+dubboService.getString(&Client&));
}4.2 spring-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=&/schema/dubbo&
xsi:schemaLocation=&http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
/schema/dubbo
/schema/dubbo/dubbo.xsd&&
&!-- 指定注册中心 --&
&dubbo:registry address=&zookeeper://192.168.13.118:2181& check=&false&/&
&!-- 配置当前应用信息 --&
&dubbo:application
name=&myWebAppClient&/&
&!-- 服务提供方指定的端口 --&
&dubbo:protocol name=&dubbo& port=&20880& /&
&dubbo:consumer check=&false& /&
&!-- 提供服务者配置 --&
&dubbo:reference
cluster=&failsafe&
id=&dubboService& interface=&com.mycompany.dubboService& timeout=&6000& /&
4.3 准备使用定时器来执行Client端,在spring-Quartz.xml中增加配置:
4.4 配置一个新的tomcat8,修改端口号和上面那个tomcat8不同即可:
然后启动,我们可以在Client端的Console看到每隔一分钟就会打印信息,并且控制台出现了消费者:
先看一下服务类和消费类在项目中位置:
到此基本上就已经结束了,只是明白了dubbo最基本的使用,即应用之间的rpc调用,服务提供者和使用者;关于原理等其他内容,后面再进行学习。
本文已收录于以下专栏:
相关文章推荐
dubbo-admin学习总结:
1.dubbo能从zookeeper注册中心获得服务信息,是通过registryService,并且可以通过registryService对dubbo进行操作
Dubbo建议使用Zookeeper作为服务的注册中心。
1.   Zookeeper的作用:
        zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必...
基于zookeeper的dubbo
入门教程 
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可...
背景使用Dubbo的时候发现当Zookeeper、Dubbo-admin、生产者和消费者都在
内网中的时候,生产者的生产和消费是没有问题的,但是当它Zookeeper、生产者放到远程服务器上,然后消...
我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,就是分布...
上个项目中用到了zookeeper+duboo简单说下我们现在的系统架构
http访问到服务器要经过的内容:阿里的一些安全机制就不说了【用到了阿里服务器】
直接说Nginx —Tomcat –db...
最近刚好有点时间,特意来整合一下项目,以后会陆续把前端框架和一些组件也给整合进去,今天就先来整合一下SSM+mysql+dubbo+zookeeper来做一个用户列表功能。关于理论性的知识,大家可以自...
1. 先了解一下你是否应该用MySQL集群。减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享...
转:http://blog.csdn.net/lin_fs/article/details/7395307
zookeeper是需要安装的,dubbo直接使用jar就可以了
http://zo...
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)评论-2661&
本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用。
& 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程。
& 其次,当服务越来越多之后,我们需要做哪些服务治理?
& 最后,是dubbo的架构图
&&&&&& & 注册中心的选择
& dubbo支持多种类型的注册中心:
& Multicast注册中心
& Zookeeper注册中心
& Redis注册中心
& Simple注册中心
& 这里我们选择zookeeper,其实类型的优点缺点可详细查看文档。
& 1:zookeeper的安装,还是采用docker这一招鲜的run命令来安装zookeeper
docker run -dit --name zookeeper
--hostname
zookeeper-host
-v /data:/data -p 2181:2181 jplock/zookeeper:latest
& 2:安装zkui,可以参考来安装,它提供了一个管理界面,可以针对zookeepr的节点值进行CRUD操作,同时也提供了安全认证,按照如下几步就可以完成安装。
& mvn clean install,执行前需要安装java环境,maven环境,执行成功后会生成一个jar文件。
& 将config.cfg复制到上一步生成的jar文件所在目录,然后修改配置文件中的zookeeper地址。
& 执行 jar. ( nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar & ),注意后面的那个&,是指不退出的意思。
& 测试,http://localhost:9090,如能看到如下页面则代表zookeeper安装运行正常。
& 下面是创建dubbo服务以及使用dubbo服务的过程:&& dubbo提供者,创建一个java工程,注意以下几点:
&包依赖,引入如下三个主要的包就可以了,主要是spring,dubbo以及zkclient&&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&version&${spring-framework.version}&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&dubbo&/artifactId&
&version&2.4.10&/version&
&exclusions&
&exclusion&
&artifactId&spring&/artifactId&
&groupId&org.springframework&/groupId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&com.101tec&/groupId&
&artifactId&zkclient&/artifactId&
&version&0.3&/version&
&/dependency&
&定义接口,这里为了演示,简单定义了一个返回产品名称的接口。
public interface IProduct {
String getProductName();
&接口实现&
public class ProductService implements IProduct{
public String getProductName() {
return "jim";
&服务启动函数
加载配置文件
调用context.start()
执行一个不退出程序的操作,这里有很多种做法。
public class App {
private final static Logger logger = LoggerFactory.getLogger(App.class);
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"classpath*:applicationContext.xml");
context.start();
("dubbo service begin to start");
System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
&服务配置文件,这里需要指出的是:
dubbo:service的定义配合了dubbo:annotation,ref="productService",是指定的一个id,实际的实现类通过注解扫描来完成的,并没有在配置文件中指定实现类,后面的消费者配置文件中会有所体现。
dubbo:application中,可以指定logger的实现接口。
dubbo:protocol中,可以指定是否启动访问日志,这个对有时排查线上问题非常有帮助。
&?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="/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
/schema/dubbo
/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd"
&context:property-placeholder location="classpath*:config.properties"/&
&dubbo:application name="jim" logger="slf4j" /&
&dubbo:registry protocol="zookeeper" address="192.168.21.128:2181" /&
&dubbo:protocol accesslog="true" name="dubbo" port="20880" /&
&dubbo:annotation package="jim" /&
&dubbo:service interface="jim.IProduct" ref="productService"/&
&context:component-scan base-package="jim" /&
&import resource="redis-context.xml"/&
&&&&&&&& && dubbo消费者
&& 消费者配置文件,它的配置相对提供者要简单很多:
指定消费者的名称,这个可以随意,不需要与提供者做任务相关联的匹配。
指定协定类型,zookeeper地址。
指定引用的服务接口,注意这里的id就与服务提供者定义的ref值相同。
&?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="/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
/schema/dubbo
/schema/dubbo/dubbo.xsd"&
&dubbo:application name="consumer-of-jim-app"
&dubbo:registry protocol="zookeeper" address="192.168.21.128:2181"/&
&dubbo:reference interface="jim.IProduct" id="productService" /&
&& 接口注解定义以及接口调用&&&&
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Autowired
private IProduct productS
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
("Welcome home! The client locale is {}.", locale);
String productName=this.productService.getProductName();
model.addAttribute("name", productName);
return "home";
& dubbo admin
& 有一个UI工具可以针对dubbo服务进行管理,可惜我没有在官方文档提供的链接中下载成功,随后从其它地方虽然下载完成了,但在安装部署方面暂时遇到了一定的问题,需要手续研究解决。
&& 正常应该可以看到如下界面:
管理提供者
管理消费者
&&&&&& 服务治理
&&&&&& &&& 经过上面的步骤后,就可以启动服务端以及客户端来验证了。上面只是简单的搭建了dubbo环境以及实现了一个hello world的服务接口,要想使用好dubbo还有好多提供的最佳实践,比如服务治理:
&本文引用:
http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E5%A4%9A%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83
http://blog.csdn.net/yinwenjie/article/details/
/DeemOpen/zkui
阅读(...) 评论()现在很流行的Dubbo很多朋友都听说过吧,最近我也在看这方面的东西,分享先我的心得笔记。
先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的dubbo注册。
框架:springmvc+spring+zookeeper+dubbo
项目分三层,model存放数据,view页面展示、controller下面具体逻辑实现。通过dubbo消费方和供应方注册,供应方给消费方暴露接口,供消费方调用。&工程部署需要配置文件有:&applicationContext-dubbo.xml&{--&&-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --&&&-- 使用zookeeper注册中心暴露服务地址 --&&&-- 生成远程服务代理,可以像使用本地bean一样使用demoService --&&&dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" /&&--}&dubbo.properties&{--&&--基于ZooKeeper的Dubbo注册中心直接部署tomcat,修改WEB-INF下文件--&&dubbo.registry.address=zookeeper://127.0.0.1:2181&dubbo.admin.root.password=root&dubbo.admin.guest.password=guest&--}&zoo_sample.cfg&{--&zookeeper/conf/下,修改zoo_sample.cfg为zoo.cfg,启动bin/下zkServer.cmd&--}
因为引入dubbo,摒弃了原有Web Service项目的wdls暴露,由于项目依赖关系严重,项目使用maven构建,通过Maven pom.xml三维坐标引入jar包,调用dubbo暴露接口开发。
性能测试工具:LoadRunner、jmeter接口测试工具:LoadRunner、jmeter、soapUI、Spotlight安全测试工具:NStalker-Web、AppScan、TamperIESetup自动化工具 :BadboyInstaller、QTP
& &* @author wonter &
& &* &b&描述:&/b& 一天学一个模式 更新中,请关注我的博客!&br&
& &* &b&博客:&/b&&/javame&&br&
& &* &b&邮件:&/b&
阅读(...) 评论()

我要回帖

更多关于 dubbo 客户端超时设置 的文章

 

随机推荐