
分布式相关
文章平均质量分 92
赵泉伟
此人很懒,什么也没留下
展开
-
Redis主从复制原理总结
和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。全量同步Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:- 从服务器连接主服务器,发送SYNC命令;- 主服务器接收到SYNC命名后,开始执行BGS...原创 2020-09-10 11:40:02 · 261 阅读 · 0 评论 -
为什么数据库读写分离可以提高性能
虽然知道处理大数据量时,数据库要做读写分离,但是为什么读写分离可以提高性能呢?下面是搜来的一些解释,看看再说!一 什么是读写分离MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中 的从数据库。当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。可以看下这张图:二 ...原创 2020-09-10 10:56:53 · 1101 阅读 · 0 评论 -
mycat实战之扩容
扩容是项目投入生产之后,经过一定的数据量的积累,达到一定的量级之后,需要执行的操作。一、 离线扩容(摘自官方)工具目前从 mycat1.6 开始支持。一、准备工作1、mycat 所在环境安装 mysql 客户端程序。2、mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包。3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复。二、扩容缩容步骤1、复制 schema.xml、rule.xml 并重命名为 newSchema.xml、newRule.xml 放于原创 2020-09-10 10:40:57 · 1011 阅读 · 0 评论 -
如何保证 RocketMQ 不丢失消息
0x00. 消息的发送流程一条消息从生产到被消费,将会经历三个阶段:生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker存储阶段,消息将会存储在 Broker 端磁盘中消息阶段, Consumer 将会从 Broker 拉取消息以上任一阶段都可能会丢失消息,我们只要找到这三个阶段丢失消息原因,采用合理的办法避免丢失,就可以彻底解决消息丢失的问题。0x01. 生产阶段生产者(Producer) 通过网络发送消息给 Broker,当 Broker 收到之后.原创 2020-06-19 15:50:34 · 565 阅读 · 0 评论 -
RocketMQ原理解析
RocketMQ原理解析RocketMQ部署集群.jpg说明:1.NameServer名称服务NameServer是没有状态的,即NameServer中的Broker和topic等状态信息(通过其他角色上报获取)都是保存在内存中的,不会持久化存储(可通过配置实现),集群可以横向扩展。主要功能如下:a.接收Broker(master和slave)启动时的注册路由信息;b.为producer和consumer提供路由服务,即通过topic名字获取所有broker的路由信息;c.接...原创 2020-06-19 11:41:00 · 567 阅读 · 0 评论 -
RocketMQ的消费端负载均衡和Rebalance机制
从源码看RocketMQ的消费端负载均衡和Rebalance机制Consumer的负载均衡RocketMQ在消费端的负载均衡如下图所示,各个partition均匀分布在各个consumer上,如下图所示:所有consumer依次消费每一个partition,如果partition数量不是consumer的整数倍,则排在前面的consumer会消费更多的partition,下面可以看看consumer的实现。Rebalance的实现RocketMQ的consumer负...原创 2020-06-19 11:35:31 · 1921 阅读 · 0 评论 -
kafka原理(转载)
本文主要讲解 Kafka 是什么、Kafka 的架构包括工作流程和存储机制,以及生产者和消费者。最终大家会掌握 Kafka 中最重要的概念,分别是 Broker、Producer、Consumer、Consumer Group、Topic、Partition、Replica、Leader、Follower,这是学会和理解 Kafka 的基础和必备内容。定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用与大数据实时处理领域。消息队列Kafka原创 2020-06-16 14:37:03 · 306 阅读 · 0 评论 -
redis主从复制下哨兵模式---选举原理(转载)
一.哨兵机制任务: 有了主从复制的实现以后,如果想对主服务器进行监控,那么在redis2.6以后提供了一个"哨兵"的机制。顾名思义,哨兵的含义就是监控redis系统的运行状态。可以启动多个哨兵,去监控redis数据库的运行状态。其主要功能有两点: a、监控所有节点数据库是否在正常运行。 b、master数据库出现故障时,可以自动通过投票机制,从slave节点中选举新的master,实现将从数据库转换为主数据库的自动切换。 一个一主多从的Redis系统中,可以使用多个哨兵进行监控.原创 2020-06-15 10:04:26 · 3056 阅读 · 0 评论 -
分布式解决方案(redis缓存篇)(转载)
redis 是一个基于内存的高性能 key-value数据库支持丰富的数据类型(String,List , Set ,Sorted Set,Hash)redis中的单个value的存储限制是1G,比Memcached的1MB要强大太多哎呀,还是以问答的方式来写这篇文章吧!1.redis有什么优缺点redis是内存数据库,所以当数据量达到一定程度的时候,单机版的必然是其瓶颈所在,这个时候我们就需要引入主从复制方案,用了主从复制之后我们就会发现,主库值负责读写,从库负责读,数据量达到千...原创 2020-06-12 18:23:53 · 279 阅读 · 0 评论 -
分布式缓存redis常见问题及解决方案(转载)
一、redis和memcache有什么区别?redis是现在的企业使用最广泛缓存技术,而在redis以前memcache是一些公司最常用的缓存技术,它们比较相似,但有如下一些区别:(1)redis相对于memcache来说拥有更丰富的数据类型,可以适用更多复杂场景。(2)redis原生就是支持cluster集群模式的,但memcache没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。(3)redis使用的是单核,memcache使用的是多核,所以redis在存储小数据的时候性能比原创 2020-06-12 17:51:04 · 560 阅读 · 0 评论 -
mycat的10种分片规则(转载)
所有的分片规则配置的tableRule标签中:rule标签中的columns标签内填写要分片的表字段,algorithm标签内填写分片所使用的自定义函数名,要与function函数中的name属性保持一致function函数中的property标签内配置自定义参数。1)枚举法:sharding-by-intfile<tableRule name="sharding-by-intfile"> <rule> <columns>user_...原创 2020-06-12 16:53:25 · 181 阅读 · 0 评论 -
mycat 9066管理端口 常用命令(转载)
1、连接mycat 9066管理端口 命令:mysql -uroot -proot -P9066 -h127.0.0.1 -u:用户名 -p:密码 -P:端口 -h:ip地址例:linux路径切换到mycat安装路径的bin目录中:输入命令 显示如此则登录成功。2、显示后端物理库连接信息,包括当前连接数,端口等信息。 命令:Show@@backend 3、显示当前前端客户端连接情况 命令:Show@@connection...原创 2020-06-12 11:02:33 · 252 阅读 · 0 评论 -
Mycat之逻辑库、表分片配置(转载)
Mycat之逻辑库、表分片配置一、配置逻辑库(shcema)Mycat作为一个中间件,实现mysql协议,那么对前端应用连接来说就是一个数据库,也就是有数据的配置,mycat的数据库配置是在schema.xml中配置,配置好后映射到server.xml里面的用户就可以了。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xm原创 2020-06-12 10:58:38 · 568 阅读 · 1 评论 -
当mysql数据库主数据库down掉后,如何进行主从切换(转换)
mysql主从切换在真实的生产环境中,总会有一些意外。当企业的数据库集群有机器不幸down掉的时候,怎么把从库切换成主库呢。可以总结为如下步骤一.登录从库关闭io进程,确保relay log已被完全执行,并根据当前pos选取出下一个master。mysql -uroot -ptqw961110stop slave io_thread; #关闭io进程show processlist; #查看还有什么进程在运行。当进程运行到最后,显示Slave h...原创 2020-06-12 10:43:41 · 1153 阅读 · 0 评论 -
基于Mycat实现读写分离(转载)
随着应用的访问量并发量的增加,应用读写分离是很有必要的。当然应用要实现读写分离,首先数据库层要先做到主从配置,本人前一篇文章介绍了mysql数据库的主从配置方式即:《mysql数据库主从配置》。应用实现读写分离至少有两种方法:应用本身通过代码实现,例如基于动态数据源、AOP的原理来实现写操作时用主数据库,读操作时用从数据库。 通过中间件的方式实现,例如通过Mycat,即中间件会分析对应的SQL,写操作时会连接主数据库,读操作时连接从数据库。本篇文章是介绍通过Mycat中间件的方式实现读写分离。原创 2020-06-11 18:47:48 · 144 阅读 · 0 评论 -
MyCat学习笔记(转载)
一、MyCat简介1.什么是MyCatMyCat是目前最流行的基于Java语言编写的数据库中间件,是一个实现了MySql协议的服务器,其核心功能是分库分表。配合数据库的主从模式还可以实现读写分离。MyCat官网:http://www.mycat.io/2.使用MyCat后的架构图image.png3.使用MyCat的优势3.1数据量级单一的MySql数据存储量和操作量级有限,MyCat可以管理若干MySql数据库,可以实现数据库的存储和操作。3.2 开源性质M原创 2020-06-11 16:19:50 · 206 阅读 · 0 评论 -
Mysql进阶之Mysql-proxy的读写分离(转载)
Mysql-proxy简介:mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy...原创 2020-06-11 15:45:17 · 223 阅读 · 0 评论 -
mysql数据库主从同步的3种一致性方案实现,及优劣比较(转载)
数据主从同步的由来互联网的很多业务,特别是在高并发的场景下,基本都是读远远大于写,如果数据库读和写的压力都同在一台主机上,这显然不太合理。于是,把一台数据库主机分为单独的一台写主库(主要负责写操作),而把读的数据库压力分配给读的从库,而且读从库可以变为多台,这就是读写分离的典型场景如下:为了进一步的降低数据库端的压力(高并发的瓶颈),这个时候也会在业务层部署分布式缓存集群(redis、memcached)等,把读的压力转移给应用服务器端,其实与数据主从的设计是遵循同一个原则,降低后端数据库的...原创 2020-06-11 10:16:09 · 761 阅读 · 0 评论 -
zookeeper分布式锁原理(转载)
一、分布式锁介绍分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图解释:左边的整个区域表示一个Zookeeper集群,locker是Zookeeper的一个持久节点,node_1、node_2、node_3是locker这个持久节点下面的临时顺序节点。client_1、client_2、client_n表示多个客户端,Service表示需要互斥访问的共享资源。三原创 2020-06-10 18:30:04 · 110 阅读 · 0 评论 -
Redis官方分布式锁的实现-Redlock实现原理(转载)
前文笔者介绍了目前市面上见的比较多的Redis+lua分布式锁的实现,大概有如下三个要点:set命令要用 setkey value px milliseconds nx;保证原子性value要具有唯一性,释放锁时要验证value值,不能误解锁;解锁要使用lua脚本,也是为了保证原子性Redis官方也指出该方法有安全隐患就是在主从复制模式下会导致两个线程可能会同时持有一个锁,如果业务允许如此,则推荐使用这种方案,毕竟实现简单,易维护。如果对锁的要求非常高的场景,Redis官方建议使用RedLoc原创 2020-06-10 17:16:10 · 412 阅读 · 1 评论 -
Fescar分布式事务实现原理解析探秘(转载)
fescar的TXC模型上图为fescar官方针对TXC模型制作的示意图。不得不说大厂的图制作的真的不错,结合示意图我们可以看到TXC实现的全貌。TXC的实现通过三个组件来完成。也就是上图的三个深黄色部分,其作用如下,:TM:全局事务管理器,在标注开启fescar分布式事务的服务端开启,并将全局事务发送到TC事务控制端管理 TC:事务控制中心,控制全局事务的提交或者回滚。这个组件需要独立部署维护,目前只支持单机版本,后续迭代计划会有集群版本 RM:资源管理器,主要负责分支事务的上报,本地事务原创 2020-06-10 15:46:05 · 175 阅读 · 0 评论 -
RocketMQ 事务机制的实现流程(转载)
深入探究 RocketMQ 事务机制的实现流程,为什么它能做到发送消息零丢失?消息丢失的第一个问题:订单系统推送消息领丢失既然我们已经明确了消息在基于MQ传输的过程中可能丢失的几个地方,那么我们接着就得一步一步考虑如何去解决各个环节丢失消息的问题,首先要解决的第一个问题,就是订单系统推送消息到MQ的过程中,可能消息就丢失了。之前我们也说过了,可能在订单系统推送消息到MQ的过程中,就因为常见的网络故障之类的问题,导致消息就丢失了,这里我们可以看一下下图中的示意。而在RocketMQ中.原创 2020-06-09 17:21:33 · 510 阅读 · 0 评论 -
分布式事务解决方案(转载)
5种分布式事务解决方案优缺点对比背景分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。ACID指数据库事务正确执行的四个基本要素:原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)CAPCAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍.原创 2020-06-09 17:19:59 · 211 阅读 · 0 评论