MySQL 数据库事务与复制 好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类。 结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术。 为了更有效率与效果的用好技术,我们需要了解一些技术的原理与工作方式。 带着问题从使用者的角度去剖析技术原理,并将开源
Rsync同步算法 rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。rsync利用由澳洲电脑程式师Andrew Tridgell发明的算法。这里不介绍其使用方法,
Bitcast存储引擎特性 Bitcast存储引擎:由一棵hash tree在内存中管理全量的key,根据key可以获取value在磁盘文件上面的postion,进一步获取value本身的值。写入流程比较简单,顺序写一次磁盘文件,更新hash tree;读取也比较简单,根据key从内存的hash tree中获取value在磁盘上面的位置,然后读取磁盘即可。 数据文件也有像LevelDb数据归并的过程,其过程都是类似于red
LevelDb实现原理 引言 LevelDb本质上是一套存储系统以及在这套存储系统上提供的一些操作接口。为了便于理解LevelDB的存储结构以及工作流程,我们可以从两个不同的角度来分析一下LevleDb的原理:静态角度和动态角度。静态角度:主要了解系统如何对数据进行存储的,其数据是如何组织管理的;动态角度,主要是了解系统是如何对数据进行操作的,其操作流程是怎么回事,系统是如何运转起来的。LevelDb整体架构及其存储
结合Wireshark分析DNS 协议 摘要: 本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析。一、概述1.1 DNS 识别主机有两种方式:主机名、IP地址。前者便于记忆(如www.yahoo.com),但路由器很难处理(主机名长度不定);后者定长、有层次结构,便于路由器处理,但难以记忆。折中的办法
Base64编码规则 Base64编码规则是一种用64个字符来表示任意二进制数据的方法。 平时用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。Base64的原理很简单: 1. 首先,准备一个包含64个字符的数组
Kafka消息队列实现业务端确认的方案 参考TCP协议滑动窗口的方式,实现业务端消息的确认;需要自己维护消费到的位置。 根据Kafka消息队列的两个特性: 1. 每个分区的消息只能被一个消费者消费。 2. 每个分区中消息offset是有序递增的。 每个分区在内存中维护一个相对应的滑动窗口,消息的offset为其序列号;只有小于序列号SEQ1的所有消息都被正确处理,才更新消费位置,并把窗口往后滑动。
Kafka跨集群同步工具——MirrorMaker MirrorMaker是为解决Kafka跨集群同步、创建镜像集群而存在的;下图展示了其工作原理。该工具消费源集群消息然后将数据重新推送到目标集群。MirrorMaker使用方式 启动mirror-maker程序需要一个或多个consumer配置文件、一个producer配置文件是必须的其他参数是可选的。 kafka-run-class.sh kafka.tools.MirrorMaker
Golang RPC调用例子程序(实现超时机制) package mainimport ( "fmt" "log" "net" "net/rpc" "time")func main() { log.SetFlags(log.Lshortfile | log.Lmicroseconds) log.Println("=======begin====== ") testRpc() ti
kafka配置文件说明 - server.properties server.properties中所有配置参数说明(解释)如下列表: 参数 说明(解释) broker.id =0 每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况 log.dirs=/data/kafka-logs kafka数据的存放地址,多个地址的话用逗号分割 /data/kafk
运行中的处理器所处的三种状态--写在2016年最后一贴 做应用层开发的这图都应该看过很多遍了。 1. 最底层是硬件层支撑所有软件层的运行以及特定功能的实现;像CPU、内存、鼠标、键盘、硬盘、光驱、网卡等等。 2. 在硬件之上的是设备驱动程序,用于驱动硬件设备;这一层相当于硬件对应的软件实现。 3. 再往上是操作系统内核层这是操作系统的最核心的部分。通常内核层会实现一套框架便于硬件驱动层的扩展,驱动层可以动态加载与删除;不然插个U盘、放个摄像头重启一
Mysql 设置所有机器都可访问 GRANT ALL PRIVILEGES ON . TO ‘user’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION; FLUSH PRIVILEGES; 设置用户名为:user,密码为:password的账号可能通过任意一台机器访问数据库
Kafka——性能逆天的存在 Kafka——性能逆天的存在(by 刘延允,2016-12-17)0、引言Kafka是LinkedIn开源出来的一款消息服务器,用scala语言实现;这货的性能是百万级的QPS(估计是挂载了多块磁盘),我随便写个测试程序就是十万级。1、Kafka基本概念在Kafka中消息是按照Topic进行分类的;每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理
最简单的Redis客户端实现——Golang 使用Golang分析Redis协议,实现一个简单客户端;使用方法简单,Connect完成后直接Write、Read进行操作,或者使用Cmd。可有助于理解Redis协议,其实挺简单的。package redisimport ( "bufio" "errors" "fmt" "io" "net" "strconv" "time")const (
Go语言string与[]byte类型转化避免拷贝 在Go语言中string类型与[]byte强制类型转化的是后会发生内存拷贝,这是由于这两种类型的特性所决定的; string类型是不允许修改内容,[]byte是可以修改的。下面提供两个函数使用时不会发生内存拷贝吗,但是使用过程中药慎重,确保不会修改底层内容,否则很大可能会导致程序异常import ( "reflect" "unsafe")func String(b []by
Binglog格式与主从复制——Mysql 一Mysql Binlog协议格式二主从复制各种文件偏移量说明三通过Binlog恢复数据四通过Relay log恢复数据一个Binlog格式文件,前四个字节是:0xfe62696e;对应0xfe、’b’、’i’、’n’,这是雷打不动的公理。后面是一系列的Binlog Event,每个Event包括Header与Data两部分。Mysql这帮人跟我们一样俗,定义一个消息先定个头、再定一个消息体
RedisProxy 系统设计与使用说明 RedisCloud是一套基于GO语言实现的Redis分布式解决方案, 对于使用方来说, 使用RedisCloud与使用原生的 RedisServer 没有区别 (有些Redis原生命令在RedisCloud作为命令黑名单不予支持), 上层应用可以像使用单机的 Redis 一样使用多个Redis服务器;RedisCloud会处理请求的转发, 在线扩容、缩容, 以及Redis服务器的主备故障切换等工
GO-log日志封装 Go封装日志: 支持归档输出,一个小时压缩归档一份最多保留三天的日志支持日志级别自定义如果没有指定输出文件默认输出到控制台。支持输出文件名行号,以及时间、日志界别 如: info 10:08:40.826836 handler.go:81 package loggerimport ( "fmt" "log" "os" "os/exec"
mysqldump 使用方法参数说明 常用用法导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql导出数据库结构(不含数据) mysqldump -u username -p -d dbname > dbname.sql导出数据库中的某张数据表(包含数据) mysqldump -u username -p dbname tablename > ta
基于MYSQL的Binlog增量数据同步服务 系统工作原理 基于MYSQL日志增量数据同步原理: - 1、DBAsync伪装自己为mysql slave,向mysql master发送dump协议 - 2、mysql master收到dump请求,开始推送binary log给DBAsync - 3、DBAsync解析binary log,将数据改动同步到下游(MQ、DB…)DBAsync工作流程 工作流程: - 1、启动解析配置文