在项目搭建前,我们首先需要了解dubbo是什么,为什么要用dubbo,与传统单一应用架构和垂直结构项目有什么区别。
1、Dubbo是什么
在了解Dubbo前,我们先来缕下传统项目特点,便于更清楚了解Dubbo优势。下图为整理的大概特点:

了解了传统项目后,下来看看Dubbo是什么。
-
是分布式服务架构
-
高性能和透明化的RPC远程服务调用方案(动态注册和发现服务,使服务透明化,通过在消费方获取服务方地址列表,实现软负载均衡,降低了对F5的硬件依赖,降低了成本)
-
SOA服务治理(可统计服务器每天的调用量,响应时间;可动态调整服务器权重)
下图为Dubbo流程图(从官网截图):

可看出大体流程为:
1、服务提供者(生产者)启动时向注册中心注册提供的服务(该点也说明了在我们后续动手时,需要先启动注册容器,再启动生产者)
2、消费者启动时向注册中心订阅需要的服务
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.消费者从生产者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.消费者和生产者,在内存中累计调用次数和调用时间,会定时发送到监控中心。
综上可看出,Dubbo的应用大致有以下几点优点:
1、服务自动注册与发现(基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器 。)
2、软负载均衡及容错机制,降低了原有依赖F5等硬件负载均衡成本
3、提供了多种基于长连接的NIO框架,保证了高效的响应
4、此外Dubbo提供了完善的管理控制台dubbo-admin与简单的控制中心dubbo-monitor
5、Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可
2、项目整合
1、Zookeeper搭建
此处用zookeeper是看官方api建议,具体安装步骤就不在此详述,有兴趣可参考
zookeeper安装
2、创建maven工程
(1)、工程分为4个结构
dubbo-demo 工程,主工程,主要导入公共jar包等
dubbo-api 工程,公共接口
dubbo-provider 工程,服务提供者
dubbo-consumer 工程,服务消费者

(注:每个工程都是独立的,通过maven 引入父子关系,具体创建步骤就不详细说明)
(2)、maven pox.xml配置
首先在 dubbo-demo中引入所有需要依赖的jar,这样可避免每个项目都引入造成重复。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.dubboDemo</groupId>
<artifactId>dubbo-demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>dubbo-api</module>
<module>dubbo-provider</module>
<module>dubbo-customer</module>
</modules>
<name>dubbo-demo</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.version>4.1.5.RELEASE</spring.version>
<mybatis.version>3.2.6</mybatis.version>
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<log4j.version>1.2.17</log4j.version>
<druid.version>1.0.8</druid.version>
<slf4j.version>1.6.6</slf4j.version>
<dubbo.version>2.6.4</dubbo.version>
<zookeeper.version>3.4.13</zookeeper.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.versio

本文介绍了如何在IDEA中整合maven、Spring、Dubbo和Zookeeper。首先,解释了Dubbo作为分布式服务架构的优势,包括服务注册与发现、软负载均衡和容错机制等。接着,详细描述了项目整合的步骤,包括Zookeeper的搭建、maven工程的创建和配置、接口定义、服务提供者和消费者实现。最后,指出启动顺序为Zookeeper、服务提供者、服务消费者,并提供了代码示例。
最低0.47元/天 解锁文章
746

被折叠的 条评论
为什么被折叠?



