-
使用Golang开发OpenStack服务的CLI
由于我们需要编写自己服务的客户端,之前参考过magnum的python客户端,编写过一个,整体感受就是: 一件简单的事儿,被他封装的很复杂,而且还有一个关键痛点,部署问题: 1.依赖python环境 2. 蹩脚的二进制打包方式。因此,作为一个产品的CLI,以二进制方式交付会带来诸多方便,比如cloud foundry也用golang重写了他的客户端部分。 Cobra简介 在博客的开篇写过一篇cobra的博客: 如何使用golang编写漂亮的命令行工具, 很多流行的CLI都基于这个库开发,比如ku…
-
kubernetes基础概念解析
本篇文章介绍kubernetes的一些基础概念,也整理出了pdf版本,需要的下拉至文末领取。 目录: 1 、pod 概念 自主式POD:不是被控制器管理的pod。一旦死亡就不会再重生 控制器管理的POD:就是被控制器所管理的POD。 1、自主式POD的基础概念 容器会共用pause的网络栈,也就是说这两个容器就没有他的独立地址了他们都是共同使用pause的地址、共用他的存储卷 Pause 网络栈共享:首先我们要定义一个 POD,就会先启动第一个容器,只要运行一个POD这个容器就会被启动、这个容…
-
找到恶意软件包:Go 语言生态系统中的供应链攻击是怎样的?
近期发生的严重的 SolarWinds 攻击事件和新型 “依赖混淆“攻击,让供应链攻击成为讨论焦点:攻陷供应链中不太安全的元素,导致更安全的目标遭攻陷。 供应链攻击的流行目标一直都是流行编程语言的很多包管理系统,如 NPM (JavaScript)、Rubygems (Ruby) 以及 PyPI (Python)。这些系统常年来遭受恶意攻击,攻击者上传恶意包并等待受害者安装。 目前为止,尚未看到关于 Go 生态系统的供应链攻击情况。鉴于 Go 语言是我的新宠,我决定自己做一些调查。 好在依赖混淆…
-
Go 中如何准确地判断和识别各种网络错误
Go语言集成了简单易用的网路库,今天的推送是一线架构师分享的Go网络库使用入门指南。 Go 自带的网络标准库可能让很多第一次使用它的人感慨,这个库让网络编程的门槛低到了令人发指的地步。然而,封装层次与开发人员的可控性往往是矛盾的。Go 的网络库封装程度算是一个不错的折衷,绝大部分时候,我们只需要调用 Dial, Read, Write Close 几个基本操作就可以了。 但是,网络是复杂的。我们有时候需要细致的处理网络中的各种错误,根据不同的错误进行不同的处理。比如我们遇到一个网络错误时,需要区…
-
使用 Go 实现 TLS socket server
安全传输层协议 TLS,以前称为 SSL(Secure Sockets Layer) ,由于HTTPS的推出受到了很多人的欢迎。但是正如TLS的名称 Transport Layer Security 所示的那样,它实际上是独立于 HTTP,一个更深入的安全协议,我们可以将 TLS 视为 TCP 的安全版本,其提供了对 socket 通信进行加密和签名的功能。在我们的日常开发中,会将 gRPC 协议运行在TLS之上以确保安全。 今天我们来了解一下如何创建一个通过 TLS 加密的 socket 服务…
-
50 万行Go代码,美国一组织从Python 2迁移到 Go
美国教育非营利组织可汗学院(Khan Academy)方面透露,其已经用谷歌的 Go 编程语言完成了 50 万行代码,以取代此前用 Python 2 编写的后台服务器。根据介绍,可汗学院在其 Goliath 项目下实现了从 Python 2 到 Go 的大转变。Goliath 最初是使用 Python 2 实现的;从 2019 年开始,可汗学院逐步将其迁移到了 Go。 当我们开始 Goliath 项目的时候,团队中没有人知道 Go,只是通过实验验证了 Go 是相较而言更好的选择。今天,我们所有的…
-
如何用Golang协程实现流量统计系统?
相信专业的程序开发人员都对并发编程十分熟悉。实现并发编程有进程、线程等方式,但是多进程和多线程并不是很完美。都是有内核进行调度,有 CPU 时间片的概念,进行抢占式调度,对于编程来说,难度比较大。 而 Golang 作为一门现代化的编程语言,它不需要你直面这些复杂的问题。本质上, goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine 调度进行了封装和处理,当遇到长时间执行或者进行系统调用时,会主动把当前 goroutine 的CPU …
-
Go语言并不简单
Go 不是一种很简单的编程语言。尽管它的许多方面都很简单:语法很简单,大多数语义也很简单。然而,语言不仅仅是语法,我们希望利用它编写出实用的代码。利用 Go 编写有用的代码并不总是那么容易 事实证明,通过某种方式将一些简单的功能组合在一起,编写出有用的代码可能会非常棘手。在 Ruby 中,如何删除某个数组中的一项?list.delete_at(i)。如何通过值删除条目?list.delete(value)。非常简单! 然而在 Go 中,事情可没有那么容易,为了删除索引 i,你需要执行以下操作: …
-
Google 开源力作 Istio 实锤爆火!1111页高清(中文版 )官方实战指南开放下载!
“在K8S之后,你觉得未来最有前途的容器技术是什么呢”? 华为云容器服务域产品总监方璞曾在一次大会上向Rancher联合创始人及CEO梁胜发问。 随后自答道“我觉得是Istio。” 以目前发展势头来看,这个曾让谷歌不惜与IBM一众大厂翻脸的Istio,绝对会成为未来炙手可热的容器技术。 如果2021年你打算在生产环境中落地 Service Mesh,那么 Istio 必定在你的考虑范围之内! 因为在后 Kubernetes 时代,服务网格(Service Mesh)技术已完全取代了使用软件库实现…
-
Go 语言自学教程入门到精通实战进阶提升(学习路线+思维导图+视频教程+面试题+学习工具+大厂实战手册)
最近十年来,C/C++在计算机领域其实没有很好得到发展,并没有新的系统编程语言出现。开发效率和系统执行效率在很多情况下不能兼得。要么执行效率高,但低效的开发,如 C++;要么执行低效,但开发还算比较高效,如.NET、Java;所以需要一种拥有较高效的执行速度、编译速度和开发速度的编程语言,Go就横空出世了。 传统的语言比如 C++,大家花费太多时间来学习如何使用这门语言,而不是如何更好的表达开发者的思想,同时编译花费的时间实在太长,对于编写 - 编译 - 运行这个链条来说周期太长。动态语言如Py…