dubbo
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
soa架构
表现层和服务层是不同的工程。
如何实现远程通信?
1.WebService:跨语言,基于soap协议,效率不高。
2.restful:http+json.
3.dubbo:rpc协议远程通信,直接使用socket通信,传输效率高。
dubbo架构
dubbo实现远程调用的方法以及与单一工程的区别
单一工程中spring的配置:
<bean id="xxxService" class="com.xxx.XxxServiceImpl" /> <bean id="xxxAction" class="com.xxx.XxxAction"> <property name="xxxService" ref="xxxService" /> </bean> |
远程服务:
在本地服务基础上,简单配置,即可完成远程化:
将单一工程的配置拆分成两份,将service定义部分放在服务方remote-provider.xml,将controller放在调用服务方remote-consumer.xml。
并在提供方增加暴露服务配置<dubbo:service>,在调用方增加引用服务配置<dubbo:reference>。
发布方:
<!-- 和本地服务一样实现远程服务 --> <bean id="xxxService" class="com.xxx.XxxServiceImpl" /> <!-- 暴露远程服务 --> <dubbo:service interface="com.xxx.XxxService" ref="xxxService" /> |
调用方:
<!-- 增加引用远程服务配置 --> <dubbo:reference id="xxxService" interface="com.xxx.XxxService" /> <!-- 和本地服务一样使用远程服务 --> <bean id="xxxAction" class="com.xxx.XxxAction"> <property name="xxxService" ref="xxxService" /> </bean> |
————————————————————————————————
服务方和调用方通过注册中心连接,官方推荐使用zookeeper。服务提供方和消费者只在启动时与注册中心交互。
它相当于一个目录服务。