您好,登录后才能下订单哦!
这篇文章主要讲解了“数据库分布式系统设计策略是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库分布式系统设计策略是什么”吧!
分布式系统本质是通过低廉的硬件攒在一起以获得更好的吞吐量、性能以及可用性等。
在分布式环境下,有几个问题是普遍关心的,我们称之为设计策略 :
如何检测当前节点还活着?
如何保障高可用?
容错处理
在分布式环境中,存在非常多的节点(Node),由这些节点分担任务的运行、计算或程序逻 辑处理。那么就有一个非常重要的问题,如何判断一个节点是否出现了故障甚至无法工作了?
心跳检测:以固定的频率向其他节点汇报当前节点状态,的一种检测节点是否正常工作的方式。
若Server没有收到Node3的心跳时,Server认为Node3失联。但是失去联系时,并不确定是否是Node3故 障,有可能是Node3处于繁忙状态,导致调用检测超时;也有可能是Server与Node3之间链路出现故障或闪断。
所以心跳不是万能的,收到心跳可以确认节点正常,但是收不到心跳也不能认为该节点就已经宣告“死亡”。 为了解决这种情况引入了:周期检测心跳机制、累计失效检测机制。
周期检测心跳机制:Server端每间隔 t 秒向Node集群发起监测请求,设定超时时间,如果超过超时时间,则判断“死亡”。
累计失效检测机制:在周期检测心跳机制的基础上,统计一定周期内节点的返回情况(包括超时及正确返回),以此计算节点的“死亡”概率。另外,对于宣告“濒临死亡”的节点可以发起有限次数的重试,以作进一步判断。通过周期检测心跳机制、累计失效检测机制可以帮助判断节点是否“死亡”,如果判断“死亡”,可以把该节点踢出集群。
高可用设计:一个系统在长时间内能否对外提供可用的服务。
系统高可用性的常用设计模式包括三种:主备(Master-SLave)、互备(Active-Active)和集群(Cluster)模 式。
主备模式就是Active-Standby模式,当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动(热备)或手动(冷备)方式将服务切换到主机上运行。
以数据库为例:在数据库部分称之为MS模式。MS模式即Master/Slave模式,这在数据库高可用性方案中比较常用,如MySQL、Redis等就采用MS模式实现主从复制。保证高可用,如图所示。
一台MySQL数据库一旦启用二进制日志后,作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。
互备模式指两台主机同时运行各自的服务工作且相互监测情况
在数据库高可用部分,常见的互备是MM模式。MM模式即Multi-Master模式,指一个系统存在多个master,每个master都具有read-write能力,会根据时间戳或业务逻辑合并版本。
集群模式是指有多个节点在运行,同时可以通过主控节点分担服务请求。如Zookeeper。集群模式需要解决主控节点本身的高可用问题,一般采用主备模式。
容错性表示一个系统是否具有安全性、稳定性、健壮性;对错误的包容能力。
以缓存穿透为例:
在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据 库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,或者有人恶意攻击就会有麻烦了。
一个比较巧妙的解决方法是,可以将这个不存在的key预先设定一个值。比如,key=“null”,写入缓存。即查询这个key的时候直接返回null就行,但注意需要设置失效时间,否则数据存在时也返回null就不对了。
负载均衡:其关键在于使用多台集群服务器共同分担计算任务,把网络请求及计算分配到集群可用的不同服务器节 点上,从而达到高可用性及较好的用户操作体验。
负载均衡分为:硬负载(硬件解决如:F5)、软负载(软件解决:LVS、HAProxy、Nginx)。
以Nginx为例,常见的负载均衡策略有:
轮询:根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器。
最少连接:当前谁连接最少,分发给谁。
ip地址hash:确定相同IP请求可以转发给同一个后端节点处理,以方便session保持。
基于权重的负载均衡:配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器。
感谢各位的阅读,以上就是“数据库分布式系统设计策略是什么”的内容了,经过本文的学习后,相信大家对数据库分布式系统设计策略是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。