现行web架构学习讨论
大量采用数据库集群是一个显著特点,其优势显而易见,但劣势却少听人谈起。
数据库厂商是重要推动力,但数据库集群的应用可扩展性一般都比较差,一般的web构架,应用,数据两部分生硬分离。有些数据库集群对外提供统一接口,然后把数据访问定向到合适的具体数据库。优点是可以无缝维护,比如动态增删数据库服务管理等。但很多业务不得不远程访问数据库,因为所需要的数据库可能在异地的数据库集群下。就算尽力把数据库服务器靠近相应的业务服务器,由于业务与数据分离的架构,数据库集群缺乏足够应用可扩展性,实际效果也不一定好。
完美的数据访问应该是特定业务和特定数据融合的方式,业务应该包括数据,而不是笼统的一定要分开。业务和数据具有天然的聚合性质。业务之间的关联才需要数据的网络流动。当然,这只是数据的地理利用方式。数据管理可以保留统一的平台。
比如登陆,山东的登陆业务和山东的用户数据应该在同一服务器或者服务器集群中,河北的在另一集群中。如果出现跨地区业务。比如山东用户和河北用户交易。首先发生的,不是把数据放到统一的数据库中,而是首先业务层次的互动,数据的流向应该跟业务是同步的,山东的业务如果需要河北的数据,那么数据可以被拷贝到山东的服务器。换句话说,数据的同步不是数据库的同步,而是业务的数据同步。数据同步是业务动作的从属。