回归

2019可谓是风云变幻的一年,贸易战打得如火如荼,股市像过山车一样,金融市场暴雷不断,科技巨头不断收缩,房价高企,忽然之间仿佛连苹果都吃不起了,相信所有的人或多或少都能感觉到无形的压力。印证了个人命运和国家命运是紧密相连的。

本来我在公司的“新项目”进展还算不错,和几个合作很好的同事将一艘满是漏洞的船修缮的相对完整,在 Kubernetes 世界里几乎可以自由航行,最近很长一段时间,我都在给内部用户做演示宣讲,渐渐我们也积累了不少用户。就在项目干得如火如荼之际,一场裁员却来的很突然,这次裁员和绩效无关,同一个部门的三位其他同事必须有一位必须离开,两位需要转组,被裁的同事可以拿到补偿。我这位被[……]

继续阅读

银行网点转型

招行的银行卡到期换卡,最近忙到没有时间,新卡片制好了收到短信通知后,都拖了将近一个月没去取。感谢支付宝和微信,现在真的是不需要现金了。于是周末专门花了半天时间去了北三环的招行换卡,首先是坐地铁,然后再换共享单车骑行一会儿。我本以为银行人不多,只是取一张卡而已,可以很快办完,谁知竟然花了40多分钟。

首先,现在这家招行的网点居然没有取号机了,而是要求我用招行网银App扫一个二维码取号。我在想这分明是为了推广网银App,要是我没用智能手机怎么办?要是我没有安装网银,还得当场下一个不成?取了一个B开头的号之后就开始等了。银行里人的确不多,一个诺大的网点其实只有三、四个客户,开了两个普通高柜窗口,两[……]

继续阅读

Shell 中 grep 的副作用

最近在 Jenkins 中编写项目的 Build 脚本时碰到一个关于 grep 的副作用的问题,让人感觉挺费解,解决时需要用一点小技巧,因此在这里记录一下。

先描述一下所碰到的问题的现象,我需要用 Jenkins Shell script 将为我们的项目部署到 Kubernetes cluster 上,在部署之前会进行一些权限的检查和设置,因此在脚本中直接使用了 kubectl 查询资源并结合 grep 的方式来判断资源是否已经创建出来了,例如:

当 Jenkins Job 开始运行时,虽然 service account 并不存在,但是该 Job 却莫名其妙失败了,并没有看到[……]

继续阅读

Go 语言中的超时处理

最近在项目里用 Go 语言对一些微服务进行重构,由于 Go 对我来说仍然算是一种新语言,因此在项目过程中碰到的一些比较不同一些写法,将会以 Tips 的方式记录在这里。今天想记录的是 Go 语言里的超时处理。

超时在一些业务场景里非常普遍,例如:

– 数据库访问操作,进行网络连接时通常都有超时时间。
– 本地客户端用阻塞方式异步访问远程,等待一段时间之后,如果远程没有返回结果,则认为超时。
– 微服务在启动时,需要初始化某些数据,例如等待服务注册表返回的总线密码等等,如果在规定的时间内未获得需要的内容,则认为超时,服务启动失败。

在 Java 等传统语言里,通常会首先记录当前时间[……]

继续阅读

新项目

八月底一位资深的同事离职,他手上的一个新项目交给我来带,简单的交接后同事就离职了。九月初开始上手这个项目,由于这个项目实际上是后台从老项目迁移,前端重新开发,其中使用到的技术基于微服务架构非常繁杂,简单列举一下:

后端:

  • 开发语言:Golang, Ruby, Shell
  • 开发框架:Sinatra (Ruby), Beego (Go)

前端:

  • 开发语言:Javascript (ES6)
  • 开发框架:React, Redux, Saga
  • 编译工具:Babel
  • 打包工具:Webpack
  • 包管理器:npm

基础架构部分: