Browsed by
月份:2017年6月

深入了解gRPC:协议

深入了解gRPC:协议

gRPC 是基于 HTTP/2 协议的,要深刻理解 gRPC,理解下 HTTP/2 是必要的。本篇文章会先简单介绍一下 HTTP/2 相关的知识,然后再介绍下 gRPC 是如何基于 HTTP/2 构建的。

HTTP/1.

HTTP 协议可以算是现阶段 Web 上面最通用的协议了,在之前很长一段时间,很多应用都是基于 HTTP/1.x 协议,HTTP/1.x 协议是一个文本协议,可读性非常好,但其实并不高效,笔者主要碰到过几个问题

parse

如果要解析一个完整的 HTTP 请求,首先我们需要能正确的读出 HTTP header。HTTP header 各个 fields 使用\r\n分隔,然后跟 body 之间使用\r\n\r\n分隔。解析完 header 之后,我们才能从 header 里面的content-length拿到 body 的 size,从而读取 body。这套流程其实并不高效,因为我们需要读取多次,才能将一个完整的 HTTP 请求给解析出来,虽然在代码实现上面,有很多优化方式,譬如
  • 一次将一大块数据读取到 buffer 里面避免多次 IO rea
  • 读取的时候直接匹配 \r\n 的方式流式解析
但上面的方式对于高性能服务来说,终归还是会有开销。其实最主要的问题在于,HTTP...阅读全文
Linux程序员都需要知道的bash shell快捷键

Linux程序员都需要知道的bash shell快捷键

作为经常在linux开发的程序员,bash shell使用必不可少,熟记下面的快捷键,将极大地提高你的工作操作效率。

使用快捷键编辑命令行是由GNU Readline Library提供的。这些库被许多其他*nix应用包括bash使用,所以学习这些快捷键不仅可以让你很容易地在bash命令中操作,还能让你在一系列使用Readline的*nix应用中更方便的操作,默认情况下,Readline使用emacs键映射,尽管可以设置成vi编辑模式,我还是倾向于学习默认的操作,因为大多数应用是这样的。

编辑命令

  • Ctrl + a - 移到命令行首
  • Ctrl + e - 移到命令行尾
  • Ctrl + k - 从光标处删除至命令行尾
  • Ctrl + u - 从光标处删除至命令行首
  • Ctrl + w - 从光标处删除至字首(比如删除一个单词
  • Ctrl + y - 粘贴刚才上面使用过的删除快捷键删除的单词或文本到光标后面
  • Ctrl + xx - 在命令行首和光标之间来回移动
  • Alt + b -按单词后移(左向
  • Alt + f - 按单词前移(右向
  • Alt + d - 从光标处删除至字尾
  • Alt + c - 从光标处更改为首字母大写的单词
  • Alt + u -从光标处更改为全部大写的单词
  • Alt + l - 从光标处更改为全部小写的单词
  • Alt + t - 交换光标处和之前的单词
  • Ctrl + f - 按字符前移(右向
  • Ctrl + b - 按字符后移(左向
  • Ctrl + d - 删除光标处的字符...
阅读全文
nginx如何通过客户端ip分流

nginx如何通过客户端ip分流

开发者有时候需要将部分客户端流量分流到其他web服务,比如灰度环境,又或者分流到某个特定的URL。根据用户访问的ip地址,理想情况是根据地理位置分流,又或者只是简单的想防止特定ip地址的访问我们某个路径。那么,我们怎么将客户端ip为1.2.3.4分流到httpwww.gaoxuan1989.com/page1.html,并且将剩余的流量分到http://www.gaoxuan.com1989/otherpage.html,接下来我们就来讨论这个问题。

通过Nginx HttpAccessModule分发流量

由于Nginx支持条件判断,所以首先我们先看一个例子:如何使用HttpAccessModule的变量$remote_addr来分发流量。
servei($remote_add= 1.2.3.4rewrithtt://www.gaoxuan1989.com/otherpage.html;
这个例子就可以将1.2.3.4的这个ip地址转发到我们预先设定的地址了。

假如我们使用nginx作为Apache或者其他web容器的前端代理呢?

这种场景我们基本不用怎么改,只是将流量通过proxy_pass转发到后端服务就好了:
i($remote_add= 1.2.3.4proxy_pashtt://www.gaoxuan1989.com/...
阅读全文
阿里云Centos快速搭建wordpress

阿里云Centos快速搭建wordpress

今天搞了有一段时间的wordpress,发现最终搭建wordpress还是很简单的,接下来我来说一说我搭建的方法。我是在阿里云centos6.8版本上安装的,装在了美国硅谷的机器上,不过哪的机器不影响,我主要是为了装插件和修改主题方便一些。安装的软件全是基于yum安装,yum安装的版本符合wordpress的要求第一步,我们先了解一下我安装依赖的组件
  • mysql :存储你的文章和一些信息
  • php:wordpress是基于php开发
  • nginx:好多人用apache,我就不用,就是真么任性,不过讲真,apache已经有点落伍了
  • php-fpm:需要在nginx中配置一下,因为nginx本身不支持ph
第二步,我们开始安装和配置依赖组件首先先安装mysql,通过yum安装,yum安装的版本是5.1.73启动mysql服务配置mysql,切换到root用户然后通过sql语句增加用户和创建wordpress所需要的数据库执行完上面的sql语句,可以测试一下用户是否可用弹出输入密码的提示,输入 ...阅读全文