Spring + Dubbo + zookeeper (linux) 框架搭建

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

dubbo简介

085357_cUPP_577739.png

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。


调用关系说明:

0. 服务容器负责启动,加载,运行服务提供者。

1. 服务提供者在启动时,向注册中心注册自己提供的服务。

2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。



四个步骤

1 搭建zookeeper消息中心

2 搭建dubbo服务端代码

3 写dubbo客户端代码

4 dubbo提供的dubbo-admin-2.5.4.war 管理控制台

一: 搭建zookeeper 消息中心


1 下载zookeeper安装文件

    zookeeper-3.3.6.tar.gz

2  执行命令 tar zxvf zookeeper-3.4.6.tar.gz 解压,
3 到 zookeeper-3.3.6/conf 目录下

把zoo_sample.cfg 复制一份为zoo.cfg,作为默认配置文件


173059_DGrw_577739.png


4 配置说明

tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir
:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort
:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

我的配置: 端口2181是默认配置

173220_hh3O_577739.png


5 在zookper-3.3.6/bin目录下执行

./zkServer.sh start 启动zookeeper

173359_jpPF_577739.png


6 验证zookeeper是否启动

使用netstat -lpn | grep 2181 

如果有端口号, 说明已经启动

173609_Sw1X_577739.png

173548_Nr3J_577739.png

ps: 因为我linux 是装在虚拟机里面, zookeer在虚拟机里,  DubboServer , DubboClient , DubboAdmin 都是在windows上, 注意要开放linux的2181端口


二 DubboServer 工程


DubboServer段是一个web工程,服务提供者, 我这里是dubbo和spring结合搭建.

spring的搭建过程,可参见  springmvc + mybatis配置

我这里仅是搭建spring和dubbo的例子,使用的最少的配置


1 测试代码编写


090106_s4So_577739.png


2 dubbo的xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="wt-dubbo-server"  />
<!-- 消息中心地址 -->
<dubbo:registry address="zookeeper://192.168.20.129:2181" check="false"/>
<dubbo:protocol name="dubbo" port="20880" serialization="hessian2" />
<!-- 声明接口 -->
<dubbo:service interface="com.DubboServer" ref="dubboServer" />
</beans>

3 导出接口层的jar

把server层的代码导出jar, 后面放到dubboClient中!!

090349_qrPB_577739.png


然后启动项目


三 DubboClient工程

dubboClient可以是web工程也可以是普通的javaproject.

我也是用的spring集成,但是使用的是junit进行测试, 


1 dubboclient端代码

090653_iHHe_577739.png


2 dubbo的xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="dys-client"  />
<!-- 消息中心地址 -->
<dubbo:registry address="zookeeper://192.168.20.129:2181" check="false"/>
<!-- 声明接口 -->
<dubbo:reference id="dubboServer" interface="com.DubboServer" />
</beans>


3 测试运行client端代码(zookeeper 和 dubboServer端已经启动)
091317_BLPm_577739.png

运行成功!


四 dubbo-admin-2.5.4.war 管理控制台

把这个war包放到tomcat的webapps目录下 

1 修改tomcat的端口号不要和其他服务冲突.

2 修改 WEB-INF 下的dubbo.properties文件

dubbo.registry.address=zookeeper://192.168.20.129:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest


3 启动tomcat,访问.

点击 服务治理--提供者 可看到如下,    还有一些其他的信息,再查阅吧,暂时我也不是很清楚

091917_aipW_577739.png


转载于:https://my.oschina.net/wangt10/blog/522799

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 函数编程四个数相加,C语言第四章课后编程题

1.编写程序&#xff0c;从键盘上输入4个整数&#xff0c;输出最小值。此题较为简单&#xff0c;只需定义一个桥梁最小值min就可以来着次比较他们的大小。2.编写一个程序&#xff0c;从键盘输入一个四位整数n&#xff0c;输出它的各位数字之和。例如n1308&#xff0c;则输出12&a…

[raywenderlich教程]

非常详细的图文入门教程http://www.raywenderlich.com/81879/storyboards-tutorial-swift-part-1 因为太长了 所以只放一些我觉得很有用的内容的翻译 The single View Controller you defined was set as the Initial View Controller – but how did the app load it? Take a…

iOS开发-XMPP

介绍一下XMPP?有什么优缺点吗?
XMPP:基于XML的点对点的即时通讯协议.XMPP协议是公开的,XMPP具有良好的拓展性,安全性.缺点是丢包率比较高.

c语言scanf附加格式*,C语言的scanf语句格式

满意答案pihiac2014.09.05采纳率&#xff1a;45% 等级&#xff1a;7已帮助&#xff1a;460人scanf语句的一般格式如下&#xff1a;scanf("格式字符串", 地址&#xff0c;…);scanf语句用"格式字符串"控制键盘读入的方式。"格式字符串"中一般只…

分析器错误

--提示 行 1: <% Application Codebehind"Global.asax.cs" Inherits"SDX.HR.RMS.MvcApplication" Language"C#" %> 说明&#xff1a;添加了的东西还原之后问题就没有了 --提示其他信息: 在向服务器发送请求时发生传输级错误。 (provider: …

YUV格式像素

转自&#xff1a;http://blog.csdn.net/grow_mature/article/details/9004548 一幅彩色图像的基本要素是什么&#xff1f; 说白了&#xff0c;一幅图像包括的基本东西就是二进制数据&#xff0c;其容量大小实质即为二进制数据的多少。一幅1920x1080像素的YUV422的图像&#xff…

mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf

C语言调用mysql快速教程(精华篇).pdf&#xff0c;使用 语言操作 之前&#xff0c;先在 里头创建一个数据库&#xff0c;一个表&#xff0c;在表里头添加1 c mysql mysql数据如下&#xff1a;创建数据库&#xff0c;库名为 cusemysql:mysql create database cusemysql;创建表 表…

perl学习之:编译、执行与内存关系(转)

1、所谓在编译期间分配空间指的是静态分配空间&#xff08;相对于用new动态申请空间&#xff09;&#xff0c;如全局变量或静态变量&#xff08;包括一些复杂类型的 常量&#xff09;&#xff0c;它们所需要的空间大小可以明确计算出来&#xff0c;并且不会再改变&#xff0c;因…

生命游戏c语言代码easy,c++生命游戏源码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼glViewport( 0, 0, width, height );glMatrixMode( GL_PROJECTION );glLoadIdentity( );}//程序入口int main(int argc, char *argv[]){//随机生成细胞的状态MapRand();std::cout<//SDL初始化const SDL_VideoInfo* info NULL;i…

从零开始学android开发-布局中 layout_gravity、gravity、orientation、layout_weight

线性布局中&#xff0c;有 4 个及其重要的参数&#xff0c;直接决定元素的布局和位置&#xff0c;这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity &#xff08;是本元素所有子元素的重力方向&#xff09; android:orientation &…

Thread详解

具体可参考&#xff1a;Java并发编程&#xff1a;Thread类的使用&#xff0c;这里对线程状态的转换及主要函数做一下补充。 一. 线程状态转换图 注意&#xff1a; 调用obj.wait()的线程需要先获取obj的monitor&#xff0c;wait()会释放obj的monitor并进入等待态。所以wait()/no…

mac怎么用终端编写c语言视频,【新手提问】有知道用mac终端编c语言的网络编程的人吗?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#include#include#define ECHOMAX 255int main(int argc,char *argv[]){ int sock;struct sockaddr_in echoServAddr;struct sockaddr_in echoClntAddr;unsigned short echoServPort;unsigned int…

Net框架下-ORM框架LLBLGen的简介(转载)

Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址&#xff1a;http://www.llblgen.com/转载于:https://www.cnblogs.com/wangjunwei/p/4290896.html

加强团队凝聚力建设方面采取的方法

加强团队凝聚力建设方面采取的方法主要有&#xff1a;1. 项目经理定期和团队成员进行单独沟通&#xff0c;了解成员对工作和个人职业发展的一些真实想法&#xff0c;使团队发展和个人发展两者相互促进&#xff0c;让团队成员感受到在做研发过程中个人技能的提高和个人成就感的增…

c语言实现线性表的算法,数据结构算法代码实现——线性表的定义(一)

线性表的定义线性表&#xff1a;是最常用且最简单的一种数据结构&#xff0c;它是一种线性数据结构&#xff0c;是由类型相同的n个(n≥0)数据元素组成的有序序列。线性表的特点&#xff1a;有且只有一个被称作“第一个”的数据元素&#xff0c;有且只有一个被称为“最后一个”的…

uva 10716 Evil Straw Warts Live

没有看明白这标题配图和题目有什么关系&#xff0c;好像这是一张专辑的名字。先要考虑有多少个字母总数是奇数&#xff0c;超过1个就直接输出impossible。每一次考虑两端点情况&#xff0c;如果字母不同&#xff0c;再进行搜索&#xff0c;换那个字母交换次数比较少&#xff0c…

嵌入式 boa服务器移植

随着Internet技术的兴起&#xff0c;在嵌入式设备的管理与交互中&#xff0c;基于Web方式的应用成为目前的主流&#xff0c;这种程序结构也就是大家非常熟悉的B/S结构&#xff0c;即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器&#xff0c;能够生成动态页面&#xff0…

linux 欢迎语,一日一技 | 如何让你的终端欢迎语好看又有趣

原标题&#xff1a;一日一技 | 如何让你的终端欢迎语好看又有趣Matrix 精选Matrix 是少数派的写作社区&#xff0c;我们主张分享真实的产品体验&#xff0c;有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章&#xff0c;展示来自用户的最真实的体验和观点。文章代…

springmvc 1

springmvc的model是实体类&#xff0c;可以理解为把数据库里的一张表变成了一个对象 /*** */ package com.test.model;/*** ClassName: User.java* Description: TODO(用一句话描述该文件做什么) * * author JerryZhou* Date 2014-7-15 上午10:24:04 *…

android java adb命令大全,Android adb命令备份恢复手机信息

假设你已经在Windows下安装了Android SDK&#xff0c;并且更新到最新版步骤&#xff1a;1.通过USB连接你的设备&#xff0c;打开命令行2.一般地&#xff0c;输入”adb devices“检测设备是否连接正常有个命令“ adb backup”(简化写法)可以使你备份整个系统。这个命令的参数如下…