Springboot+dubbo+zookeeper学习笔记(二)

33 篇文章 1 订阅
27 篇文章 0 订阅

时隔数月,第一版基本上线测试,开发组面临第二版重构。因为第一版遭遇需求零碎和管理混乱,毫无节制地修改,导致原来架构好的项目被无情撕碎,体系完全被打乱,程序处处耦合,经常是改完这一处,就会在另一处翻出新问题。加之原来的项目因为无法整体预先规划,四个app和一个管理网站的接口杂揉在一起,臃肿而且杂乱。我就想着赶紧上线,到安排第二版重构的时候实现分布式架构。

架构的初始想法,是全部利用SpringCloud来做,不借用外部的软件。不过SpringBoot的服务调用方式是基于RestFul的,自己感觉到有点多余,不但服务提供者要多做一层,而且提供服务的同时也把接口暴露了出来,谁都可以调用,也不太安全。总之是感觉到有点复杂,于是就想到利用Springboot+dubbo_zookeeper的组合。

虽然几个月前做过一些尝试,基本了解这种分布式的使用,但是也知道还是有很多坑没有踩到。以前是在win7本地电脑上面安装的zookeeper,今天实在centos服务器上面安装的,这一点小小的不同,就遇到了坑,折腾了好久。大意就是连接异常。猜测是因为服务器端口没有开放,于是特意开放了端口,还是不行。最后是完全关闭了防火墙,踩完全解决问题。

第二个坑就是包的问题。以前我认为提供者和消费者scan的包名必须一样,通过尝试发现不是这样。这两个参数表示的是提供者类和消费者类的包名,可以不一样,但是好像z这种模式用到了一种叫做hassian的序列化方式,从提供者传到消费者的类,引用的类都是用的是完全类名序列化,也就是包含包名的,如果在本地复制一个类,就算都相同,包名不同也不可以。但是这样依赖就感觉好烦琐,难道我在提供者写好的公用的类和接口不但要全部复制给消费者,貌似消费者还要建立一个名称完全相同的包放进去才可以用。

还好我最近再努力拆分项目,极力实现低耦合,这种复制来复制去的做法不但容易开放修改权,造成不同步的问题,而且总感觉到在做重复工作,这挺让人难受的。

解决方法是把这些文件另外起一个与业务无关的基本依赖包libs,把需要用到的model和interface都放到这个项目里面install,然后分别在服务提供者和服务消费者中依赖就可以了。我已经尝试成功。有什么扩展只需要分开去修改,然后升级版本就搞定了。不过,如果不希望把jar包发来发去,团队可以建立一个maven私服,使用自己的依赖包会更加方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值