Web Analytics

Go2 Error Inspection前瞻

这几年关于Go语言未来演化的讨论成为了Gopher世界的热点,Go team官方对于Go语言的演化(以Go2为标签)也是十分上心,但吸取了其他语言,比如:Python3割裂社区的、不兼容演化的教训,Go team最终选择了一条尽可能地兼容Go1、稳健、平滑的演化之路,并逐渐开始落地。Go 1.11的Go modules是Go team开启Go2演化进程的标志性事件。随着“Go 2 Draft Design”的发布,Go team正在努力着手解决Go社区反响较为强烈的Error handling、Error values和Generics(泛型)这三个问题。从目前的进展上来看,Go error value相关机制的改善近期率先在以Proposal形式出现,并给出了待社区反馈的参考实现(golang.org/x/exp/xerrors),并很可能是继Go module之后第二个落地的Go2 特性。在本文中,我们就和大家一起来前瞻性探索一下Go2 error inspection及其参考实现。 ...

January 27, 2019 · 10 min · Tony Bai

Go与SOAP

在REST和RPC大行其道的今天,支持SOAP(简答对象访问协议)作为Web服务消息交换协议的情况是越来越少了。但在一些遗留系统中,尤其是采用微软技术栈的服务系统中,SOAP依然占有一席之地,比如在一些医院院内的IT系统中。 Go语言诞生后,主流的Web Service设计已经开始过渡到REST和RPC,Go相关开源项目也以对REST和RPC的支持为主。而对SOAP的支持则少而零散,社区里也没有对SOAP支持的重量级开源项目,在awesome go的各种list中也难觅有关SOAP的推荐项目的身影。 但Gopher世界还是有以client身份与SOAP service交互或是实现SOAP server的需求的。在这篇文章中,我就和大家一起来探索一下如何基于一些开源项目,使用Go实现SOAP client和SOAP Server的。 ...

January 8, 2019 · 8 min · Tony Bai

Hello,Go module proxy

一. Go module引入的幸福与“无奈” 在《Go 1.11中值得关注的几个变化》一文中,我们知道了Go语言通过引入module的概念进而引入了Go tool的另外一种工作模式module-aware mode。在新的工作模式下,Go module支持了Versioned Go,并初步解决了包依赖管理的问题。 ...

November 26, 2018 · 11 min · Tony Bai

Go 1.11中值得关注的几个变化

转眼间又近年底,距8月25日Go 1.11版本正式发布已过去快三个月了。由于种种原因,Go语言发布变化系列的Go 1.11版本没能及时放出。近期网课发布上线后,个人时间压力稍缓和。又恰看到近期Go 1.12 release note的initial version已经加入到master,于是这篇文章便上升到个人Todo list的Top3的位置,我也尽一切可能的碎片时间收集素材,撰写文章内容。这个时候谈Go 1.11,总有炒“冷饭”的嫌疑,虽然这碗饭还有一定温度^_^。 ...

November 19, 2018 · 16 min · Tony Bai

Go,9周年

本文翻译自Go官方博客:《Nine years of Go》。 介绍 今天是我们的Go语言初始版本开源的第九个周年纪念日。在每个周年纪念日上,我们都希望花些时间思考过去一年发生的事情。过去12个月对Go语言和Go社区来说是突破性的一年。 对Go的爱和接纳 感谢你们所有人,2018年对Go来说是美好的一年!在多个行业调查中,Gopher们表达了他们使用Go的快乐程度,并且许多非Go开发者也表示了他们打算在其他语言之前优先学习Go。 ...

November 12, 2018 · 4 min · Tony Bai

官宣:慕课网课程“Kubernetes实战:高可用集群搭建、配置、运维与应用”上线了

距离我的第一门网课《Kubernetes基础:开启云原生之门》上线已经过去5个多月了,我的实战课《Kubernetes实战:高可用集群搭建、配置、运维与应用》终于在9月27日正式上线了。 一. 课程介绍 《Kubernetes实战:高可用集群搭建、配置、运维与应用》的课程内容与最初课程设计时规划的内容大纲没有太多出入,基本就是根据我最初的想法拟定的内容,这也基本是我这两年学习k8s、积累的k8s实践的路线。整个课程基于kubernetes 1.10.2版本(docker 17.03.2ce)。课程内容大致分为七个部分(与课程主页的课程目录结构稍有差异,但课程内容是一致的): ...

October 17, 2018 · 6 min · Tony Bai

基于consul实现微服务的服务发现和负载均衡

一. 背景 随着2018年年初国务院办公厅联合多个部委共同发布了《国务院办公厅关于促进“互联网+医疗健康”发展的意见(国办发〔2018〕26号)》,国内医疗IT领域又迎来了一波互联网医院建设的高潮。不过互联网医院多基于实体医院建设,虽说挂了一个“互联网”的名号,但互联网医院系统也多与传统的院内系统,比如:HIS、LIS、PACS、EMR等共享院内的IT基础设施。 如果你略微了解过国内医院院内IT系统的现状,你就知道目前的多数医院的IT系统相比于互联网行业、电信等行业来说是相对“落伍”的,这种落伍不仅体现在IT基础设施的专业性和数量上,更体现在对新概念、新技术、新设计理念等应用上。虽然国内医院IT系统在技术层面呈现出“多样性”的特征,但整体上偏陈旧和保守 – - 你可以在全国范围内找到10-15年前的各种主流语言(VB、delphi、c#等实现的IT系统,并且系统架构多为两层C/S结构的。 ...

September 10, 2018 · 19 min · Tony Bai

初窥Go module

自2007年“三巨头(Robert Griesemer, Rob Pike, Ken Thompson)”提出设计和实现Go语言以来,Go语言已经发展和演化了十余年了。这十余年来,Go取得了巨大的成就,先后在2009年和2016年当选TIOBE年度最佳编程语言,并在全世界范围内拥有数量庞大的拥趸。不过和其他主流编程语言一样,Go语言也不是完美的,不能满足所有开发者的“口味”。这些年来Go在“包依赖管理”和“缺少泛型”两个方面饱受诟病,它们也是Go粉们最希望Go核心Team重点完善的两个方面。 今年(2018)年初,Go核心Team的技术leader,也是Go Team最早期成员之一的Russ Cox在个人博客上连续发表了七篇文章,系统阐述了Go team解决“包依赖管理”的技术方案: vgo。vgo的主要思路包括:Semantic Import Versioning、Minimal Version Selection、引入Go module等。这七篇文章的发布引发了Go社区激烈地争论,尤其是MVS(最小版本选择)与目前主流的依赖版本选择方法的相悖让很多传统Go包管理工具的维护者“不满”,尤其是“准官方工具”:dep。vgo方案的提出也意味着dep项目的生命周期即将进入尾声。 ...

July 15, 2018 · 20 min · Tony Bai

HTTPS服务的Kubernetes ingress配置实践

在公有云被广泛接纳的今天,数据传输安全问题日益凸显,因为在公有云提供商的经典网络(二层互通)中,即便是内部网络通信也要考虑网络嗅探等hack手段,这也是公有云主推所谓“专用网络(二层隔离)”的原因之一。从应用的角度,我们应该尽量通过技术手段保证数据通信的安全性。而目前最常用的方式就是基于SSL/TLS的安全通信方式了,在七层,对应的就是https了。 ...

June 25, 2018 · 11 min · Tony Bai

实践kubernetes ingress controller的四个例子

我之前并未使用过标准的Kubernetes ingress,而是自己实现了一个基于nginx的、类似ingress controller的服务入口管理程序nginx-kit。这个程序会部署到Kubernetes集群中,以Pod形式运行。该Pod由两个Container组成,一个Container放置了一个由脚本启动的nginx;另外一个Container中放置的是一个conf generator程序,它监听Kubernetes集群service对象的变更,并根据变更情况动态生成nginx的配置文件。第一个Container中的脚本会监听配置文件目录的变化,并reload配置文件信息实现Kubernetes内部服务对外暴露入口的动态管理。关于这个程序的详情可以参考我之前写的两篇文章:《Kubernetes集群中的Nginx配置热更新方案》和《为Kubernetes集群中服务部署Nginx入口服务》。 ...

June 21, 2018 · 13 min · Tony Bai