可追溯
我走过必将留下痕迹 这是一个成熟系统的基本要求,尤其是在同步这种只有后台的系统里面,最麻烦、最牵扯精力的事情就是维护相关的问题
易维护
消息的幂等性
消息的幂等性是消息相关系统的基本要求,因为几乎所有的jms实现都是只保证消息投递但不保证只有一次消息易触发
这个还是维护相关的原因,易于触发,可以解决大量的运营问题,如上游系统的变更没有告知下游,需要补充同步;巨量消息变更,需要暂时忽略,之后慢慢来完成全量的同步;等等
性能
系统本身性能
这个是永恒追求,无需多言外部依赖系统性能
扩展性--线性扩展
设计上来说到这个程度来说基本就足够用了,当然在系统规模足够大后,可以追求更好的设计来降低资源的使用,虽然大部分的人是接触不到这个东西,这个绝对是全面的变革才能达到的标准越简洁,越高效
一个系统的维护不仅仅在使用的资源(各种硬件),相对更重要的是维护这些系统的人员,尤其是持续维护的系统必然面对人员的变动,所以越简洁越高效常见瓶颈
有序消息的处理,为了保证消息的顺序,通常要单线程来处理,而此处往往是瓶颈所在;通常解决这种情况的方法就是在单线程中尽量封装较少的逻辑,然后将消息发送到能够按照domain id来分发到多queue的jms里面来是实现多并发
过滤瓶颈 同步源的数据量是同步目标的100倍以上,入口每个变更需要一次过滤,当入库的数据量大到一定程度后,整个过程中过滤哪些变更是目标系统关心的变更是个问题,目前尚没有高效的方案,TODO,以后有方案了再这里补充
等等等等
抛砖引玉,胡言乱语
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。