配置的优先级
消费端优先最高,其次是服务端
![这里写图片描述](//img-blog.csdn.net/20180318205019160?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
服务改造
![这里写图片描述](//img-blog.csdn.net/20180318205504187?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
服务的最佳实践
分包
1、 服务接口、请求服务模型、异常信息都放在api里面,符合重用发布等价原则,共同重用原则
2、 api里面放入spring 的引用配置。 也可以放在模块的包目录下。 com.gupao.vip.mic.order
粒度
1、 尽可能把接口设置成粗粒度,每个服务方法代表一个独立的功能,而不是某个功能的步骤。否则就会涉及到分布式事务。
2、 服务接口建议以业务场景为单位划分。并对相近业务做抽象,防止接口暴增。
3、 不建议使用过于抽象的通用接口 T T<泛型>, 接口没有明确的语义,带来后期的维护。
版本
1、 每个接口都应该定义版本,为后续的兼容性提供前瞻性的考虑 version
2、 建议使用两位版本号,因为第三位版本号表示的兼容性升级,只有不兼容时才需要变更服务版本
3、 当接口做到不兼容升级的时候,先升级一半或者一台提供者为新版本,再将消费全部升级新版本,然后再将剩下的一半提供者升级新版本
推荐用法
在provider端尽可能配置consumer端的属性
比如timeout、retires、线程池大小、LoadBalance
配置管理员信息
application上面配置的owner 、 owner建议配置2个人以上。
因为owner都能够在监控中心看到
配置dubbo缓存文件
1、注册中心的列表
2、服务提供者列表
源码分析
![这里写图片描述](//img-blog.csdn.net/20180318221937744?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzI0MzcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
基于spring 配置文件的扩展的话
NamespaceHandler: 注册BeanDefinitionParser, 利用它来解析
BeanDefinitionParser: 解析配置文件的元素
spring会默认加载jar包下/META-INF/spring.handlers 找到对应的NamespaceHandler
initializingBean, 当spring容器初始化完以后,会调用afterPropertiesSet方法
DisposableBean,
ApplicationContextAware,
ApplicationListener,
BeanNameAware