公司有一个项目比较有意思,把社区分布在不同的区域,或不同的国家来运营,但是对于用户而言,只需要在这些社区中注册一次用户的信息,就可以用这一个帐号登陆到不同区域的社区,也就是要达到一站式登陆的功能,如果只是在一个系统或服务器上那也好办,可以用SSO来实际单点登陆,但是现在的社区的用户信息是存在本地的,如何实现用户统一登陆,至少需要用户的数据统一存放吧。讨论下来总结了有三种方案,一个是以Data Center方案,一个是数据同步组件,一个是MSMQ来实现数据同步,考虑的方面包括,运行的效率,数据量大并发的问题,安全性的问题等,最终大家认同用统一的数据中心来实现,但这样一来,如何解决数据量大的问题呢?把数据服务器分片区来处理量大和并发,这个听起来不错,这样不至少于用户的数据量放在一个DB SERVER上,可以提高并发请求数,而且可以通过表发区来解决量大的问题,当这样一来的话,就要花更多的钱来购买服务器硬件,如果有5个区域的话,就用5个用户信息数据服务器,再加上一个数据服务器对应一个备份就是10台,这个投资不少。我个人更同意用MSMQ,首选,MSMQ可以基于HTTP来同步数据,而且可以触发式来读取数据,完全可以把数据库放在局域网内部,相对的安全,而且可以对MSMQ持久化,保证用户信息的完整统一,而不至于数据中心会当机带来的问题。
一切听起来也不错,但这个开发成本可以会高些,要考虑网站系统本身的并发,还要去考虑MSMQ同步的并发和效率。
BOSS发话,用成本来核算,不如用开发人力成本来购买服务器硬件,这样维护简单,而也也可以重用到其它的项目击者上。
对于公司来说一切都要考虑商业成本,这的确是一条铁记,技术人员可能考虑的更多的是技术的实现和系统本身的问题,而忽略了运作成本。