最近划分进了新的项目组。在开发流程上,由于不熟步骤,导致一些报错。记录如下。
一,在dubbo调用其它服务时,
1,确定是否引入jar包,版本号信息是否正确。
2,提供者是否将服务注册到注册中心,否则报错类似:
com.alibaba.dubbo.rpc.RpcException: Forbid consumer 本地启动ip access service 提供者Service from registry 远程注册中心ip use dubbo version 2.8.4, Please check registry access list (whitelist/blacklist).
3,dubbo消费者是否注册到注册中心,即配置 <dubbo:reference interface=xxxx,id=xxxx, check="false">
否则启动报错类似:
Field 服务提供者Service in 消费者ServiceImpl required a bean of type 服务提供者接口(interface) that could not be found.
Action:
Consider defining a bean of type '服务提供者接口(interface)' in your configuration.
二,粒度的考虑
在确认需求时,是多变的。比如,产品希望最后的粒度到单台设备。而现在需求中所要求的是设备的种类(同类设备归为一个种类)。
对于这种需求,后期修改会影响到数据库表的修改,故需要确定好,只允许有一个粒度。
三,封装
项目体系如果需要具备扩展性,则须有良好的封装。
1,数据库操作模块,entity--->mybatis--->entity---->dto.(entity变量与数据库字段一一对应。dto,可新增,可删,只提供对方需要的数据)
数据库interface --->数据库 impl---->暴露被其它系统调用的interface --->被其它系统调用的具体 impl----->发布到注册中心
大致概念是:
1.1,写entity,然后通过mybatis或其它框架,将数据先查出来封装进entity。这个过程要提供数据库interface方法,比如,get,insert,update,queryByxxx等。
1.2,暴露被其它系统调用的interface,返回参数或传参应为dto,即在数据库impl 调用框架查询到的数据,要同时封装(转化)为dto,或者将dto数据封装为entity,然后执行insert/update。
四,待定