SOA架构
SOA架构
Dubbo 就是资源调度和治理中心(SOA)的管理工具
Dubbo 的架构
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
1、 配置虚拟机
打开虚拟机克隆虚拟机如图:
设置克隆虚拟机网卡
启动克隆虚拟机
修改网卡地址及虚拟机IP地址:
vi/etc/sysconfig/network-scripts/ifcfg-eth0
清除原先网卡
vi /etc/udev/rules.d/70-persistent-net.rules
编辑完成,保存退出
然后重启虚拟机 /etc/init.d/networkrestart
注意:连接工具连接不上,请查看虚拟机是否被禁用了,是的请开启!
2、 注册中心
2、官方推荐使用 zookeeper 注册中心
上传
解压 tar -zxvf zookeeper-3.4.6.tar
/usr/local/zookeeper-3.4.6/data
启动zookeeper
启动成功图:
关闭防火墙
service iptables stop
如果想长时间关闭防火墙包括下次开机
chkconfig iptables off
./zkServer.sh status
3、 工程拆分
将聚合工程中的web工程设为与聚合工程同级
在eclipse删除web工程
导入web工程
配置修改
Web工程与聚合工程同级需要将之前聚合工程中web设置删除如图:
Web工程中pom.xml配置tomcat服务器
<!-- 配置tomcat插件 --> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>9091</port> <path>/</path> </configuration> </plugin> </plugins> </build> |
将service工程修改成war包工程
增加war后报错,是应为war工程缺少web.xml解决如图:
然后修改service工程粘贴的web.xml
将mybaits、spring的配置文件xml放到service工程中去如图:
4、 Dubbo发布和调用服务
Manager工程、Web工程的pom调用Dubbo相关的jar如图
<!-- dubbo相关 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <!-- 排除spring的jar包 --> <exclusions> <exclusion> <groupId>org.springframework</groupId>
<artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </exclusion> </exclusions>
</dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> |
Dao工程的pom配置如下:
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
|
发布服务Service工程的xml如图:
<!-- 发布dubbo服务 --> <!-- 配置application名称 --> <dubbo:application name="buy-manager"/> <!-- 配置注册中心的信息 --> <dubbo:registry protocol="zookeeper" address="192.168.11.190:2181"/> <!-- 配置dubbo服务以及端口号 --> <dubbo:protocol name="dubbo" port="20880"/> <!-- 申明需要暴露的服务的接口 --> <dubbo:service interface="com.igeek.service.ItemService" ref="itemServiceImpl"/> |
调用服务web工程的xml如图:
<!-- 引用dubbo服务 --> <!-- 在注册中心的应用的名称 --> <dubbo:application name="buy-manager-web" /> <!-- 配置注册中心的相关信息 --> <dubbo:registry protocol="zookeeper" address="192.168.243.135:2181" /> <!-- 引用指定的服务 --> <dubbo:reference interface="com.igeek.service.ItemService" id="itemService" /> |
Pojo实体类都序列化