1. 服务的接口类单独封装在一个maven的项目中,避免客户端应用整个服务端的代码
2. 接口类以及接口参数类要求是可序列化的,避免出现很大的规模的对象,避免使用Enum类型等。
3. 因为是分布式服务,服务都基于接口,所以合理规范的接口定义是良好协同开发的基础,尽量提前商定好接口。并提供对接口一个简单mock实现,避免对下游消费者的进度影响
4. 分布式后,一切都去中心化了, 所以有些传统基于中心化的开发思路要转换,服务要保证是无状态的。比如原来单机可以很方便的使单机cache,但是在分布式场景下,单机cache会导致状态不一致的问题,除非使用集中式的cache框架;再举个例子, 后台服务器有多个节点, 把上传文件保存在单机目录下,就会导致其他机器访问不到这个文件;唯一ID生成机制,单机环境只要用原子类型自增即可,但是在分布式环境下就用ID冲突问题。类似问题很多,这里只是一个提醒。
5. DRDS表设计和分库分表非常讲究技巧, 请认真阅读DRDS的产品开发文档:
http://www.aliyun.com/product/drds/?spm=5176.383715.3.40.wEDbps