twemproxy分片处理原理--剖析twemproxy代码正编 twemproxy在redis上能处理多命令流程只有mset,mget,del的命令,例如mset的话是mset k1 v1 k2 v2 k3 k3,mget的话是mget k1 k2 k3,del的话是del k1 k2 k3。twemproxy在memcache上能处理多命令流程只有get\gets命令,例如get的话是get k1 k2 k3但是由于twemproxy是redi...
网络故障模拟,cpu高压以及docker中的实现 利用tc进行丢包通过网络丢包来模拟网络故障,是测试中一个重要的测试项目。这对服务来说可以测试其在网络故障时的异常处理的能力,对于服务的可靠性是一个相当严苛的测试。网卡名为$netcard,丢包率为$Packet_loss,异常时间为$interval1.注入网络异常,使用robot framework关键字实现通过ssh命令执行tc qdisc add dev $netcard ...
twemproxyMemcache协议解析探索——剖析twemproxy代码正编补充 memcache是一种和redis类似的高速缓存服务器,但是memcache只提供键值对这种简单的存储方式,相对于redis支持的存储方式多样化,memcache就比较简单了。memcache通过tcp或者udp连接来实现memcache客户端和服务端的交互。memcache的协议是自定的,也分为两种:一种是文本协议(这是我们今天讨论的重点),另一种是二进制协议(在我们今天讨论的范围),...
robot framework的使用说明 robot framework安装说明1.安装python2.7.15运行安装包python-2.7.15.amd64.msi2.robot framework(1)解压最新的压缩包如robotframerwork-3.0.4.tar.gz到python安装目录如C:\Python2.7(2)进入robotframerwork-3.0.4,键入命令python setup.py in...
我眼中的robot framework 由于近期公司需要,需要一个测试框架对于公司的服务做自动化测试。由于服务的复杂性,人工测试的方式越来越复杂,体现在以下方面:1.人工测试步骤复杂,容易出错。服务的复杂性会使人工测试的准备工作,测试条件以及测试反馈都越来越复杂。2.人工测试难以重复。随着产品的迭代越来越快,人工测试需要不断重复测试,此时人力投入成本很高。自动化测试框架优点1.测试步骤自动化,不像...
twemproxy代理主干流程——剖析twemproxy代码正编 在twemproxy的发送和接收流程剖析中,我们已经完全弄清楚twemproxy如何将客户端以及服务端发来的包切分成msg,获得一个独立的msg后twemproxy应该如何处理?这是本文这次需要重点介绍的内容。twemproxy的主干流程图1 twemproxy的主干流程如图1所示,twemproxy主要通过3个队列进行模块间的数据交互:客户端连接conn的发送队列...
twemproxy发送流程探索——剖析twemproxy代码正编 本文想要完成对twemproxy发送流程——msg_send的探索,对于twemproxy发送流程的数据结构已经在《twemproxy接收流程探索——剖析twemproxy代码正编》介绍过了,msg_send和msg_recv的流程大致类似。请在阅读代码时,查看注释,英文注释是作者对它的代码的注解,中文注释是我自己的感悟。函数msg_send 1 rstatus_t 2 ...
Leetcode 494 Target Sum 动态规划 背包+滚动数据 这是一道水题,作为没有货的水货楼主如是说。题意:已知一个数组nums{a1,a2,a3,.....,an}(其中0<ai <=1000(1<=k<=n, n<=20))和一个数S c1a1c2a2c3a3......cnan = S, 其中ci(1<=i<=n)可以在加号和减号之中任选。 求有多少种{c1...
twemproxy接收流程探索——剖析twemproxy代码正编 本文旨在帮助大家探索出twemproxy接收流程的代码逻辑框架,有些具体的实现需要我们在未来抽空去探索或者大家自行探索。在这篇文章开始前,大家要做好一个小小的心理准备,由于twemproxy代码是一份优秀的c语言代码,为此,在twemproxy的代码中会大篇幅使用c指针。但是不论是普通类型的指针还是函数指针,都可以让我们这些c语言使用者大饱眼福,生出一种“原来还可以这样写!!!”的快感。...
twemproxy架构分析——剖析twemproxy代码前编 twemproxy背景在业务量剧增的今天,单台高速缓存服务器已经无法满足业务的需求, 而相较于大容量SSD数据存储方案,缓存具备速度和成本优势,但也存在数据安全性的挑战。为此搭建一个高速缓存服务器集群来进行分布式存储是十分必要的。目前主流的高速缓存服务器是redis和memchache。而twemproxy是支持memcached和redis协议的轻量级代理中间件,能用于高...
twemproxyRedis协议解析探索——剖析twemproxy代码正编 这篇文章会对twemproxyRedis协议解析代码部分进行一番简单的分析,同时给出twemproxy目前支持的所有Redis命令。在这篇文章开始前,我想大家去简单地理解一下有限状态机,当然不理解也是没有问题的,有限状态机仅仅能帮助我们更好地理解twemproxyRedis协议解析代码部分。redis 协议这边我们首先需要简单介绍一下redis协议。参考自https://r...
twemproxy代码框架概述——剖析twemproxy代码前编 本篇将去探索twemproxy源码的主干流程,想来对于想要开始啃这份优秀源码生肉的童鞋会有不小的帮助。这里我们首先要找到twemproxy正确的打开方式——twemproxy的文件结构,接着介绍twemproxy程序代码框架,最后介绍twemproxy程序的主干流程。主干流程是本章节的重中之重。这次主要是为了能将这份代码较为复杂的流程进行一些简单的模块分解和流程分解,以方便我们后面的阅...
mysql交互协议解析——mysql包基础数据、mysql包基本格式 mysql交互协议是开发mysql周边组件常用的协议,如JDBC,libmysql等等。在此我们要认识到mysql交互协议其实是半双工的交互协议,至于为什么,这里就先挖个小坑,以后再填。在探讨mysql交互协议的格式之前,我们要理清一个小问题,就是mysql交互协议会用到的基本数据类型。1.整数类型这里的整数类型可以用来表示mysql数据类型中的整数类型、日期时间类型、D...
剖析twemproxy前言 又是喜闻乐见的新坑,前面的mysql协议,当我在解读go-mysql包的时候,会重新讲到,至于Leetcode的更新会与go语言同步。关于这个redis的新坑,目前打算通过剖析twemproxy源码来间接介绍redis的协议,实现手段等等。下面先介绍一下我们的主角——twemproxy。twemproxy是由twitter(推特)公司在2012年在github上开源轻量级的高速缓存服...
有关binlog的那点事(二)(mysql5.7.13) 上次,我们仅仅把binlog做了一个概述,并没有去深入探索(1)binlog file究竟是怎么构成的?(2)binlog file的单元binlog events是怎么构成的?(3)我们能不能伪造出一个mysqlbinlog识别的binlog file? 当然,第三个问题看起来很cool,蛮有挑战性的。这次我们讨论的是第4版本的binlogfile, 一般5.0.x以上的mysql...
有关binlog的那点事(三)(mysql5.7.13) 这次我们要探索更精细的binlog内容,上次讨论的Query_event和Rows_event肯定有让你疑惑不解的问题。Query_event中的status-vars环境变量有哪些,Rows_event的数据类型是什么,元数据又是个什么鬼东西,今天我们就来一一解答。一、Query_event中的令人费解的status-varsstatus-vars据说是为了兼容低版本的mysq...
Mysql命令show global status求根溯源 近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的。在此之前,我们必须搞明白mysql对于这个命令的执行过程来确认它所显示的数据究竟是什么、是否实时更新以及是否准确。借这个机会,我们也可以了解客户端与mysql服务器是如何交互的以及对于SQL命令的一般执行过程。为此,我觉得这是一个很好的契机,当...
slave IO流程之二:注册slave请求和dump请求 slave IO流程已经在http://www.cnblogs.com/onlyac/p/5815566.html中有介绍这次我们要探索注册slave请求和dump请求的报文格式和主要流程。一、注册slave请求在slave IO连接完数据库后,slave IO接着在主库里注册自己,以便后续不需要提供slave IO登陆的信息如用户名密码等。1.注册slave请求的报文格...
Mysql5.7.13主从同步(复制)配置 主从同步是分布式mysql数据库相当重要的配置,现在我在虚拟机上完成主从配置,系统是CenterOS6.5,mysql版本是5.7.13主服务器的ip是192.168.19.139 副服务器的ip是192.168.19.1421.主服务器配置(1)修改my.cnf(注意使用root) 1 vim /etc/my.cnf 2 3 4 sql_mode=N...