Ling3-dubbo
来自ling
目录
优化点
- 减少配置,支持多组配置
- dubbox
- 注重单元测试
- 提高缓存模块在框架中的地位
- chome封装
- AngularJS和单元测试
- bootstrape
- 尽量解决baseentity中version的使用问题
- 久代码模块重构规则:原来模块保留api和dubbo reference定义. impl独立为新的模块
配置管理
多组配置支持
数据库多profile支持
- 复制任何一份config-xxx.properties并修改
- 复制xxxDatasourcesConfig并修改引用的properties,同时修改profile名称
- ProfilesDef 中定义当前profile
- 修改ProfilesDef.CURRENT的值并在parent项目运行单元测试,保证所有单元测试通过
- 在web.xml中配置profile并使用
数据库多profile支持
安装初始化配置
系统属性设置和使用
编码规范
模块划分
- xxx-api 接口规范
- xxx-impl服务实现者,组件方式时调用,依赖xxx-impl
- xxx-provider 服务提供者,服务方式时使用,依赖xxx-impl获取到spring bean和api
- xxx-customer 服务使用者,服务方式时使用,依赖xxx-api 供需要使用xxx的模块调用
- 需要使用xxx模块时,在api模块中添加相应依赖,组件方式时调用,依赖xxx-impl.服务方式时使用xxx-customer
编码规范
- 所有xxx.provider继承ling.pl.dubbo.provider,xxx.impl
- provider的xml文件放在包beans.dubbo.provider中命名为dubbo-xxx-provider.xml
- 所有xxx.customer继承ling.pl.dubbo.customer,xxx.api
- provider的xml文件放在包beans.dubbo.customer中命名为dubbo-xxx-customer.xml
- 模块独立启动测试
- 单元测试
- xxx-customer 服务消费者,内容为reference,依赖xxx-api
- 相同模块provider,customer不共存
- 服务使用者,通过maven引用xxx-customer来达到使用相应模块的能力,而不是直接使用xx-api或xxx-impl
缓存机制的使用
- CacheUtil缓存和Spring注解缓存不共享数据
- 缓存现有三种实现,可以在profile中指定你使用的profile方式.和数据库一样,你只能使用一种.
public static final String CACHE_HASHMAP = "hashMapCache"; public static final String CACHE_EHCACHE = "ehcacheCache"; public static final String CACHE_REDIS = "redisCache";
- redisCache支持集群,hashMapCache和ehcacheCache不支持集群未来可以扩展ehcacheCache对集群的支持
- 必须扩展从preference扩展.
CacheUtil缓存
- 系统只提供默认的缓存实现
- 因为业务场景不同而需要不同的缓存机制,可以新增utils,并继承cacheutils,然后修改utils中的ApplicationCache beanid来扩展需要的缓存机制实现
- CacheUtils在api中,通过调用bean id为ApplicationCache.BEAN_ID来完成具体的实现.
- dubbo时来源于customer中对应的provider中对应的profile决定的缓存机制
- java组件时,决定于impl中设置的profile
- provider中可以在xml中配置beanid方式提供多种ApplicationCache的实现,
Spring注解缓存
其他
- 因为很多utils问题,hibernate依赖还是放在parent上,不在支持多个hibernate版本
Dubbo REST中如何实现负载均衡和容错(failover)
如果dubbo REST的消费端也是dubbo的,则Dubbo REST和其他dubbo远程调用协议基本完全一样,由dubbo框架透明的在消费端做load balance、failover等等。
如果dubbo REST的消费端是非dubbo的,甚至是非java的,则最好配置服务提供端的软负载均衡机制,目前可考虑用LVS、HAProxy、 Nginx等等对HTTP请求做负载均衡。