spring整合dubbo

一、什么是dubbo?

     简单的说dubbo是一个分布式服务框架。这里不多说了,详情请参考官方文档:Apache Dubbo Doc

 

二、为什么要用dubbo,它能做什么?

     dubbo能优雅的将我们的系统切分成一个个模块来发布,像阿里的电商业务,服务器的压力有多大可想而知,试想如果整个系统都放在一个项目里面,那这台服务器分分秒就要冒烟!按业务模块分开来部署,将访问量平均的分发到各个模块的服务器,当然各个模块可能又有多个节点;这样能提高我们的系统的吞吐量,又能提高性能,还能将系统各个模块解耦,A模块的服务挂了,不至于B模块的功能也不能访问了;你可能会说,我不用dubbo也能将项目按模块分开来部署啊,但是将服务都分开并不代表他们之前就完全分开了,dubbo能帮我们实现多个服务之间进行通信,也就是远程服务调用;比如我们整个平台下可能会有个基础服务,专门提供一些基础性的服务,好多服务得用到吧,dubbo就能帮我们实现远程接口的暴露和调用。

 

三、dubbo的工作原理 

spring整合dubbo_第1张图片

     上图主要有这么几个角色:注册中心(Registry)、服务者(Provider)、消费者(Consumer)、监控中心(Monitor);那么他们之间是怎么样一个关系呢?首先这个注册中心是比较独立的,可以是zookeeper、redis等等,你可以当它是个第三方的平台,这个托管平台准备就绪之后,我们通过编写代码和配置,将服务者实现出来,配置里面会指向我们的注册中心,我们要提供的服务都托管给注册中心,然后消费者通过配置告诉注册中心,需要调用什么服务,我们称为订阅;那监控中心呢?它是一个异步统计远程接口的调用次数和成功情况的,数据好像是存在硬盘上,有兴趣的同学可以去了解一下。说到这里是不是有点感觉了?下面我们就来看看具体要怎么用dubbo吧!

 

四、dubbo具体的使用步骤

     1、准备好我们的注册中心,这里用zookeeper来做例子,我用linux系统搭建的,具体安装步骤不做赘述了,参考centos7搭建dubbo-admin中的zookeeper安装,安装好按帖子中的步骤配置好端口和防火墙启动服务即可

     2、创建maven项目

     spring整合dubbo_第2张图片

     

项目结构我简单说明一下,dubbo-api-remote-service项目是一个jar,用来定义远程接口,然后dubbo-api-all是我的一个服务,这里它只充当一个服务提供者的角色,它就实现了我定义的一个接口,dubbo-app-web就是我们的消费者了,这里dubbo-app-web直接引用dubbo-api-remote-service,这样就可以随心所欲的调用接口了,具体看下面的配置和代码。

定义远程接口:

spring整合dubbo_第3张图片

实现远程接口:

spring整合dubbo_第4张图片

然后具体来看dubbo-api-all项目的构建了;

sping容器配置文件:

 

spring整合dubbo_第5张图片

springmvc容器配置文件:

spring整合dubbo_第6张图片

重点来了,服务提供者的配置:

spring整合dubbo_第7张图片

配置web.xml:

spring整合dubbo_第8张图片

服务提供者配置完毕,可以启动了,tomcat start.........

接下来我们配置消费者去调用我们的服务,

spring整合dubbo_第9张图片

然后消费者的dubbo配置:

spring整合dubbo_第10张图片

最后看下核心的jar包有哪些,上pom.xml

		
		4.2.8.RELEASE
		2.8.2
	
	
	
		
			com.dubbo
			dubbo-api-remote-serivce
			${project.version}
		
		
		
			org.springframework
			spring-core
			${spring.version}
		
		
			org.springframework
			spring-beans
			${spring.version}
		
		
			org.springframework
			spring-context
			${spring.version}
		
		
			org.springframework
			spring-jdbc
			${spring.version}
		
		
			org.springframework
			spring-web
			${spring.version}
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		
		
			org.springframework
			spring-aop
			${spring.version}
		
		
			org.springframework
			spring-tx
			${spring.version}
		
		
			org.springframework
			spring-orm
			${spring.version}
		
		
			org.springframework
			spring-context-support
			${spring.version}
		
		
			javax.servlet
			servlet-api
			2.5
			provided
		
		
			com.alibaba
			dubbo
			2.5.3
			
				
					org.springframework
					spring
				
			
		
		
		
		
			com.github.sgroschupf
			zkclient
			0.1
		
		
		
			org.apache.zookeeper
			zookeeper
			3.4.5
		
		
		
			log4j
			log4j
			1.2.17
		
		
		
			com.fasterxml.jackson.core
			jackson-core
			2.8.4
		
		
			com.fasterxml.jackson.core
			jackson-databind
			2.8.4
		
		
			com.fasterxml.jackson.core
			jackson-annotations
			2.8.4
		
		
		
			org.apache.logging.log4j
    		log4j-core
    		${org.apache.logging.log4j.version}
		
		
			org.apache.logging.log4j
    		log4j-api
    		${org.apache.logging.log4j.version}
		
		
			org.apache.logging.log4j
    		log4j-jcl
    		${org.apache.logging.log4j.version}
		
		
			org.apache.logging.log4j
			log4j-slf4j-impl
			${org.apache.logging.log4j.version}
		
		
			org.apache.logging.log4j
			log4j-1.2-api
			${org.apache.logging.log4j.version}
		
		
            com.lmax
            disruptor
            3.3.0
        
	

好了,把消费者也启动,访问一下:

 

spring整合dubbo_第11张图片

看看结果:

好了,最后附上demo的下载地址:dubbo-demo,有问题欢迎指出或评论哦!

你可能感兴趣的:(java网络通信,java常用)