SOA与REST关系

REST是实现SOA的一种技术手段
比如服务与服务之间的通信采用REST接口。
但其实服务与服务之间通信不仅是可以REST,同时可以用消息队列,分发器,soap等等
更具体的是,SOA代表一种战略意图,REST是实现战略意图的一种战术

有一些不得不吐槽的

新技术真的好么,我并不觉得,至少我所在的层级很不喜欢各种新技术
我原来从来没用过MyBatis,总听说多好多好,但是在绝大部分场景下,都不如我直接用spring jdbc template来的方便,它那套orm转换预设了太多假设,为了解决那一堆不符合假设的场景又发明一堆概念。

比方说一个很简单的例子:

  • 我的数据库的时间字段是varchar类型保存的,那么我用Spring jdbc大概会需要对一个表对象写大约二十行的代码做orm转换。
  • 但是我用Mybatis也不见得少几行,特别是用xml写sql的时候还要自己指定Handler来做转换。
  • 有一点更不方便,项目大部分都采用spring做对象管理,当基础包和上层应用都用spring管理了,而基础包却依赖了某个特定的spring配置项,然后大家就呵呵了

其实最中心想吐槽的应该是,基础包应该尽可能的少依赖外部,或者说自有配置应该打包输出并封装在自己的项目,不要和上层应用发生耦合,会造成各种的不舒服.

数据同步

网络传输的数据结构要点:

要能区分出数据来源

要能区分数据新旧

要能分辨数据正确性

除了对数据结构的直接操作,其他都应该是外部组件

数据状态

正常

过旧

冲突(定义为异常状态需要使用者自己处理)

以上抽象成Condition

可能的复杂点

多数据冲突同一个数据,组件不解决,应该由业务处理

组件需要保证每次同步都将会是原子操作,故而多线程并发会是难点

尽可能使的组件易于扩展(尽量用接口编程)