首先由于传统的基于controller,service.mapper的开发模式,对于应对各种复杂的逻辑而言不利于实现代码的复用以及维护,从而不断衍生出各种服务架构,其中SOA面向服务架构便是比较流行的一种,而阿里巴巴的dubbo框架则将其发挥得淋漓尽致,与spring又是无缝连接,所以掌握dubbo框架也是程序员的必备技能.
下面举个例子来实现简单的调用过程(面向新手):
项目结构:(基于Maven进行管理)
1.首先将业务代码写完,实现一个简单的业务,比如添加用户
2.在Linux环境下创建zookeeper集群
3.将provider服务发布到zookeeper注册中心, 可通过Main类的main方法启动spring框架,由于dubbo框架的是依赖spring容器进行初始化操作的,故必须开启spring容器.
4.开启成功后可通过admin管理平台去查看服务
5.确保无误后,再将consumer热部署到另一台Linux虚拟机的tomcat上
6.通过访问tomcat中部署的项目,并测试其功能是否能消费原来provider里面的服务,来测试是远程调用成功
以上是调用的步骤,说得比较简易,但做起来里面有很多细节的地方要处理,比如provider发布的服务去注册中心注册时,不要忘了在配置文件中进行注册,通过dubbo:service标签,而消费端consumer在消费服务时,也要在dubbo的配置文件中进行订阅,通过dubbo:reference标签,如果不配置的话是无法消费服务的,原因是spring底层无法生成该接口的Proxy对象等等.
总的来说dubbo的优缺点还是很明显的:
优点:
- 透明化的远程方法调用
像调用本地方法一样调用远程方法;只需简单配置,没有任何API侵入。 - 软负载均衡及容错机制
可在内网替代nginx lvs等硬件负载均衡器。 - 服务注册中心自动注册 & 配置管理
不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip。
使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群。 - 服务接口监控与治理
Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理。
缺点:
- 只支持JAVA语言