一:SOA描述:
SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。
二:Dubbox简介:
Dubbox提供高性能和透明化的RPC远程服务调用方案,一种SOA服务治理方案,也就是个远程服务调用的分布式框架。
节点角色说明:
- Provider: 暴露服务的服务提供方。
- Consumer: 调用远程服务的服务消费方。
- Registry: 服务注册与发现的注册中心。
- Monitor: 统计服务的调用次调和调用时间的监控中心。
- Container: 服务运行容器。
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计
数据到监控中心。
三:dubbox提供者
1)启动192.168.25.128的zookeeper服务
2)引入dubbox的jar或者maven坐标(注意maven中央仓库无法下载dubbox的jar)
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
3)创建pyg_sellergoods_service工程,在resources下创建dubbox的配置文件,内容如下
<!--指定dubbo协议和端口-->
<dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
<!--指定应用名称-->
<dubbo:application name="pyg_sellergoods_service"/>
<!--连接zookeeper注册中心,暴露服务-->
<dubbo:registry address="zookeeper://192.168.25.128:2181"/>
<!--扫描包注解-->
<dubbo:annotation package="com.pyg.sellergoods"/>
<!--非注解方式提供服务
<dubbo:service interface="com.pyg.sellergoods.service.BrandService" ref="brandService"></dubbo:service>-->
4)创建一个品牌服务类BrandService
5).pyg_sellergoods_service工程在maven的packaging标明为一个war,放置到tomcat中启动
四:dubbox的消费者
1)启动192.168.25.128的zookeeper服务
2)引入dubbox的jar或者maven坐标到项目中(注意maven中央仓库无法下载dubbox的jar)
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
3)创建pyg_manager_web工程,且在resources下增加dubbox配置文件,内容如下:
<!-- 引用dubbo 服务 -->
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="dubboxdemo-web"/>
<!-- 消费方超时设置30s -->
<dubbo:consumer retries="0" timeout="30000"></dubbo:consumer>
<!-- 使用zookeeper注册中心暴服务地址 -->
<!-- 注册中心地址 -->
<dubbo:registry protocol="zookeeper" address="zookeeper://192.168.25.128:2181"/>
<!--非注解方式:使用@Autowired注入
<dubbo:reference interface="com.pyg.sellergoods.service.BrandService" id="brandService" check="false"></dubbo:reference>-->
<!--注解方式:扫描包,使用@Reference注入-->
<dubbo:annotation package="com.pyg.controller"/>
4)创建品牌的controller类BrandController
5)注意服务的提供者和消费者都共同依赖同一个Interface工程
五:dubbo监控
将下载的dubbox带有的dubbo-admin.war放置到tomcat运行,用户名和密码:root/root