在工作流接口模块使用了dubbo来实现服务中心以及负载。至于怎么使用dubbo以及什么是dubbo网络上面的文章很多就不做描述了。通过使用dubbo,总结了一下几点在使用的过程中需要注意的。
以自己的项目为例,其实考虑了自己的项目在使用dubbo上,并没有真正用到dubbo的功能,仅仅是使用并没有突出他的优点。没办法组长要求。由于我们只把工作流引擎的接口使用了dubbo给接口模块调用,在提供rest接口给外部系统调用,但是想后面的人员系统,表单系统都没有挂到dubbo上,无法发挥服务中心这个概念。仅仅是实现了负载,从服务器的负载来做其实效果差不多。
在dubbo使用过程中有几点注意。我是在原来的项目做分离变成2个项目放到dubbo上,这里就涉及到,
1.dubbo的接口参数要求序列化,所以在设计接口的时候参数尽量自定义。
2.dubbo的异常捕获问题,内部实现了拦截器捕获异常,不过里面存在一个bug,说把异常类和接口类放在一个包中可以抛出看了代码获取到路径是包括类名的所以不可能,如果想跑出自定义的异常可以覆盖那个拦截器。
3.dubbo项目提供jar的方式,这要求在开发过程中,尽量把需要提供给外部的接口以及输入输出参数规范到几个包中,打成jar提供给外部,不需要整个项目打包。
其实dubbo这个框架的原理在大型网站系统与JAVA中间件实践第一章的控制器变化就有说到,原先的负载均衡使用硬件想F5,后来把硬件改成LVS,最后变成dubbo这种形式,而这种形式分成2种,一种是名称服务器想dubbo中用zookeeper或者redis作为记录服务的地址和接口等,这种方式要与2边都保持通信,第2中规则服务器,规则服务器不与提供方链接,只提供规则给调用方。
最后,大家如果在开发内部大型系统的时候推荐使用dubbo,把各模块独立通过dubbo做管控来实现耦合,统一管理,对后期的扩展和维护也很好。总之dubbo对系统而言,我的总结是2个作用点:负载均衡,服务中心。其中的滋味只能自己体会了。