初识Dubbo+Zookeeprt搭建SOA项目

由于工作中天天和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

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

接下来运行消费端:

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

结束!

原文地址:https://www.cnblogs.com/yzy18/p/9537654.html

时间: 2024-11-12 18:38:46

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

dubbo本地搭建实例

项目文件下载地址:http://download.csdn.net/detail/aqsunkai/9552711 概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及"请求-响应"模式的信息交换方式. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持. 自

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

最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建,感觉就是下图: 好,下面就本人搭建项目的过程简单说说如何快速搭建一个spring MVC项目,相信我,spring-boot这趟车,你上了根本就停不下来了! 下面是这篇博客的主要内容: 1.spring boot 介绍 2.spring boot 项目快速搭建 3.spring-boot中单元测试

基于Spring+IDEA+Maven搭建测试项目

一.背景介绍 1.1公司相关技术 Git:是一款免费的开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,方便多人集成开发 Maven:是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具,同时还提供了高级项目管理工具 Jira:是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域 Dubbo:是阿里巴巴公司一个开源的分布式服务框架,致力于提供高性能和

使用 Django1.11搭建blog项目

使用Django搭建blog项目 简单设置: http://blog.csdn.net/wei_/article/details/70766035 模板渲染: http://blog.csdn.net/wei_/article/details/70766035 问题 No module named 'mysite.blog' INSTALLEDAPPS中配置:在INSTALLEDAPPS加blog来代替'mysite.blog' Unknown command: 'syncdb' 在Django

在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies

在<vue-cli搭建的项目中增加后台mock接口>中实现了后台mock,但是前端post的t数据都要在mock的后台接口中使用req的接收数据事件获取http协议body中的数据. req.on('data', function(chunk){ //接收字节数据 }); req.end('data', function(){ //转换||处理 }); req.error('error', function(e){ //处理错误 }); 如果前端需要使用cookie,后端要读取,那么在后台mo

JBOSS安装与配置搭建本地项目环境(方便前端开发调式)

JBOSS安装与配置搭建本地项目环境  什么是JBOSS? JBOSS是EJB的服务器,就像Tomcat是JSP服务器一样,就是服务器的一种. 环境搭建如下: 一:首先安装JDK,配置环境变量(PATH,CLASSPATH,JAVA_HOME).       1. 网上下载JDK安装,我的下载如下: 点击安装,下一步,然后出现如下界面,更改文件目录如下: 我的jdk存放在D盘java文件下,点击[下一步]按钮后,出现如下: jre目录也放在D盘java下.点击[下一步]安装完成后,我在D盘jav

maven搭建spring项目pom有关配置说明

<dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context-support</artifactId>            <version>${spring.version}</version>        </dependency> maven搭建spring项目p

转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)

原文地址:http://blog.csdn.net/yeohcooller/article/details/9316923 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hibernate,整合Spring.最后总结如何熟练创建SSH项目. 仅是创建SSH项目,对于其他的扩展例如Struts的国际化,Hibernate的缓存优化,Spring的AOP等,本博文涉及不到.想学习更多的东西请搜索其他博文. 本项目的环境:Windows 8-64位

无Maven不项目---使用Eclipse快速搭建Maven项目

自从了解Maven和会使用Maven之后,无论创建什么类型的工程,java,web我都会使用Maven来管理项目,就是因为它提供的依赖功能,说白了就是你想用到什么包就去Maven仓库搜索,并将坐标粘贴在pom.xml中,保存一下, Eclipse就会自动为你下载相关的包,省了导出找jar包的时间,和版本冲突的问题!下面使用Eclipse快速搭建Maven项目 如果你的Eclipse自带Maven那么恭喜你,不用配置了,如果没有的话使用eclipse安装插件的办法,地址:http://m2ecli