您的位置:首页 > 运维架构 > 网站架构

基于dubbo的分布式架构

2016-01-07 14:39 316 查看

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的集群部署请持续关注本博客,学无止境,本博客如果存在纰漏,欢迎指正。

请尊重原创如有引用请标明博客出处,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息