根据我们多年的大型网站建设项目经验,在这里讨论一下如何通过克隆和复制,拆分功能或服务以及把相似的数据集分布到存储和应用系统中,从而扩展数据库和服务。只要利用这三种方法,几乎任何系统或数据库都可以无限扩展。
1. 在大型网站建设项目中,通过克隆和读写分离进行横向扩展。无论是关系型数据库还是NoSql数据库该方法都适用。主要方法是为原来单一的数据库组建读写分离集群,由一台中心写数据库和多台只读副本组成,由中心写数据库对只读副本进行内容分发和同步,尽量保证副本之间的数据一致。这样做的好处是解决了在网站高并发情况下出现的数据库锁争抢问题,适用于读操作远远大于写操作数量的应用。但是缺点是成本过高,毕竟每个只读副本都是一套完整的数据库系统,再者就是副本之间不可能做到完全地实时同步,副本之间可能存在数据差异。
2. 通过拆分不同的服务进行横向扩展。把完整的业务逻辑按照动词进行拆分,比如将用户登录/注册服务单独拆分出来做成独立的服务。或者将访问量特别大的服务独立出来,这是最传统也是最直接解决系统负载的方法,而且每个服务又可以进行横向扩展,因此,从理论利用上该方法可以做到无限扩展以支撑趋于无穷大的业务和数据增长。但是缺点就是网站建设人员的工作量增大了很多,因为这样的服务拆分是基于程序架构上的拆分,需要改变程序架构,而且各个服务之间的协调会变得复杂很多,也对后期的系统维护增加了很多成本。
3. 通过拆分相近的东西进行纵向扩展。通常拆分的是数据集。例如把注册用户划分的到专用独立数据片或泳道中。这样主要是解决了系统IO上的性能瓶颈,因为不同的数据片可以处于不同的物理存储设备上,例如不同的分区,不同的磁盘,甚至不同的服务器上,也就是为拆分出来的数据集建立了独立的硬件资源。缺点就是网站建设的开发成本提高了,程序员必须对拆分出来的数据片进行独立访问,甚至是独立的服务,而且这种拆分往往在网站建设的初期或需求分析时很难精准识别,一般只能在后期改造里完成,大家都知道开发时和维护时做的同一样事情成本相差甚远。
很多网站建设人员在构建大型网站建设项目时,把大多数精力和时间都放在了前端网站设计和业务逻辑上,对于网站后期的业务激增和稳定性上没有过多的关注。而且,网站建设时不要一味的使用关系型数据库,毕竟RDBMS只能解决RDBMS可能解决的问题,对于不怎么依赖关系和读操作远远大于写操作数量的应用可以考虑使用NoSql方案解决。
高端网站建设
建站咨询热线
15853531888