我现在的业务场景是这样的,有点类似房天下或者链家网站,在全国多个城市有分支机构,总公司在北京,总公司主要管理用户信息以及用户积分信息,而各城市主要管理业务数据,各分支机构业务数据独立,互不干涉。但当总公司管理的用户访问各城市分支机构的业务数据时,总公司用户的积分会发生变化,也就是说,总公司的用户数据与各分支机构的业务数据发生交互,但各分支机构的业务数据是独立的。我现在的问题是:
如果考虑总公司与各分支机构都单独配置Web服务器与数据库服务器,那么当总公司数据的用户访问任何一个分支机构的业务数据时,总公司用户数据如何与分支机构业务数据进行交互?同步机制如何实现?
烦请有过此类业务场景经验的大咖详细赐教,不胜感激!
按照时间戳定时同步数据到总公司呗
定时同步可能无法满足实际的业务需求。最好能在用户访问分支机构的同时,立即出发总公司数据库中用户的积分更新。触发器能做到这个,但如果是远程数据库,使用触发器不是很好的做法。
@wangchao: 立即的话就定时30秒执行就差不多了吧,你要是想很快,那就只能用触发器了
@刘宏玺: 如果采用分布式数据库架构的话,同步机制肯定是要考虑的,但这个是后面的事情。我现在需要了解的是数据库架构,当然同步也是要考虑的,但这个是后面的事情。不过还是谢谢你了。
分支机构数据到总部 数据你要主动同步还是被动同步?
主动同步还是被动同步都没关系,我需要了解数据库架构,以及具体的同步机制。
@wangchao:
主动同步,按照一定策略 比如固定时间,或者实时。分支机构调用总公司接口。更新数据
被动同步。总公司调用分支机构接口获取最新数据。传递分支机构在总公司最后更新时间戳
不至于把所有系统放在分公司吧,我们那么多分公司 也就一个总部web平台,其他分公司访问,web的作用不就是不同地方快速访问嘛
假如你对网络要求很高,那就部署专门的代理服务器啊,或者分公司使用VPN都行
如果只是总公司与分公司之间的访问,采用VPN是可行的,但我这边是外部用户访问总公司和分公司,而且总公司与分公司之间也有数据交互,所以单纯的VPN还是解决不了问题。另外,我这边用户是分布在全国各个城市,考虑到地域对网络环境的影响,因此,服务器最好还是采用分布式部署的方式,放在一个城市,感觉会受网络环境的影响。