Redis的事件处理模型2:客户端命令执行过程

前言

上篇分析了Redis的事件处理模型,了解了Redis的事件处理基本过程,这篇还想继续顺着上面的思路分析一下这种情况:在客户端向服务端发起一个set指令或者get指令后,服务端接收后怎么执行这个命令,这个命令操作的简单过程是怎么样的。在分析了这个过程之后,我们就知道了Redis客户端和服务端交[……]

Read more

Redis源码分析2:Redis的事件处理模型

前言

上一篇分析了一下redis的大致框架和启动过程,这篇我想分析一下redis的事件处理模型,当然也包含了网络事件的处理模型。redis除了其高效的nosql存储非常有名以外,另外一个比较被称赞的就是其服务效率。像这类服务的是怎么设计的,为什么这么高效。所以我想这里来分析分析。

事件驱动框[……]

Read more

Redis源码分析1:Redis启动分析

前言

近期决定把redis的源码阅读分析一下,在官网下载了最新稳定版本5.0.3。整个代码包还是比较小的,下载之后整个包才9M,解压之后看src文件夹也才3.7M,也就是说redis的源码就这么点,其它占空间的主要是几个依赖组件:hiredis(redis的C客户端), lua, jemall[……]

Read more

Function as a Service介绍

本文是在去年梳理的关于FaaS的一个文档,主要目标是梳理FaaS的基本概念,发展势头,应用场景和一些基本的架构设计。后来在内部参考FaaS的设计思路,我们实现了一套适用于我们自己业务特点的函数服务,结合了DevOps,目前在内部使用的还算不错。目前可以用在实时排行服务,实时用户触达,实时数据清洗处理[……]

Read more

golang单元测试之mock

golang单元测试之mock

序言

前面介绍了golang的一般单元测试,以及如何使用vscode进行高效的go单元测试开发。同时也说过一般单元测试重点在于cpu和内存类型的测试,而对io类型的测试是比较敏感的。那么针对这类测试就没法做单元测试了吗?有的,肯定是有的,这就是mock技术。

m[……]

Read more

Golang UnitTest单元测试

Golang UnitTest单元测试

单元测试是程序开发者适用一段代码来验证另外一段代码写的是否符合预期的一种相对高效的自我测试方法。

对于程序开发来说,经过长期的积累和方法总结,单元测试是一种比较好的开发程序验证方式,但是单元测试却是在正真的软件开发之外要写的额外的代码,而且编写和管理维护都[……]

Read more

Golang官方依赖管理工具dep学习使用笔记

golang的之前的版本一直缺乏官方的包管理,第三方的包管理个人感觉还是比较麻烦的,但是看到dep现在样子之后还是有了很大的兴趣,使用了之后发现也确实方便了很多。推荐使用dep

Golang官方依赖管理工具:dep


今天在看一个内部项目的时候发现内部一个项目的体积非常大,一看原来是vendor[……]

Read more

这些年积累的一些小项目

github项目

Oneflow

项目简介:可视化分布式流程控制系统,数据流和业务流控制系统。使用golang开发,调度端采用了lua虚拟机,在web端可以创建串行流程,并且在每个流程中写lua脚本,发送到制定或者自动选择对远端机器进行任务执行。是之前项目openflow的升级版本。

项目地址[……]

Read more

golua虚拟机的使用

前言

​ 之前一直想把openflow这样的分布式流程系统做起来,但是时间和应用场景的问题所以都是做了一个半拉子工程,而且之前想的也有点简单了,认为只要有同学愿意,在开发上应该没问题,但是最终还是出现了项目管理和开发能力的问题,最终搁浅了。但是我想做一个分布式流程调度系统的想法一直没有断[……]

Read more

使用gitbook来写文档和文章啦

前言​

项目中文档管理是一个比较麻烦的事情,一般的做法都是写word文档,或者pdf;针对代码或者接口文档高级一点的可以使用Doxygen或者swagger这样的工具自动生成更新文档。但是项目中还有很多文档有是图文混合的。那这样的文档怎么有效管理呢?

​ 在找了几个工具之后,发现了一个比较合[……]

Read more

windows10下使用dockerfile制作镜像

其实操作系统没有关系,主要还是Dockerfile的编写和执行,过程来说比较简单。

1.编写Dockerfile

我的dockerfile如下,主要是用于golang和c++的开发,所以相关软件安装都是和这方面有关的。 本来打算使用163的源的,后来看了一下官方源速度也还不错,就直接用官[……]

Read more

Windows10下安装Docker记录

之前一直使用window安装虚拟机的方式来做linux应用,这次想使用docker来试试,这里顺便记录一下,部分资料来自网上。
一、启用Hyper-V

打开控制面板 – 程序和功能 – 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图:

点击确定后,启用完毕[……]

Read more

golang调度机制学习

1.Golang的核心之一gorountine

go语言非常重要的一个特性就是gorountine,有了这个东东,就可以很简单的做并发处理程序,比起c++和java的方式来说可以说简单了很多很多。那么gorountine又是一个什么样的东东呢? 从使用上来看它就是一个函数,使用起来有点像threa[……]

Read more

golang的struct和interface

struct

struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套;go中的struct类型理解为类,可以定义方法,和函数定义有些许区别;struct类型是值类型。

struct定义

type User struct {
    Name string[......]

Read more

Goroutine+Channel+WaitGroup使用

介绍

goroutine

golang语言中最有特色之一的东东就是这个goroutine了,很多时候问起别人为什么golang的好用,golang的网络性能可以那么好,一般都会多多少少想到goroutine,提起goroutine。在linux中内核的调度最小单位是就是thread,同一个进[……]

Read more

golang网络编程笔记

网络编程类型

我们一般提到的网络编程类型有两种:tcp和udp,都属于网络传输层协议支持下的协议,而且在目前也是网络编程中最基础的。这其中具体说来有有个socket的概念,tcp和udp都是协议,而socket就是一个具体的实现了,所以有tcp socket和udpsocket。golang是[……]

Read more

golang的grpc学习笔记2

前言

上一篇文章简单体验了一下grpc的golang使用,从环境安装到简单demo的编写,编译和测试,感觉还不错,今天再进一步学习分析其用法和一些要注意的坑。

grpc介绍

grpc一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。是一个高性能、开源和[……]

Read more

golang grpc简单使用


gRPC是一个高性能、通用的开源RPC框架,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。

1、相关包安装

1)protobuf

在下面的链接下载之后源码安装,
https://github.com/google/protobuf
安装过程[……]

Read more

helight.info域名启用

纠结了好久,终于定了,启用了helight.info这个域名,同时还申请了helight.cn,helight.com的域名已经被人注册了,还是一个黑科技公司,看产品就很奇怪。
这几天已经配置把helight.info配置ok了,整个网站都切换了,zhwen.org还会继续使用,欢迎大家浏览。[……]

Read more