- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 谈下mysql中间件(问题域、业内组件)
这段时间团队在梳理mysql使用上的一些痛点(分库分表、读写分离、权限控制、监控告警、日志审计等),也调研了业内一些mysql中间件的实现,这里把对问题域的思考,以及常见中间件整理沉淀一下 一、问题域(业务自己搭mysql痛点是什么?目标是什么?) 痛点 目标 连接管理 客户端连接使用不受限制,没有复用,业务之间互相影响(如1个服务写得有问题就可把mysql连接...
2018-09-21 20:51:25 1504
原创 Mysql开发实践8问,你能hold住几个?
1、Mysql读写性能是多少,有哪些性能相关的配置参数?2、Mysql负载高时,如何找到是由哪些SQL引起的?3、如何针对具体的SQL做优化?4、SQL层面已难以优化,请求量继续增大时的应对策略?5、Mysql如何做主从数据同步?6、如何防止DB误操作和做好容灾?7、该选择Mysql哪种存储引擎,Innodb具有什么特性?8、Mysql内部结构有哪些层次?
2014-09-21 23:23:28 2574 2
原创 常见Key-Value存储系统的内存管理策略解析
Key-Value存储作为NoSQL存储的一种常见方式,提供了比SQL数据库更好的可扩展性和读写性能。比如当前开源最热门的Memcached和Redis;淘宝的Tair、腾讯的Cmem、Amazon的Dynamo等等,无论是做缓存还是持久存储,均使用内存作为主要存储介质,故内存管理策略就显得尤为重要了,是影响性能的重要因素。这里从源代码层面对Memcached、Redis和UDC(腾讯以前用的一套KV持久化存储系统)的内存管理策略进行分析,3者的内存管理策略各不相同,其他KV系统也和这3种方法大同小异了。
2014-05-10 15:39:38 7163
原创 一些关于NewSql的笔记(DTCC2016)
有幸参加了DTCC2016会议,今年的会议特别火爆,很想每个专场都去看,可惜分身乏术。做了很多笔记,这里把关于NewSql的部分梳理成KM,没有DBA专业和深入,有出入的请使劲拍砖!...一、DTCC2016简介二、数据库演化的3个阶段三、补个基础:一个SQL的执行过程四、补个基础:事务的ACID特性和实现技术五、NewSql要解决的几个主要问题六、基于mysql-ha
2016-06-06 09:59:25 5336
原创 GDB实践:一场std::sort引发的coredump
以前只掌握gdb一些基础知识,还没有真正"实战"过。刚好最近同事一个进程coredump了,原因比较深,正好利用这个机会来分析下
2014-08-24 17:27:52 7590
原创 中文分词实践(基于R语言)
背景:分析用户在世界杯期间讨论最多的话题。思路:把用户关于世界杯的帖子拉下来,然后做中文分词+词频统计,最后将统计结果简单做个标签云,效果如下后续:中文分词是中文信息处理的基础,分词之后,其实还有特别多有趣的文本挖掘工作可以做,也是个知识发现的过程,以后有机会再学习下。
2014-07-13 13:30:43 13463 6
原创 一致性Hash简介和使用
背景:一致性Hash用于分布式缓存系统,将Key值映射到具体机器Ip上,并且增加和删除1台机器的数据移动量较小,对现网影响较小实现:1 Hash环:将节点的Hash值映射到一个Hash环中,每个Key顺时针第一个找到的节点,就是这个Key被路由到的机器2 "虚拟节点":将节点虚拟成多个"虚拟节点"分布在Hash环上,使得分布更均匀,扩缩容影响较小
2014-06-04 17:23:12 1783
原创 libcurl使用示例
libcurl使用示例简要说明:C++使用libcurl访问"www.baidu.com",获取返回码和打印出http文件/* * @ libcurl使用示例 * @ 2014.04.29 * @ g++ -o LibCurlFunc LibCurlFunc.cpp -lcurl */
2014-04-30 10:49:54 7169 2
原创 TCP协议和SocketAPI的几个小问题
服务端只有bind()没有Listen(),客户端会Connect()成功吗?服务端只有Listen()没有accept(),客户端会Connect()成功吗?服务端accept()会产生网络通讯吗?服务端只有Listen()没有accept(),客户端Connect()成功后可以调用write()写数据吗?服务端只有Listen()没有accept(),客户端连接能正常断开吗?
2014-04-01 17:17:39 1704
原创 Linux之僵尸进程
* 僵尸进程子进程结束,父进程没有正确处理子进程返回信息。PS:直到父进程退出,子进程变为孤儿进程,其父进程会变为Init进程(PPID=0),Init进程会负责清理僵尸进程* 危害僵尸进程没有从进程列表删除,占据内核资源* 结论多进程编程,父进程需要跟踪子进程的退出状态* 僵尸进程查看方法:1 top (zombie数量)Tasks: 581 to
2014-02-19 12:39:06 1508 1
原创 IPC之共享内存
共享内存* 最快的IPC,因为操作共享内存不用涉及进程-内核的数据拷贝* 不同进程间操作共享内存需自己做同步机制,比如使用信号量等数据结构shmid_ds(#include)struct shmid_ds{ struct ipc_perm shm_perm; /* 操作权限*/ int shm_segsz;
2014-02-12 19:14:53 1330
原创 IPC之信号量
信号量* 2种类型: - 二值信号量(取值为0或1的信号量,常用于进程间的"互斥锁") - 计数信号量(如生产者消费者问题等)* 2个操作 - P:等待信号量>0,然后将信号量--; - V:信号量++,如果有则唤起一个等待信号量>0的进程数据结构semid_ds(#include)struct semid_ds { truct ipc_p
2014-02-12 13:01:17 1266
原创 IPC之消息队列
key_t键和ftok()函数* 消息队列、信号量和共享内存具有内核持续性(与具体进程周期不相关),故需要在内核用一个全局唯一的Key来标识。* 这个Key的类型为整数key_t(定义在),可以在代码写死,也可以用ftok()函数生成* key_t ftok( const char * fname, int id )- fname为已存在的文件(不存在返回-1),id为子序号。通过
2014-02-11 21:16:53 1597
原创 IPC之管道、FIFO、socketpair
管道和FIFO作为最初的UNIX IPC形式,现在已用得较少。SocketPair可作为全双工版本的管道,较为常用管道* 只用于有亲缘关系的进程间通信* 单向,即半双工 (双向方法:1 使用2个管道 2 使用SocketPair)* pipe() => write()/read()FIFO (有名管道)* 可用于无亲缘关系的进程间通信* 单向* mkfifo() => open() => write()/read()
2014-02-09 16:38:21 2589
原创 读书笔记:网站架构之安全篇
目录:一、网站应用攻击与防御二、信息加密技术三、信息过滤及反垃圾 PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记
2013-12-15 23:52:16 1841
原创 读书笔记:网站架构之扩展性篇
目录:一、构建可扩展的网站架构二、利用分布式消息队列降低系统耦合三、利用分布式服务打造可服用平台 PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记
2013-12-14 21:33:05 1518
原创 读书笔记:网站架构之伸缩性篇
目录:一、网站架构的伸缩性设计二、应用服务器三、分布式缓存服务器四、数据库服务器PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记
2013-12-13 14:21:43 1506
原创 读书笔记:网站架构之可用性篇
目录:一、高可用的网站架构二、高可用的应用三、高可用的服务四、高可用的数据五、网站的软件质量保证和运行监控PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记
2013-12-09 21:32:41 2302
原创 读书笔记:网站架构之性能篇
目录:一、网站性能测试二、Web前端性能优化三、应用服务器性能优化四、存储性能优化PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记
2013-12-08 19:55:36 1874
原创 大型网站架构演化一些关键点
一直都对海量服务后台架构很感兴趣,最近看完了《大型网站技术架构》一书,写得极其赞!这里再结合我自己的一些见解,做一个读书笔记下来。提炼大型网站在访问量不断上升时架构演化的一些关键点,并总结一些架构设计的基本原则和价值观
2013-12-07 17:44:11 2486 2
原创 libevent简介和使用
libevent是一个基于事件触发的网络库,memcached底层也是使用libevent库,所以今天先简单学习下。 一些资料: 1 libevent官网:http://libevent.org/ 2 libevent API:http://www.monkey.org/~provos/libevent/doxygen-2.0.1/i
2013-11-07 22:23:40 16851 6
原创 论文学习笔记:BigTable
前言:Google大数据处理的3篇核心论文《The Google File System》:http://research.google.com/archive/gfs.html《MapReduce: Simplified Data Processing on Large Clusters 》:http://research.google.com/archive/mapreduce
2013-11-03 11:07:12 2994
原创 论文学习笔记:MapReduce
前言:Google大数据处理的3篇核心论文《The Google File System》:http://research.google.com/archive/gfs.html《MapReduce: Simplified Data Processing on Large Clusters 》:http://research.google.com/archive/mapreduce
2013-10-27 14:59:58 3392
原创 论文学习笔记:GFS
前言:Google大数据处理的3篇核心论文《The Google File System》:http://research.google.com/archive/gfs.html《MapReduce: Simplified Data Processing on Large Clusters 》:http://research.google.com/archive/mapreduce.htm
2013-10-22 00:08:24 7798 1
原创 epoll简介和使用
epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 说起epoll,就不得不提起select。对比起select,epoll主要有下面3个优点: 1、[句柄数] select最大句柄数受限,默认为1024(FD_SETSIZE值,可通过内核修改);而epoll最大句柄数为进程打开文件的句柄数,只受资源限制 2、
2013-10-07 23:10:39 2145
原创 udpSocket捕获ICMP不可达错误
最近得写个udpAgent,由于要做udpServer端的容灾,所以要感知udpAgent发出的UDP包是否被某个udpServer接收。但是UDP协议本身是无状态的,也就是说默认情况下,udpAgent进程是无法感知其发出的UDP包是否被接收了的。 但是,从TCP/IP协议栈来说,如果一个UDP包没有到达目的地址,发送端会收到一个“目的地址不可达”的ICMP报文。所以现在的问题就只剩下
2013-09-30 16:04:32 5018
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人