spring整合dubbo

一、什么是dubbo?

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

 

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

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

 

三、dubbo的工作原理 

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

 

四、dubbo具体的使用步骤

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

     2、创建maven项目

     

     

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

定义远程接口:

实现远程接口:

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

sping容器配置文件:

 

springmvc容器配置文件:

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

配置web.xml:

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

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

然后消费者的dubbo配置:

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

	<properties>	
		<spring.version>4.2.8.RELEASE</spring.version>
		<org.apache.logging.log4j.version>2.8.2</org.apache.logging.log4j.version>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>com.dubbo</groupId>
			<artifactId>dubbo-api-remote-serivce</artifactId>
			<version>${project.version}</version>
		</dependency>
		<!-- spring相关 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- https://mvnrepository.com/artifact/io.netty/netty <dependency> <groupId>io.netty</groupId> 
			<artifactId>netty</artifactId> <version>3.10.0.Final</version> </dependency> -->
		<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		<!-- json -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.8.4</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.4</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.8.4</version>
		</dependency>
		<!-- log -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
    		<artifactId>log4j-core</artifactId>
    		<version>${org.apache.logging.log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
    		<artifactId>log4j-api</artifactId>
    		<version>${org.apache.logging.log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
    		<artifactId>log4j-jcl</artifactId>
    		<version>${org.apache.logging.log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-slf4j-impl</artifactId>
			<version>${org.apache.logging.log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-1.2-api</artifactId>
			<version>${org.apache.logging.log4j.version}</version>
		</dependency>
		<dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.3.0</version>
        </dependency>
	</dependencies>

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

 

看看结果:

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

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值