谢请!
Go语言不只是在国内很火,在全球范围了也有不少的大名鼎鼎的公司在使用,比较著名的是全球发展最快的移动互联网公司字节跳动,以及国内最好的二次元视频网站bilibili都在使用Go语言作为主要的后端开发语言,你天天在用的抖音、今日头条、哔哩哔哩背后离不开Go语言的功劳。
全球有哪些公司在使用Go语言
目前在全球范围内使用Go语言的科技公司并不在少数,很多企业更是将Go语言作为自己的核心技术栈,这其中就包括了Google、Facebook、Amazon、Docker、腾讯、百度、阿里、字节跳动、哔哩哔哩视频网站等等。
Google作为开发Go语言的企业,自然是要支持Go语言的,Google的开源项目里面不少就是使用Go语言开发的,Google的GitHub开源主页里面,至少有五分之一的项目都是用Go语言开发的。
Facebook也将Go语言作为主要开发语言,在Facebook内部,PHP、Go都占据了很大的比例,其中大名鼎鼎的grace就是用Go语言开发的。亚马逊的AWS能够成为全球最大的云计算公司,Go语言功不可没,现在阿里云也在追寻AWS的脚步,开始大规模使用Go语言开发自己的云计算产品。
Docker相信已经不需要我过多介绍了,作为目前全行业最好的容器,Go是Docker公司最重要的编程语言。相应的腾讯在也曾做过万台规模的Docker实验,因此腾讯在这一块也做出了很多尝试,大名鼎鼎的腾讯游戏蓝鲸平台就需要很多的Go语言工程师来做容器开发,腾讯的核心技术栈是C/C++,不过很多业务用Go语言做起来方便很多,可是腾讯的技术栈很多都基于C/C++,重构难度极大,因此腾讯在很多新业务都在尝试用Go语言来开发。
春晚的时候大家应该都见识了百度技术的强大,估计不少人都被百度强大的技术实力折服了,这里面百度底层架构的稳定起了很大的作用。百度运维的BFE项目,主要是负责前段流量的介入,以及百度的消息系统,这两块非常重要的业务的后端服务器开发和维护都是使用Go语言。
最后说一说比较年轻的三家中国公司,一家是七牛云,是目前最好的云计算公司之一,七牛云的老板许式玮是原来雷军时代金山WPS的架构师,也是中国最早的Go语言布道者。字节跳动旗下的抖音、今日头条等产品线的后端开发很大比例都是通过Go语言来实现的,因此字节跳动也是Go语言大户。最后是上一次哔哩哔哩的代码泄漏,大家也看到了,哔哩哔哩的核心代码几乎全是Go语言写的。
Go语言有哪些优势
性能极其出色:Go语言的性能非常出色,最关键的是在性能强劲的同时还能像Python语言一样高效地进行开发,要知道Go语言是静态语言,而Python是动态语言。
编译方便、部署简单:Go语言可以直接编译为机器码,编译生成的是一个静态可知从文件,除了glibc之外没有不依赖其他外部库。部署就直接扔一个文件就可以了,目标机器上只需要基础的系统,必要的管理、监控工具就可以了,完全可以不用考虑各种包、库的以来关系,维护成本也大大降低。
出色的并发性能:这一点对于后端语言还是很重要的,曾经Java最大的杀手锏,一个是跨平台、一个就是强大的并发能力。Go语言是语言层面的支持并发,这一点你可以充分利用多核,也可以非常容易的使用并发。
良好工程语言:Go语言可能不具备很好的学术特性,很多高级编程语言有的特性Go语言都没有,可这却让Go语言成为一个非常好的工程语言,没有任何多余的,规范非常简单灵活,这一点你用Java就知道了,也有完善的工具链,几乎就是为工程而生的。
Go语言的应用场景
Go语言在消息推送、监控、容器、处理日志、数据打包、虚拟机处理、文件系统等领域非常有优势,并且非常适合用来做网络并发服务。
服务器编程、分布式系统、数据库代理起、网络编程、内存数据库、以及各种各样的云平台,这都是Go语言的主战场。
说了这么多,我觉得作为一个程序员,你或许真的有必要学习一下Go语言,这真的是一门非常优秀的编程语言。
本文为字节跳动签约作者EmacserVimer原创文章,未经允许转载、抄袭必究!
Go在中国并不火,相对Java来讲查得太远了。
Go所谓的优势并不明显,只是一堆自明清高的家伙在吹嘘。
并发:它的并发效率并不比Java高,甚至大多数场景下比Java慢? 说协程比线程好,大多数场景下体现不了,因为go的特性,任何一个协程不做异常处理,出现异常直接进程崩溃,这比Java落后太多太多。
类库完善: 这比Java查得太远太远,
二个简单的场景,前端js对于long字段会溢出,都会要求long类型直接转换为字符串,go的类库支持不了; 前端对于json格式,字符串数字自动转型,也是无法支持的。
语言生态: 相比Java还很差,一个类库版本管理目前都没有很好的管理起来。
感觉触碰到不少人的G点了。我再说几个实际使用场景上的不好的地方,多触碰一下。
1,日志框架,我要实现log4j2一样,根据不同代码路径实现不同的逻辑设置不同的日志级别,设置写入不同的日志文件或者MQ里面, 你能找到现有的吗? 这必然导致你重新写日志收集工具。
2,json转换,我希望参数字符串数字自动转换到数字类型,对于int64,uint64类型,自动转换为字符串,这在web中js拼装参数,以及js丢失长整形精度很有用。
3,数据库事物管理,至少我接触的代码中对于数据库的事物管理都是开发者自己手动管理,没有spring这样的统一管理,带来的结果就是代码review工作量加大,因为一个疏忽就会导致数据库连接泄露或者数据库事物异常。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/10590.html