构建Kubernetes集群 –选择工作节点大小
近期learnk8s网站上发布了一些关于k8s的好文章,这里搬运并翻译了一些,供大家参考。 本文翻译自《Architecting Kubernetes clusters — choosing a worker node size》。 当您创建Kubernetes集群时,冒出的第一个问题之一是:“我应该使用哪种类型的工作节点以及需要多少个这样的节点”。...
View ArticleGo语言回顾:从Go 1.0到Go 1.13
Go 1.13版本在2019.9.3正式发布!国外的Gopher Vincent Blanchon发表了一篇文章《Go: Retrospective》(科学上网阅读),对Go从1.0版本到1.13版本做了简要的回顾,这里是那篇文章的译文。...
View ArticleGo语言包管理简史
包管理是Go一直被诟病做得不好的功能之一。先前版本(go 1.11之前)的主要缺点之一是go get是缺乏对依赖包版本的管理和对可复制构建(reproducible build)的支持。Go社区已经开发了一些包管理器和工具作为版本化包依赖的事实标准解决方案,如glide,dep以及一些辅助工具等。 “我在生产构建中使用go get。” – 没有人这么说过。...
View Article如何在Go语言中使用Websockets:最佳工具与行动指南
如今,在不刷新页面的情况下发送消息并获得即时响应在我们看来是理所当然的事情。但是曾几何时,启用实时功能对开发人员来说是一个真正的挑战。开发社区在HTTP长轮询(http long polling)和AJAX上走了很长一段路,但终于还是找到了一种构建真正的实时应用程序的解决方案。...
View Article在Kubernetes上如何基于自定义指标实现应用的自动缩放
如何在Kubernetes上实现应用缩放? 使用静态配置将应用程序部署到生产环境并不是最佳选择。 流量模式可能会快速变化,应用程序应该能够实现自适应: 当需求增加时,应用程序应扩大规模(增加副本数)以保持响应速度。 当需求减少时,应用程序应缩小规模(减少副本数量),以免浪费资源。 Kubernetes以Horizontal Pod Autoscaler的形式为自动缩放应用程序提供了出色的支持。...
View ArticleUber Go语言编码规范
Uber是世界领先的生活出行服务提供商,也是Go语言的早期adopter,根据Uber工程博客的内容,大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累,有大量Go实现的内部工具被Uber开源到github上,诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部的Go风格规范开源到github,经过一年的积累和更新,该规范已...
View ArticleGo 1.13中的错误处理
介绍 在过去的十年中, Go的errors are values的理念在编码实践中运行得也很良好。尽管标准库对错误处理的的支持很少(只有errors.New和fmt.Errorf函数可以用来构造仅包含字符串消息的错误),但是内置的error接口使Go程序员可以添加所需的任何信息。它所需要的只是一个实现Error方法的类型: type QueryError struct { Query string...
View Article如何在Ubuntu 18.04 Server上部署Kubernetes集群
如今,你几乎不可避免地会听到来自Kubernetes的发声,你更没有充分的理由拒绝去听。 一旦一切就绪,这个强大的容器编排工具将以您难以想象的敏捷性来扩展您的操作。 为了实际使用Kubernetes进行部署和管理容器,您首先必须创建Kubernetes服务器集群。 一旦集群建立后,您就能够部署,扩展和管理您的容器化应用程序了。 在Ubuntu Server 18.04的帮助下,我将引导您完成此过程。...
View ArticleGo 1.13中值得关注的几个变化
2019年对于Go语言来说也是一个重要的年份,因为在2019年的11月10日,Go即将迎来其开源10周年的纪念日。在这个重要日子的前夕,在GopherCon 2019大会后,Go项目组在2019.9.4日发布了Go 1.13版本。 这是自2017年GopherCon大会上Russ Cox做“Toward Go 2″主题演讲以来Go项目发布的第四个版本(前三个分别是:go 1.10、go...
View ArticleGo语言的遗产
本文是gohugo作者Steve Francia在意大利佛罗伦萨举办的GoLab上分享的闭幕演讲讲稿的文字版,该演讲的主题为”Go的遗产”。该演讲讨论了Go语言继承的遗产,以及它是如何尊重这些遗产的,并在最后总结了Go希望留给后来者的遗产。 演讲胶片 我们有责任保留好留给我们的遗产,并留下值得我们子孙后代继承的遗产 – 克里斯汀·格雷格(Christine Gregoire) 1. Go语言之前...
View Article图解中文字符编码-Go语言例解
今天几个同事在处理一个有关中文字符编码的问题,感觉他们对字符编码这件事依然理解不够透彻。这里用图文方式对中文字符编码做一个简要的解释,例子使用Go语言。...
View ArticleGo语言项目的安全评估技术
在今年夏天我们对Kubernetes的评估成功之后,我们收到了大量Go项目的安全评估需求。为此,我们将在其他编译语言中使用过的安全评估技术和策略调整适配到多个Go项目中。...
View ArticleGo语言开源十周年
本文翻译自Go官方博客上Russ Cox代表Go核心团队发表的“Go Turns 10″一文。 生日快乐,Go! 这个周末,我们庆祝Go正式对外发布10周年,即Go作为开源编程语言和构建现代网络软件生态系统的10周年诞辰。 为了纪念这一时刻,Go gopher的创建者Renee French(用下面的新作)描绘了这个令人愉快的场景:...
View ArticleGo官方发布的go.dev给gopher们带来了什么
众所周知,Go是一个诞生于Google内部的编程语言,它在2019年11月份开源,在开源后立即受到了来自全世界开发人员的关注与贡献。但初期的Go语言的发展依旧是由Go核心团队的若干leader决定的,这种类“民主集中制”的方法延续了若干年。直到Go核心团队逐渐意识到Go应该更多倾听社区的声音,并让更多的gopher参与到Go项目的开发和贡献中来,甚至影响和决定一些语言特定的演化。于是Go团队开始特意...
View Article计算重现性:一些挑战
写在Go语言开源十周年的日子 by Rob Pike 近期,有人对科学结果的可重现性进行了讨论,并得出了一些让人沮丧的结论。一项研究表明:这种可重现性只有62%。 在某些领域,情况可能更糟。任何依赖于计算的结果都面临着其编程环境不断变化的巨大风险:十年前编写的程序如果没有更改,今天构建成功的机会几乎微乎其微,更不用说运行或正确运行了。...
View ArticleKubernetes Deployment故障排除图解指南
下面是一个示意图,可帮助你调试Kubernetes Deployment(你可以在此处下载它的PDF版本)。 当你希望在Kubernetes中部署应用程序时,你通常会定义三个组件: 一个Deployment – 这是一份用于创建你的应用程序的Pod副本的”食谱”; 一个Service – 一个内部负载均衡器,用于将流量路由到内部的Pod上; 一个Ingress –...
View ArticleGo modules:最小版本选择
一. 介绍 每个依赖管理解决方案都必须解决选择依赖项版本的问题。当前存在的许多版本选择算法都试图识别任何依赖项的“最新最大(latest greatest)”版本。如果您认为语义版本控制(sematic...
View Article图解Go内存分配器
本文翻译自《A visual guide to Go Memory Allocator from scratch (Golang)》。 当我刚开始尝试了解Go的内存分配器时,我发现这真是一件可以令人发疯的事情,因为所有事情似乎都像一个神秘的黑盒(让我无从下手)。由于几乎所有技术魔法都隐藏在抽象之下,因此您需要逐一剥离这些抽象层才能理解它们。...
View ArticleGo语言之禅
本文翻译自Go社区知名Gopher和博主Dave Cheney的文章《The Zen of Go》。 本文来自我在GopherCon Israel 2020上的演讲。文章很长:) 如果您希望阅读精简版,请移步到the-zen-of-go.netlify.com。 该演讲视频还未上线。如上线,我会把它更新到本文中的。 我应该如何编写出好代码?...
View ArticleGo 1.14中值得关注的几个变化
可能是得益于2020年2月26日Go 1.14的发布,在2020年3月份的TIOBE编程语言排行榜上,Go重新进入TOP 10,而去年同期Go仅排行在第18位。虽然Go语言以及其他主流语言在榜单上的“上蹿下跳”让这个榜单的权威性饱受质疑:),但Go在这样的一个时间节点能进入TOP...
View Article