@TOC
dubbo
核心
- 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
- 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
- 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
Dubbo服务接口
Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类,它是个Java 的maven项目即可
打成jar包给服务提供者使用
Dubbo服务提供者
是web项目
项目中与数据库交互的代码也在此项目中写
-
配置pom.xml文件的依赖
<!-- 添加dubbo依赖 --> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- dubbo需要把服务注册到zookeeper上, 添加zookeeper依赖 --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> <!-- 排除某些不需要的依赖 --> <exclusions> <exclusion> <groupId>org.sl4j</groupId> <artifactId>sl4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加自定义的Dubbo服务接口依赖 --> <dependency> <groupId>com.springBoot.dubbo</groupId> <artifactId>springBoot-dubbo-interface</artifactId> <version>1.0.0</version> </dependency>
-
配置application.properties文件
#项目服务名通常是创建的工程名 spring.application.name=springBoot-dubbo-interface #dubbo应用名(可以没有) spring.dubbo.appname=springBoot-dubbo-interface #dubbo注册中心(这里用的zookeeper) spring.dubbo.registry=zookeeper://127.0.0.1:2181
-
实现自定义服务接口
在实现的service类上需加上@service(spring的)和@service(dubbo的@com.alibaba.dubbo.config.annotation.service)两个注解@service//(spring的) @com.alibaba.dubbo.config.annotation.Service//(dubbo的) public class ServiceImpl implements Service{ }
-
在启动入口加上dubbo自动化配置支持开启的注解
@SpringBootApplication @EnableDubboConfiguration public class Application{ ........ }
Dubbo服务消费者
是web项目
-
配置pom.xml文件的依赖
<!-- 添加dubbo依赖 --> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- dubbo需要把服务注册到zookeeper上, 添加zookeeper依赖 --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> <!-- 排除某些不需要的依赖 springboot默认的是logback日志--> <exclusions> <exclusion> <groupId>org.sl4j</groupId> <artifactId>sl4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加自定义的Dubbo服务接口依赖 --> <dependency> <groupId>com.springBoot.dubbo</groupId> <artifactId>springBoot-dubbo-interface</artifactId> <version>1.0.0</version> </dependency>
-
配置application.properties文件
#项目服务名通常是创建的工程名 spring.application.name=springBoot-dubbo-customer #dubbo应用名(可以没有) spring.dubbo.appname=springBoot-dubbo-customer #dubbo注册中心(这里用的zookeeper) spring.dubbo.registry=zookeeper://127.0.0.1:2181
-
写controller
调用service时使用@Reference注解@RestController public class Controller{ //阿里的包 //引用远程dubbo服务 @Reference private Service service; }
-
在启动入口加上dubbo自动化配置支持开启的注解
@SpringBootApplication @EnableDubboConfiguration public class Application{ ........ }