业务系统的近实时数据同步

业务系统的近实时数据同步,最常见的方式是通过数据库单向或者双向同步的方式增量实时进行,说句实话,个人感觉,双向方式还不错,单向方式就不太好说。
 
这取决于怎么定位同步?
 
从逻辑角度,我个人倾向定位于两个互不相关的同构系统在运行过程中的数据同步,每个系统只负责自己的数据更新,两个系统的同步由专门的模块负责,比如数据库同步,或者专门的同步服务。(这里想提一下Erlang编程语言,它的设计思路给了我很多启示。)双向同步碰到的最大问题,是两个系统信息之间的数据对应的问题。在不同的同步解决方案中,有不同的解决方式。由于个人对数据库同步不感冒,还是倾向于基于消息方式的同步概念,这就要求这种方式也要解决这个问题。
 
前天终于想明白这个是可以做到的,而且是两者之间可以唯一确定的。其实说穿了,也蛮简单的,最后的解决方案,有点类似于SSO的用户标识对应的方法,挺搞笑的。由此可见,只要面对类似的问题,基于相同的逻辑思维,必然得出近似的结论。
 
注:Erlang属于一种纯消息传递语言——即一种基于独立性很强的并行进程的语言,我们的编程模型广泛使用了速错(fail-fast)进程。这项技术在构建可容错系统的硬件平台中被普遍使用,但是在软件设计方面却用得不多。这主要是因为传统的编程语言并不允许不同的软件模块以彼此互不干扰的方式存在。当前普遍使用的是多线程的编程模型,该模型中资源是共享的,这样就造成了线程很难真正隔离起来,就可能导致一个线程中的错误会传播到另一个线程中,这就破坏了系统内部的坚固性。
Erlang的世界观可以归纳为如下的一些观念:
􀁺 一切皆进程。
􀁺 进程强隔离。
􀁺 进程的生成和销毁都是轻量的操作。
􀁺 消息传递是进程交互的唯一方式。(这里蛮有意思的)
􀁺 每个进程有其独有的名字。
􀁺 你若知道进程的名字,你就可以给它发消息。
􀁺 进程之间不共享资源。
􀁺 错误处理非本地化。
􀁺 进程要么好好跑,要么死翘翘。
Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s