一、背景描述
接触dubbo也是比较晚了,由于公司底层通信太麻烦要改造,自己就边了解边搭架构,在这里记录一下注意事项,并贴出来一些坑共勉
二、了解dubbo
1.dubbo是个什么
1.1:dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求
2.特点
2.1:远程通讯:提供对多种基于长连接(http)的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式
2.2:集群容错:包括多协议支持,以及软负载均衡,失败容错(注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者),地址路由,动态配置等集群支持
2.3:自动发现:不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者
三、搭建框架
1、先看一下配置
1.1消费者的
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="patronli" />
<!-- 使用zookeeper注册中心暴露服务地址 ,注册中心部署的ip+端口-->
<dubbo:registry address="zookeeper://192.168.52.38:8098" />
<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
<bean id="indexAction" class="com.fuiou.consumer.Consumer" scope="prototype">
<property name="demoService" ref="demoService"></property>
</bean>
<dubbo:reference id="demoService" interface="com.fuiou.provider.DemoService" />
1.2提供者的
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="bossli" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.52.38:8098" />
<!-- 用dubbo协议在20889端口暴露服务(定义一个与现有不冲突的端口号) -->
<dubbo:protocol name="dubbo" port="20889" />
<!--A业务块-->
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.fuiou.provider.DemoService" ref="demoService" />
<!-- 具体的实现bean -->
<bean id="demoService" class="com.fuiou.provider.impl.DemoServiceImpl" />
1.3:讲解
[color=red][b]其实dubbo中重要的就是上面的配置,--在消费方(调用方)声明一个接口,然后在提供方(被调用方)声明一个一样的接口需要保持和消费方一样的目录接下来就可以去实现这个接口并返回结果给消费方[/b][/color]
1.4注册中心
[color=red][b]1.启动,本地启动的话双击zkServer.cmd,虚拟机启动的话执行zkServer.sh命令[/b][/color]
[img]http://dl.iteye.com/upload/picture/pic/136493/287d63a0-64bd-3132-bdd7-e919c0601e69.png[/img]
[color=red][b]2.端口号的设置在zookeeper/conf/zoo.cfg里下图位置修改 即dubbo:registry的端口号[/b][/color]
[img]http://dl.iteye.com/upload/picture/pic/136495/a7306f55-3e99-3631-b42f-168dc7f132bd.png[/img]
[color=red][b]3.zookepper启动成功如下图所示[/b][/color]
[img]http://dl.iteye.com/upload/picture/pic/136497/7ebbd7d4-597f-3d00-96f5-b1bfb1723221.png[/img]
1.5dubbo项目注意事项
[color=red][b]1.先启动注册中心,再启动项目
2.先启用提供方再调用消费方
3.如果项目是用tomcat服务器,则端口号不要用8080
4.如果出现以下原因要检查的点有,xml配置的registry地址是否正确,zookepper是否启动或者重复启动导致端口号占用或者压根没启动[/b][/color]
[img]http://dl.iteye.com/upload/picture/pic/136499/3347e181-2b50-3ff6-86ed-80faeadc217f.png[/img]
[size=medium][color=red][b]由于项目较大请私信或留言索取我搭建的项目(web项目以及纯java项目)以及zookepper[/b][/color][/size]