数据库是整个业务系统的底座,所有系统(应用程序)最终的数据都会以持久化的方式存储在数据库中。随着云计算的发展,越来越多的企业选择使用弹性伸缩、按量付费的云服务的方式部署和管理的业务系统,业务上云首先是要数据库上云,将自己已有的存量数据搬迁到云上,并在云上选购符合自己要求、cp值高的数据库产品和架构,本文以关系型数据库为例,讲解如何从性能和安全方面入手,在云上选择对应的产品和架构,实现性能和安全性的有效结合。
方案一:主备架构———-侧重安全,数据库的高可用性
应用服务器对应的后端数据库部署为一主一备的高可用架构,其中日常的读写请求都是由主库(M)来处理,备库(S)通过同步链路将主库的数据进行实时同步,并不是双活的场景,此时备库不可用,性能上并不能产生优化的效果,主要是从数据库的高可用、容灾性角度考虑,一般适用于对数据安全性要求比较高的严肃企业场景如电商、游戏等行业。
上云后可以直接采购阿里云云数据库RDS高可用版(三节点可一主两从)即可,无需用户自建备库,无需自己进行数据同步链路的构建和管理。
方案二:主从架构——侧重性能,提高数据库的读性能,缓解主数据库的压力
我们知道,数据库的大部分请求都是读请求,对于主库而言,大量的数据写入之后,主要面临的并发压力是读的流量,为了缓解数据库的压力,采取读写分离的方式,新建只读节点(从库),通过设置读写策略,将写请求和一部分的读请求交给主库,大部分的读请求交给从库,保证了主库处理正常业务请求的能力,同时保证用户的查询和读的效率,提高了数据库的整体性能和并发能力。
此时,注意的是主从架构相对主备架构,不同在于:从库是实时运行可以提供服务的,从库中的数据可以被前端应用实时获取到,因此对于主从架构,需要注意的是保障主从库之间的数据一致性尤其重要,否则会影响用户实际查询数据的可靠性。而主备架构中的备库,数据虽然和主库是一样的,但是由于不是在线实时提供服务,只能在从库发生故障后启用,所以备库一般不讨论数据一致性的问题。
(简单理解,一个是单活(主备架构),一个是多活(主从架构))
方案三:双主(多主)架构——提高用户体验
一个系统(网站)的用户往往分布的地理范围很广,所处的网络环境和使用条件也不相同,为了保障各个不同位置的用户都可以使用到流畅稳定的数据库服务,企业选择在不同地域(国家、城市)部署多个数据库,这几个数据库都是主库,都可以进行读写,并且在实际过程中要求不同的主库之间需要保证数据的一致性,一个主库宕机,另一个主库根据已有的数据可以继续提供服务,因为是多个数据库同时分担读写压力,所以性能和安全性都更好,但是对于数据一致性要求极高。
方案四:双主+主从架构
双活场景(2个主库)以及主库对应的备库,对于性能和安全满足更高的要求。一般2个高可用架构会单独部署在独立的地域下,各自地域下的主备架构保障了当前地域下数据的安全性,适用于金融场景下的三地五中心等。但是对数据同步一致性和访问延迟要求会更高。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/notes/178832.html