DUBBO
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架
准备工作
- zookeeper-3.3(Apache网站下载)
- tomcat7.0(Apache官网下载)
- dubbo-monitor-simple-2.5(github下载最新代码打包tar.gz)
- dubbo-admin-2.5(github下载最新代码打包war)
- maven开发环境(eclipse+maven)
启动zookeeper
- 解压zookeeper,目录名称为zookeeper
- 重命名zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg
- 执行zookeeper/bin目录下zkServer.cmd(linux下为zkServer.sh)
部署dubbo-monitor-simple
- 解压dubbo-monitor-simple,目录名称为dubbo-monitor-simple
- 执行dubbo-monitor-simple/bin目录下start.cmd(linux下为start.sh)
- 访问http://127.0.0.1:8080查看监控中心
部署dubbo-admin
- 解压tomcat,目录名称为tomcat,配置端口为8081
- 将war包复制到tomca/webapps目录内
- 执行tomcat/bin目录下的startup.bat(linux为startup.sh)启动tomcat
- 访问http://127.0.0.1:8081/dubbo-admin查看管理控制台
定义API
- 创建Maven simple项目dubbo-api
- 定义接口如下:
public interface OrderService {
public Order create(Order order);
}
public interface ProductService {
public Product findByName(String name);
}
发布服务
- 添加服务依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
</dependencies>
- 实现服务
@Service
public class OrderServiceImpl implements OrderService{
public Order create(Order order) {
return new Order();
}
}
@Service
public class ProductServiceImpl implements ProductService{
public Product findByName(String name) {
return new Product();
}
}
- 注册服务
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />
</beans>
订阅服务
- 添加服务依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
</dependencies>
- 订阅服务
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>
- 调用服务
@Controller
public class OrderController {
@Autowired
private OrderService orderService;
public Order createOrder(Order order){
return orderService.create(order);
}
}
@Controller
public class ProductContr {
@Autowired
private ProductService productService;
public Product FindProduct(String name){
return productService.findByName(name);
}
}
系统架构图
关于Ngix以及Mysql的集群部署请持续关注本博客,学无止境,本博客如果存在纰漏,欢迎指正。
请尊重原创如有引用请标明博客出处,谢谢。