一、认识
(1)Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
(2)架构:
二、使用准备
(1)下载vmware、下载CentOS6.4镜像文件
(2)下载zookeeper-3.4.6.tar.gz(用zookeeper作为dubbo的register)
(3)zookeeper安装步骤:
三、附带知识
(1)常见linux命令:
- ll (列文件)
- su root (root模式)
- tar zxvf 文件名 (解压缩)
- mv 文件旧路径 文件新路径 (移动、重命名)
- vi 文件 (编辑文件)
- 编辑文件的时候:i(插入编辑);wq(保存并退出);q! (放弃所作修改而直接退到shell下。)
- mkdir (创建文件夹)
四、如何使用dubbo
(1)开启zookeeper
(2)提供服务的项目和调用服务的项目导入关于dubbo的包
<!-- dubbo相关的jar包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>netty</artifactId>
<groupId>org.jboss.netty</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
(3)提供服务的项目的配置文件写法(applicationContext-service.xml):
<?xml version="1.0" encoding="UTF-8"?>
<beans 。。。省略其他。。。
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation=" 。。。省略其他。。。
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 配置包扫描器,扫描所有带@Service注解的类 -->
<context:component-scan base-package="com.service"/>
<!-- 发布dubbo服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="要提供服务的项目名字" />
<!-- 注册中心的地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.25.167:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.service.ItemService" ref="itemServiceImpl" timeout="300000"/>
<dubbo:service interface="com.service.ItemCatService" ref="itemCatServiceImpl" timeout="300000"/>
(4)需要调用服务的项目的配置文件写法(springmvc.xml):
<beans 。。。省略其他。。。
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation=" 。。。省略其他。。。
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 配置注解驱动 -->
<mvc:annotation-driven />
<!-- 视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置包扫描器,扫描@Controller注解的类 -->
<context:component-scan base-package="com.controller"/>
<!-- 引用dubbo服务-->
<dubbo:application name="要调用服务的项目名字"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.167:2181"/>
<dubbo:reference interface="com.service.ItemService" id="itemService" />
<dubbo:reference interface="com.service.ItemCatService" id="itemCatService" />
(5)要调用服务的项目的controller写法:
@Autowired
private ItemService itemService;
@RequestMapping("/item/{itemId}")
@ResponseBody
public TbItem getItemById(@PathVariable Long itemId) {
TbItem tbItem = itemService.getItemById(itemId);
return tbItem;
}