您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
Go语言是什么?
语言,容器,虚拟机Go语言是什么?
发布时间:2020-12-06加入收藏来源:互联网点击:
问题补充: Docker又是什么?你对新技术怎么看?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
IT行业与其他行业的不同之处就在于技术更迭很快。下面我们就从Go语言和Docker技术入手,分别讨论一下时下最热的话题。
Go语言
今年是Go语言发布的第八个年头,对于Go语言来说也是一个非常值得庆祝的生日,这八年间Go语言不断更新功能来巩固其作为云基础架构语言的地位,也从一个默默无闻的小卒成长为话题度颇高的流行语言。
Go语言八周年之际,Steve Francia 如此写道:
自Go首次公开源代码以来,我们总计已经进行了10次语言,库和工具的发布更新,超过1680名贡献者向该项目的34个存储库提交了超过5万次的commit; 贡献者数量增加了一倍多,仅两年前就增加了一倍。今年我们宣布了关于Go 2的计划 ,这将是我们对Go语言和工具的第一次重大修订。
Go 1.0版本发布于2012年,虽然后续版本中增加了很多新功能,但这丝毫不妨碍它是一个非常稳定的语言。Go语言七周年的时候,Sue Gee发表了《Go Turns Seven With Lots Of Attention》,如今它已更新了两个版本,1.8版本的编译器后端有了很大的改进,可以减少垃圾收集暂停,从而提高编译后端的速度;1.9版本增加了对并行编译的支持,并引入了类型别名来支持代码修复。
Go语言是否真的流行起来了呢?对此,Francia表示:
Go已被世界各地的开发人员所接受,目前约有100万用户。在刚刚发布的报告中,Go语言在最受欢迎的编程语言中位列第九,成功超越了C语言。同时,Go语言也成功跻身GitHub 2017增长最快的编程语言,与上一年相比增长52%,而JavaScript则以44%的增长率从去年的第一位下降到第二位。
在Stack Overflow的2017年开发者调查中,Go是唯一一个既是程序员最喜欢的编程语言Top 5也是最需要的编程语言Top 5。使用过Go语言的人都会深深爱上它,没有使用Go语言的人都想拥有它。
继2009年之后,2016年Go语言再度成为了TIOBE年度语言。
上图显示了从2010年到2017年11月,Go语言在TIOBE上的变化曲线。2016年中期,GO 语言实现了直线快速增长,并很快达到最高峰,不过最近几个月中回落了不少,目前在TIOBE上排名14。
如今,Go语言还在不断扩大,云会是很重要的方向。其博文称:
Go已经成为云基础架构的语言。今天,每个云公司都拥有在Go中实施云基础架构的关键组件,包括Google Cloud,AWS,Microsoft Azure,Digital Ocean,Heroku等等。Go是阿里巴巴,Cloudflare和Dropbox等云计算公司的重要组成部分。Go是开放式基础设施的重要组成部分,包括Kubernetes,Cloud Foundry,Openshift,NATS,Docker,Istio,Etcd,Consul,Juju等等。越来越多的公司选择Go来构建云基础架构解决方案
过去的成绩固然值得骄傲,但是对于Go语言和程序员来说,更重要的是在2.0版本会有哪些新功能引入?让我们一起期待吧!
Docker技术:
最近,我们可能经常会听到一种说法"Docker正在彻底改变IT!"这种说法是否存在炒作嫌疑呢?Docker对于现有格局的破坏性到底在哪里?Docker和虚拟机之间有什么区别?Docker真正的附加价值在哪里?
我们与Docker大牛Nicolas De Loof探讨了这些问题。
问:您是如何与Docker结缘的呢?
Nicolas De Loof:我工作的公司 CloudBees是dotCloud的竞争对手。我与Docker的第一次接触大多是负面的,因为它当时的运行是非常不灵活的。后来,我渐渐发现了不可变基础架构的好处,以及Docker如何让这一切变得更易于实现。
与此同时,我们关闭了PaaS优惠,我开始做更多的尝试,Docker自然的走入了我的生活。
问:我们经常听到"Docker正在彻底改变IT",你认同这种观点吗?Docker技术有什么破坏性?
Nicolas De Loof:容器并不是什么新鲜事物,谷歌已经使用了十年了,之前许多运营团队都采用了LXC。那么是什么让人们开始觉得“Docker有破坏性”呢?是因为它定义了一个更高的层次,以用户为中心的“distributing and running stuff”抽象。
Docker的主要价值在于分发镜像格式和管道。runtime也非常棒,因为它提供了合理的默认设置,很多东西可以直接使用,当然有经验的用户也可以调整runtime,实现细粒度的控制。
问:Docker与普通虚拟机有什么不同?
Nicolas De Loof:Docker与虚拟机的技术角度不同,当然这并不表示它们是完全对立的,事实上我们可以使用虚拟机来实现Docker。但对于大多数用户来说虚拟机的创建和管理是一成不变的,事实上它也需要我们升级维护。
虚拟机是一个完整系统,所以出现问题时很难找到根源所在。Docker与虚拟机并不是互斥的,他们是不同用途的互补技术,虚拟机允许用户通过API管理主机,并提供基础设施的弹性。与此同时,Docker允许将软件定义为小型乐高块来组装,因此它们采用了不变的基础架构,微服务,分布式软件等现代架构。
问:您如何在日常工作中使用Docker?
Nicolas De Loof:就我个人来说,比较依赖Docker进行各种测试,所以我要确保有一个可以与他人共享的可再生环境,防止对我工作站的影响。
除此之外,公司还提供了基于Docker的弹性CI / CD解决方案“CloudBees Jenkins Enterprise”,作为Docker专家,我会尝试让它采用最好的Docker特性。
问:使用Docker时您遇到过什么问题?您认为目前存在的挑战是什么?
Nicolas De Loof:数据持久性是Docker用户最容易误解的元素。有人说,在Docker中不能运行数据库,也许他们只是错过了文档中的“volumes”一章?
当一个人试图从多个容器访问它们时,就会遇到权限问题,这时如果我们试图以“绑定挂载”的方式来管理时,情况会变得更糟,而不会让docker daemon执行voodoo setup。
这并不是一个微不足道的问题,我希望Linux内核/文件系统驱动程序的上游功能做一些更改,以便更易于使用。
问:关于Docker生态系统的演变,您如何评价Docker决定 向CNCF 捐赠containerd runtime ?
Nicolas De Loof:正如我所说,Docker的技术价值不在container runtime,这并不是一个巨大的复制工程。但对于生态系统健康,它们需要确保信任和互操作性,因此必须有一个开放标准和参考实现。
作为一个Java开发人员,我需要对这个方法有一个标准的API文档和参考实现,这并不能防止替代的实现或创新。Docker采用了一种独特的方法:证明了可以工作,然后提取一个开源组件,并确保它成为由OCI驱动的标准化容器生态系统的一部分。
问:您希望在下一个Docker发行版中看到什么功能?
Nicolas De Loof: 首先,我希望获得无特权嵌套容器“Docker in Docker”的支持。DinD的额外特权使得它很难安全,但在我的CI / CD用例的另一边,我需要让用户在dockerized构建环境中运行docker。这在技术上是可行的,因为LXD依赖Linux内核可以做到。
我希望看到的另一个特性是在容器级别实现的用户名称空间,我可以在每个容器的基础上配置用户ID映射。有了文件系统的支持,这就使得组装容器和完全支持共享volume变得很琐碎。但这是一个长期的努力,因为这仍然需要Linux内核文件系统中的一些修复(工作正在进行中)。
上一篇:如何理解每次被熟人从头到脚打量?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |