Golang

  • 上上周去旅游了,写了篇自己都觉得比较水的文章,这周补上一篇。 :P

    近几个月开始将现有的 Node.js 服务重构为 Golang 服务,其实这个计划去年就开始制定,并且在很长一段时间里面都在准备基础:

    • 设施:自动化运维,日志以及监控;
    • 知识:Golang、框架微服务架构的设计以及业务的梳理;

    接下来先从介绍开始。

    Go kit 简介

    Go kit 是一系列由 Go 的包组成的工具集,并且是生产级别的,完全适应于任何公司与组织的业务。

    架构:三个层次

    • Transport layer:通信层,这里可以用各种不同的通信方式,如 HTTP REST 接口或者 gRPC 接口(这是个很大的优点
  • 记得小时候,有次自己用手拿了两根铁丝插进插座(别问为什么,我在探索真理……),于是至今仍然记得那种全身酥麻以及恶心的感觉,但是幸好时间不长,两秒之后就停了,然后我家就停电了——对的:空气开关起作用了,我的小命就这么留下来了。

    那时候一度痴迷,研究了我的救命恩人的原理,原来啊,一开始我们是用保险丝的,一旦电流过大,保险丝就会温度升高,然后熔断,因此它一般是用低熔点的材料制成,同时呢,电阻也不会太高,不然很容易就熔断了。只是每次这样熔断等待人去更换效率就太低了,于是诞生了空气开关,原理就是电磁铁,电流过大就会切断电源,但是之后只需要人重新合上开关就行了,不用像以前那样每次都需要更换保险丝。

  • gRPC 是个通用、高性能的开源 RPC 框架。它可以高效地连接单个或多个数据中心的服务。另外也可以支持可插拔的负载均衡、追踪、健康检查以及认证。最后,它也能应用于分布式计算的最后一公里来连接各种设备、手机应用、浏览器与后端服务。[1]

    这里可以留意下最后一句话,这句话的意思是:你可以使用 gRPC 来取代现有的 RESTful 接口。事实上,已经有很多案例这么做了:以关键词『gRPC iOS』或者『gRPC Android』去Google 一下就会发现很多案例。

    基础知识

    它所依赖的东西,有两个:HTTP2 以及 Protocol buffer(当然了,其它协议也是支持的,比如 JSON

  • Helm 最近是越来越得到大家的认可了,其实一年之前我们团队就开始用了,而今天我是想把这个工具的使用经验总结下。

    Kubernetes 上手一段时候,就会发现他的资源描述文件的管理是个问题,很容易有过多相似的文件,这时候可能就会有做成同一份模板加不同环境的输入参数的想法,可惜 kubectl 不支持。

    而在这之前,我们也试过其它的模板系统,比如 ktmpl,这些小工具的特点就是上手挺快,只是如果要其它比较高级的功能的话(如模板渲染的流程控制,依赖管理等),只能自己去开发了。

    在上手 Helm 之前,有一段时间觉得这个工具不怎么好用,因为需要学挺多东西,还得以 Chart 的方式管理各个项目

  • 数据流的概念其实非常基础,最早是在通讯领域使用的概念,这个概念最初在1998年由Henzinger在文献87中提出,他将数据流定义为“只能以事先规定好的顺序被读取一次的数据的一个序列”。[1]

    简介

    正如字面上所说的,数据流就是由数据形成的流,就像由水形成的水流,非常形象,现代语言中,基本上都会有流的支持,比如 C++ 的 iostream,Node.js 的 stream 模块,以及 golang 的 io 包。

    随着大数据技术的发展,数据流在我们的业务中可谓是重中之重,这也不难理解,毕竟程序肯定有输入输出,而当我们目前的设备无法在短时间内处理输入的数据,或者需要实时处理输入数据的时候,