- 博客(49)
- 收藏
- 关注
原创 基于twemproxy+分布式ssdb的水平扩容方案实践分享
前言:在存储方面,靠之前大容量单机存储已经不适合当前的企业需求,无论从成本,维护,可用性上都不是好的方案,所以分布式模式的存储系统应运而生,不过分布式也有分布式的代价,今天不讨论CAP,主要说说关于分布式模式下存储的水平扩容问题,如果是单一存储节点的话,扩容就是数据做整体复制到一个更大存储容量的节点上,但是分布式下可能是复制到一个普通的节点上,或者是从当前节点迁移到已经存在的另一个节点,保持负...
2018-09-02 09:29:51 1228
原创 leveldb流程分析--3
本章继承上一章节的风格,以调试的方式分析leveldb的读数据流程:读的流程和写的流程虽然不同但是操作逻辑都很相似:ssdb网络事件处理->读取请求->分析指令->调用指令处理接口->调用leveldb的Get接口->返回数据我们重点看下调用的是哪个Get: 具体的是在这个函数分别试图从memtable->imemtable->...
2018-08-11 10:25:39 341
原创 leveldb流程分析--2
本章开始重点关注ssdb与leveldb的交互上,水平有限,一些关键地方没注意到的或者是说的不全或说错的欢迎批评指正。先上代码:这就是我们能在ssdb中实际活动的范围,从入口看就这些,拿数据,进行指令分析proc:再进一步缩小范围,就这儿了,好,我们用set a 1 先从写流程入手调试看下: 现在进入到proc了,准备进入指令接口:proc_set:这里重点...
2018-08-11 09:07:52 520
原创 leveldb流程分析--1
根据我自己的个人情况,我接触多的是ssdb这种nosql,所以我想从ssdb入手分析下leveldb的使用,通过ssdb与leveldb的读写交互来熟悉下leveldb的流程,水平有限,错误难免,相互学习,共同进步,嘿嘿以ssdb的视角分析leveldb的流程,主要分析leveldb的初始化,写数据操作,读数据操作的大致流程,和局部流程实现细节思考SSDB::open()对leveldb进...
2018-08-10 18:30:00 304
转载 linux 后台进程的几种方式
转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题...
2018-03-23 09:59:11 1107
转载 linux删除指定文件
https://blog.csdn.net/qq_37858386/article/details/726545561、有时候需要删除某个文件夹目录下指定的文件名命令,因为有时候里面的子目录包含很多个这样文件名的文件,如果一个一个的删除,很是麻烦,这里有一个很好的方法,本人亲自测试过,可以用,用到的时候很方便高效。2、命令格式: find 指定的文件夹/ -name thi...
2018-03-22 23:02:09 16001 1
转载 nohup使用参考
http://blog.csdn.net/chs_jdmdr/article/details/7553074nohup命令及其输出文件 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。该命令的一般形式为:nohup comman...
2018-03-22 11:50:14 208
原创 linux shell的.bashrc和.bash_profile
背景:我再测试一个运行的后台脚本不退出的情况下给环境变量文件.bashrc或.bash_profile增加一个环境变量例如$caoge=caoge_test,发现在后台运行的脚本执行source ~ /.barc和source ~/.bash_profile的效果不同,下边是我的测试结果:关于shell读取环境变量文件:.bashrc.bash_profile的时机问题测试:.bash_profi...
2018-03-14 10:23:12 976
转载 关于linux下的静态库和动态库的一点笔记
关于静态库和动态库的介绍:动态库:https://www.ibm.com/developerworks/cn/linux/l-dynlink/index.html https://www.ibm.com/developerworks/cn/linux/l-dynamic-libraries/静态库: 静态库其实就是一堆.o文件的打包,且并没有强制说是合格的.o关于库的制作:https://www...
2018-03-13 22:20:37 166
转载 http状态码说明参考
转载自:http://blog.csdn.net/sforiz/article/details/7633798最常见的HTTP状态码有200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时或服务器暂时不可用HTTP是超文本传输协议。浏览器通过HTTP与WEB Server通讯(也有一些其它软件比如IM使用HTTP协议传递数据),请求(HTTP Request)传递给服...
2018-03-06 21:06:51 174
转载 nginx module配置模块源码剖析
转载自:http://www.cnblogs.com/jzhlin/archive/2012/06/18/nginx_conf_1.htmlNginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 一 搭建nginx服务器时,主要的配置文件 nginx.conf 是部署和维护服务器人员经常要使用到的文件, 里面进行了许多服务器参数的设置。那么nginx 以模块...
2018-03-06 21:00:26 306
转载 nginx配置说明书
转载自:http://blog.csdn.net/tjcyjd/article/details/50695922简书参考:https://www.jianshu.com/p/a7c86efe1987Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ;Nginx用户及组:用户 组。window下不指定 worker_processes 8;工作进程:数目。根据...
2018-03-06 20:55:38 462
转载 redis的基数统计方案
关于redis的四种统计方案比较:转载自:http://blog.huangz.me/diary/2016/redis-count-online-users.htmlredis的hyperloglog详解:转载自:http://blog.csdn.net/terence1212/article/details/53543801...
2018-03-05 23:48:54 507
转载 redis的持久化:RDB的配置和原理
转载自:http://blog.csdn.net/aitangyong/article/details/52045251RDB是redis将内存数据存储到磁盘文件的其中一种方式(另一种是AOF)。我们可以在redis.conf文件中,做一些针对RDB的设置。参考“redis 配置文件 snapshotting RDB数据库快照部分”,有中英文的对照翻译。[plain] view plain cop...
2018-03-04 12:08:31 253
原创 ssdb-zset浅析
疑问:ssdb的zset底层编码如何ssdb的zset从响应请求到存储的过程如何分析:ssdb的zset底层编码zset,还有其它的结构并不像redis那样自己实现存储引擎,像redis就是有各种各种的底层编码例如字典,压缩列表,双向链表啊,但是ssdb用的是leveldb做的存储引擎,统一使用编码后的k-v存储接下来分析下:ssdb的zset从响应请求到存储的过程如何:int proc_zset...
2018-02-24 17:26:11 596
转载 golang-interface分析
转载自:http://sanyuesha.com/2017/07/22/how-to-understand-go-interface/1、interface 是一种类型1234type I interface { Get() int}首先 interface 是一种类型,从它的定义可以看出来用了 type 关键字,更准确的说 interface 是一种具有一组方法的类型,这些方法定义了 in...
2018-02-23 22:19:24 589
转载 golang-defer浅析
转载自:https://tiancaiamao.gitbooks.io/go-internals/content/zh/03.4.htmldefer和go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。一般采用如下模式:f,err := os.Open(filename)if err != nil { panic(err)}defer f.Close...
2018-02-22 17:34:03 211
转载 golang-map分析
转载自:https://juejin.im/entry/5a1e4bcd6fb9a045090942d8本文将主要分析一下golang中map的实现原理,并对使用中的常见问题进行讨论。进行分析的golang版本为1.9。golang中的map是用hashmap作为底层实现的,在github的源码中相关的代码有两处:runtime/hashmap.go定义了map的基本结构和方法,runtime/h...
2018-02-22 14:45:32 9707 1
转载 深入理解golang文章推荐
这个是go语言中文网收录的专栏文章,为大家奉上,也在此做个笔记:https://studygolang.com/subject/3go语言圣经中文版在线阅读:https://books.studygolang.com/gopl-zh/ch0/ch0-01.html...
2018-02-22 11:02:59 334
转载 golang的编译过程分析
转载自:https://halfrost.com/go_command/引言Go 语言这两年在语言排行榜上的上升势头非常猛,Go 语言虽然是静态编译型语言,但是它却拥有脚本化的语法,支持多种编程范式(函数式和面向对象)。Go 语言最最吸引人的地方可能是其原生支持并发编程(语言层面原生支持和通过第三方库支持是有很大区别的)。Go 语言的对网络通信、并发和并行编程的支持度极高,从而可以更好地利用大量的...
2018-02-22 10:48:06 8127 1
转载 golang并发原理分析
转载自:https://i6448038.github.io/2017/12/04/golang-concurrency-principle/ Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言;也正是Go语言的并发特性,吸引了全球无数的开发者。并发(concurrency)和并行(parallellism)并发(concurrency):两个或两个以上的任务在一段时间内被执...
2018-02-22 10:29:18 9523
转载 golang-goroutinue
请参考:https://ninokop.github.io/2017/10/31/Goroutine%E6%B5%85%E6%9E%90/
2018-02-22 10:27:20 293
转载 golang-channel 分析
请参考:https://ninokop.github.io/2017/11/07/Go-Channel%E7%9A%84%E5%AE%9E%E7%8E%B0/
2018-02-22 10:26:57 231
转载 golang-垃圾回收
请参考:https://ninokop.github.io/2017/11/09/Go-%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/
2018-02-22 10:26:43 269
转载 golang-slice底层分析
转载自:https://halfrost.com/go_slice/切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。切片常见的操作有 reslice、append、copy。与此同时,切片还具有可索引,可迭代的优秀特性。一. 切片和数组关于切...
2018-02-21 20:25:36 6171
转载 golang实现线程安全的map
转载自:https://halfrost.com/go_map_chapter_one/ https://halfrost.com/go_map_chapter_two/Map 是一种很常见的数据结构,用于存储一些无序的键值对。在主流的编程语言中,默认就自带它的实现。C、C++ 中的 STL 就实现了 Map,JavaScript 中也有 Map,Java 中有 HashMa...
2018-02-21 20:14:45 10034
转载 rpc框架性能比拼
转载自:http://blog.csdn.net/zixiao217/article/details/53675678?locationNum=7&fps=1分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spr...
2018-02-21 20:01:57 6562
转载 thrift源码剖析系列
1.主要类概述:转载自:http://blog.csdn.net/WinWill2012/article/details/73137739 2.序列化协议:转载自:http://blog.csdn.net/WinWill2012/article/details/732644423.传输层协议:转载自:http://blog.csdn.net/WinWill2012/article/details/...
2018-02-21 19:56:31 231
转载 rpc注意事项
转载自大神:http://blog.csdn.net/mindfloating/article/details/53872286最近线上碰到一点小问题,分析其原因发现是出在对 RPC 使用上的一些细节掌握不够清晰导致。很多时候我们做业务开发会把 RPC 当作黑盒机制来使用,但若不对黑盒的工作原理有个基本掌握,也容易犯一些误用的微妙错误。虽然曾经已经写过一篇《RPC 的概念模型与实现解析》 从概念模...
2018-02-21 19:48:43 443
转载 rpc概念和实现分析
转载自:http://blog.csdn.net/mindfloating/article/details/51477557今天分布式应用、云计算、微服务大行其道,作为其技术基石之一的 RPC 你了解多少?一篇 RPC 的技术总结文章,数了下 5k+ 字,略长,可能也不适合休闲的碎片化时间阅读,可以先收藏抽空再细读:)全文目录如下:定义起源目标分类结构 模型拆解组件实现 导出导入协议 编解码消息头...
2018-02-21 19:42:25 356
转载 rpc-浅出篇
转载自:http://blog.csdn.net/mindfloating/article/details/39473807 近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序员会感觉 RPC 比较神秘,而一些有多年使用 RPC 经验的程序员虽然使用经验丰富,但有些对其原理...
2018-02-21 19:31:38 157
转载 rpc原理-深入篇
转载自:http://blog.csdn.net/mindfloating/article/details/39474123 《深入篇》我们主要围绕 RPC 的功能目标和实现考量去展开,一个基本的 RPC 框架应该提供什么功能,满足什么要求以及如何去实现它?RPC 功能目标RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,R...
2018-02-21 19:25:14 155
转载 thrift-rpc原理
转载自:http://blog.csdn.net/kesonyk/article/details/50924489 RPCRPC, 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议,该协议允许运行于一台计算机的程序程调用另一台计算机的上的程序。通俗讲,RPC通过把网络通讯抽象为远程的过程调用,调用远程的过程就像调用本地的子程序一样方便,从而屏蔽了通讯复杂性,使...
2018-02-21 19:15:40 837
转载 golang的字符串和整数等转化工具包strconv
原文:https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter02/02.3.md2.3 strconv — 字符串和基本数据类型之间转换这里的基本数据类型包括:布尔、整型(包括有/无符号、二进制、八进制、十进制和十六进制)和浮点型等。2.3.1 strconv 包转换错误处理...
2018-02-12 19:09:06 2827
原创 golang 的自制Pool中连接使用笔记
问题:在用公司同事写的golang的连接池用在thrift的API和后端服务进行rpc通信的时候我用curl没有出现什么问题,但是在使用http_load的时候因为没有执行put操作,即将用过的连接池返回,导致立即出现连接池资源耗尽的错误无法访问后端服务,今天想借此机会在这里分享这里的操作,不过后边我们可以使用开源的连接池也许会更健硕些。首先从两个方面:连接池中的get和put都干了啥http_l...
2018-02-12 15:55:04 497
转载 database/sql: Stmt的使用以及坑
转载自:https://studygolang.com/articles/1795前言众所周知,golang操作数据库,是通过database/sql包,以及第三方的实现了database/sql/driver接口的数据库驱动包来共同完成的。其中database/sql/driver中的接口Conn和Stmt,官方交给第三方实现驱动,并且是协程不安全的。官方实现的database/sql包中的DB...
2018-02-11 22:09:52 5050
转载 关于golang的并发读写访问map问题
Golang 里面 map 不是并发安全的,这一点是众所周知的,而且官方文档也很早就给了解释:Why are map operations not defined to be atomic?. 也正如这个解释说的一样,要实现一个并发安全的 map 其实非常简单。并发安全实际上,大多数情况下,对一个 map 的访问都是读操作多于写操作,而且读的时候,是可以共享的。所以这种场景下,用一个 sync.R...
2018-02-10 20:51:44 3115
原创 nginx问题记录--nginxwork无法启动
日志如下:官方一些回答:https://forum.nginx.org/read.php?2,152995查看日志是无法访问log模块,修改了权限就可以了,还有其它原因,例如内部编写的防攻击模块,我没有开启这个配置导致无法启动,无论什么原因,途径是看日志->找对应源代码分析...
2018-02-08 16:20:41 908
转载 golang 让协程优雅退出
参考网址:https://studygolang.com/articles/2980goroutine和channel是Go语言非常棒的特色,它们提供了一种非常轻便易用的并发能力。但是当您的应用进程中有很多goroutine的时候,如何在主流程中等待所有的goroutine 退出呢?1 通过Channel传递退出信号Go的一大设计哲学就是:通过Channel共享数据
2018-02-05 10:28:19 16667 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人