首页 > 教育培训

架构师必备mysql主从延迟解决办法 web端常用架构?

web端常用架构?

首先,单数据库架构

单db架构一般是nginx直接请求上游到后端tomcat。扩容的时候基本就是添加新的tomcat实例,然后通过ngin衡上游。这个时候数据库不是瓶颈,但是当访问量达到一定程度的时候,过了关卡,数据库的压力就上来了,单个数据库可能承受不了。可以通过划分表和数据库或者读写分离、添加缓存来解决。

二、db缓存/数据库读写分离架构

架构师必备mysql主从延迟解决办法 web端常用架构?

这时就用数据库读写分离或者redis缓存来支持更多的访问。但是使用缓存会与数据库数据不一致,或者redis无法直接命中数据库,造成数据库压力过大。可以考虑使用redis的主从或者使用。基于一致哈希算法的redis聚类。使用这种缓存架构,应用程序对数据一致性的要求不是很高。

三、openresty本地redismysql集群架构

openresty首先通过lua读取本地redis缓存。如果失败,它返回到后端tomcat集群,后端tomcat集群读取mysql数据库。redis和openresty安装在同一个服务器上。openresty可以通过直接从本机读取来减少网络延迟。redis通过主从模式同步数据。

四。openrestyredis集群的mysql集群架构

此时的架构与之前的架构不同。此时我们使用一致哈希算法实现redis集群,而不是读取本地redis,这样可以保证当其中一个不可用时,只丢失一点点数据,防止其渗透到数据库中。redis集群分片可以使用twemp。roxy如果tomcat实例很多,就要考虑redis和mysql之间的链接数量,因为大部分redis/mysql客户端都是通过连接池实现的,这个时候链接数量就会成为瓶颈。一般的方法是通过中间件减少环节。

这时候的问题是twemproxy的实例比较多,应用的维护和配置比较困难,需要平衡其上的负债。例如,通过lvs/haproxy实现vip(虚拟ip),切换可以对应用透明,故障可以自动转移。你也可以实现一个内部网dns做它的负载平衡。

rabbitmq如何通过持久化保证消息99.99%不丢失?

在单个服务器的情况下,如果打开了消息持久性并且客户端采用确认模式,它仍然可能会丢失。这是因为主设备在接收到消息并将其存储在文件中后,会向客户端发送ack。关键问题是它存储在一个文件中,只写入磁盘缓存,需要执行。行fsync实际上将被写入磁盘。如果它在fsync之前关闭,消息仍然会丢失。如果你写文件时立即设置fsync,你就赢了不会丢失消息,但是性能会差很多倍。

在集群的情况下,将ha-mode设置为all,所有镜像节点同步到消息,然后主节点将响应ack到客户端。然后,包括主节点在内的所有节点需要同时停机,因此有可能丢失消息。所以原因只有一个。在丢失的消息上,可靠性达到99.999。...

消息集群数据库redis实例

原文标题:架构师必备mysql主从延迟解决办法 web端常用架构?,如若转载,请注明出处:https://www.suhaipipe.com/tag/16355.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「蓝鲸百科」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。