go log 包

1   错误相关的概念

  • 编译错误:build的时候就报错,由于考虑不周或输入错误导致程序异常(Exception),比如数组越界访问,除数为零,堆栈溢出等等。是大意疏忽。
  • 运行错误:run的时候才报错,由于程序设计思路的错误导致程序异常或难以得到预期的效果。运行错误可以是预期的,也可以是不可预期的,对于可预期的不要用 panic,panic 恐慌机制是意料之外,如果不恢复(recover)就会导致宕机。宕机(panic)不是一件很好的事情,可能造成体验停止、服务中断,就像没有人希望在取钱时遇到 ATM 机蓝屏一样。但是,如果在损失发生时,程序没有因为宕机而停止,那么用户将会付出更大的代价,这种代价可以是金钱、时间甚至生命。因此宕机有时是一种合理的止损方法。
  • error错误:错误是业务过程的一部分,而异常不是。错误是可预期的结果,error错误机制是意料之中。

Istio 流量管理

流量管理是 istio 最核心的问题,涉及 v1alpha3 中的配置资源,包括Gateway、VirtualSerice、DestinationRule 等。本文主要是基于 Istio 基础一文已经部署的实例来进行讲解。

Kubernetes 网络

微服务是多进程、多服务部署,无法通过 IPC 进程内调用,必然通过网络调用,这将带来很多问题:不可靠、有带宽、协议设计。无论是 TCP、HTTP、RPC,无论是东西流量还是南北流量,涉及限流、熔断、域名及路径上下文,都需要 Kubernetes 或者第三方产品给出解决方案。网络是 Kubernetes 的难点之一。

Istio 基础

我选择 Istio 而非 Service Mesh 鼻祖 Linkerd 的原因,是 Istio 有大牌厂商支持、社区生态圈优势、重点支持 Kubernetes。

Istio Prometheus

我选择 Istio 而非 Service Mesh 鼻祖 Linkerd 的原因,是 Istio 有大牌厂商支持、社区生态圈优势、重点支持 Kubernetes。

微服务架构

这是一个架构概念爆发的时代,是架构本身的复杂度已经开始超越业务逻辑本身的时代,同时也是越来越接近 DevOps 工作方式的时代。

Kubernetes 集群安装

有了 Docker Swarm 基础,再来学习 Kubernetes 会相对容易一些,不过安装 Kubernetes 还是挺繁琐的,对官方文档中需要访问谷歌外网的部分,还需要替换成国内源。如果目的为了学习,还可以使用 minikube 或 Vagrant 快速创建集群。

Jenkins 持续集成

今天看到《Jenkins2 权威指南》出来了,马上买了一本,DevOps 相关的书籍更新太快了,这包括 Docker、Jenkins,新特性快速推出,旧版本必然快速淘汰,可以看一下 Jenkins 的版本,Jenkins 1.x 相关书籍已经严重滞后了。