由于工作中天天和Dubbo打交道,天天写对外服务,所以有必要自己动手搭建一个Dubbo+zookeeper项目来更更深层次的认识Dubbo

首先了解一下SOA:

英文名称(Service Oriented Ambiguity)中文的意思是面向服务的架构。好处是可以实现代码的复用,以及对数据访问的控制。实现SOA架构时,常用的有Dubbo,WebService,Dubbox,还有就是HttpClient.

1.Dubbo和Zookeeper的基本概念

Dubbo: 一个分布式、高性能、透明化的RPC服务框架,可以提供服务自动注册、自动发现等高效服务治理方案.下面是它的架构图:



1 Provider :提供者,服务发布方.

2 Consumer:消费者, 调用服务方

3 Container:Dubbo容器.依赖于Spring容器.

4 Registry: 注册中心.当Container启动时把所有可以提供的服务列表上Registry中进行注册. 告诉Consumer提供了什么服务和服务方在哪里.

5 Monitor:监听器

6 虚线都是异步访问,实线都是同步访问

7 蓝色虚线:在启动时完成的功能

8 红色虚线(实线)都是程序运行过程中执行的功能

9 所有的角色都是可以在单独的服务器上.所以必须遵守特定的协议.

1. 运行原理:

0 启动容器,相当于在启动Dubbo的Provider

1 启动后会去注册中心进行注册.注册所有可以提供的服务列表

()2 在Consumer启动后会去Registry中获取服务列表和Provider的地址.进行订阅.

3 当Provider有修改后,注册中心会把消息推送给Consummer

4.在Consumer方使用了代理设计模式.创建一个Provider方类的一个代理对象.通过代理对象获取Provider中真实功能,起到保护Provider真实功能的作用

5.Consumer和Provider每隔1分钟向Monitor发送统计信息,统计信息包含,访问次数,频率等.

Dubbo的注册中心

1. Zookeeper(Zookeeper是一个高性能,开源的分布式协调服务的应用,它提供了许多功能,使分布式应用可以基于它实现更高级的服务。它的出现可以使我们更好的治理分布式服务。下载地址http://zookeeper.apache.org/)

1.1 优点:支持网络集群

1.2 缺点:稳定性受限于Zookeeper

2. Redis(Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。)

2.1 优点:性能高.

2.2 缺点:对服务器环境要求较高

这里使用zookeeper作为注册中心。

好了,有了基本了解之后开始搭建项目!

首先创建一个maven项目,这个项目只提供接口


DubboService提供两个方法

pom文件为:

接下来实现接口,我们在创建一个项目,这个项目就是服务的提供者:

pom文件为:

Srping-context的配置文件为:

服务的具体实现为:

最后我们创建服务的消费者

消费者的spring配置文件相当简单

<dubbo:annotation package="com.yzy.consumer"/>是用来配置dubbo注解的扫描路径

Consumer的实现

注意:这里的@reference是Dubbo的注解,因为我们配置Dubbo的扫描路径所以可以使用这个注解自动装配。

这样。简单的项目构架就搭建起来了,赶紧测试一下吧,老铁!

首先启动zookeeper 客户端

运行zkServer.cmd

然后我们运行 服务的提供者Provider

可以看到已经向注册中心中注册可服务!

接下来运行消费端:

成功调用到接口并返回了数据!(数据库的信息我就不粘了!)

结束!

初识Dubbo+Zookeeprt搭建SOA项目的更多相关文章

  1. Spring boot dubbo+zookeeper 搭建------基于gradle项目的消费端与服务端分离实战

    1. Dubbo简介 Dubbo是Alibaba开源的分布式框架,是RPC模式的一种成熟的框架,优点是可以与Spring无缝集成,应用到我们的后台程序中.具体介绍可以查看Dubbo官网. 2. Why ...

  2. dubbo本地搭建实例

    项目文件下载地址:http://download.csdn.net/detail/aqsunkai/9552711 概述     Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服 ...

  3. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

  4. 02.基于IDEA+Spring+Maven搭建测试项目--详细过程

    一.背景介绍 1.1公司相关技术 Git:是一款免费的开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,方便多人集成开发 Maven:是基于项目对象模型(POM),可以通过一小段描述信息 ...

  5. 01.基于IDEA+Spring+Maven搭建测试项目--综述

    目前公司的测试工作中常见两种接口:HTTP和Dubbo,这两种接口类型均可以使用相关测试工具进行测试,但都会有一定的局限性和不便之处,具体如下: 1.HTTP接口,当需要对于参数进行加密解密时,就得对 ...

  6. eclipse上的git命令使用浅析,搭建Maven项目

    eclipse上的git命令使用浅析 2016-03-31 14:44   关于eclipse上git的安装和建立代码仓库的文章比较多,但作为一个初识git的人更希望了解每个命令的作用. 当项目连接到 ...

  7. Spring boot 集成 Dubbo 快速搭建

    架构: 1.ZooKeeper:服务注册中心 2.api工程:提供对外暴露的服务API 3.provider:服务提供者 4.consumer:服务消费者 示例如下: (一)新建 Maven 项目 a ...

  8. Eclipse搭建Maven项目并上传SVN备份

    本文出自:http://www.cnblogs.com/2186009311CFF/p/7226127.html 背景:近段时间在学着Java,想着用Java做BS的项目.但是项目一遇到问题又要重做, ...

  9. Dubbo监控中心搭建-dubbo-monitor-simple的使用

    场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...

随机推荐

  1. python 的xlwt模块

    一.安装 ♦ python官网下载https://pypi.python.org/pypi/xlwt模块安装. ♦或者在cmd窗口  pip install  xlrd 二.使用 1.导入模块 imp ...

  2. 小强学渲染之Unity Shader噪声应用

    之前玩Tencent的仙剑4手游时,杀死boss会看到boss有“消融”的效果,就是身体上有多个洞洞然后往四周扩散直至尸体完全消失,但效果是没有关闭背面剔除的“穿帮”效果,可能也是考虑性能因素. em ...

  3. python将文本写入剪切板

    import pyperclip pyperclip.copy('The text to be copied to the clipboard.') spam = pyperclip.paste() ...

  4. sql基本的增删查改语句

    1.增---用于向表中插入新的行/数据 语法:insert into 表名(值1,值2,值3...) values(值1,值2,值3,...) 或者 语法:insert [into] <表名&g ...

  5. android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)

    解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...

  6. Requset模块

    Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库 各种请求方式: #!/urs/bin/evn python # -*- cod ...

  7. springboot使用Redis,监听Redis键过期的事件设置与使用代码

    我使用的是Windows下的Redis服务,所以一下Redis设置都是在Windows平台进行. 1.修改Redis配置文件 1.1:Windows下的Redis存在两个配置文件 修改带有servic ...

  8. 一个c程序反汇编过程(zz)

    zz from http://blog.luoyuanhang.com/ 最基本的反汇编方法是gdb xxx: disassemble main/其他函数 #反汇编一个简单的C程序并分析 C 源码: ...

  9. [并查集][NOIP2015]信息传递

    信息传递 题目描述 有 N 个同学( 编号为 1 到 N) 正在玩一个信息传递的游戏. 在游戏里每人都有一个固定的信息传递对象, 其中,编号为i的同学的信息传递对象是编号为ti的同学. 游戏开始时, ...

  10. mr统计每年中每月温度的前三名

    weatherMapper package com.laoxiao.mr.weather; import java.text.ParseException; import java.text.Simp ...