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。服务提供方和消费者只在启动时与注册中心交互。

它相当于一个目录服务。

posted @ 2018-06-21 13:33  三笠丶阿克曼  阅读(110)  评论(0编辑  收藏  举报