首页天道酬勤go语言能干啥(语言)

go语言能干啥(语言)

admin 12-03 09:40 203次浏览

一、我们为什么选择Go语言?

选择Go语言可能有很多原因。在之前的文档中,我们已经介绍了Go语言的许多特性和优势。但主要原因应该基于以下两点考虑:

执行性能缩短了API的响应时间,解决了批量请求访问超时的问题。在Uwork的业务场景中,一个批处理API请求通常涉及对其他接口服务的多次调用。但是在之前的PHP实现模式中,并行调用是非常困难的,但是串行处理并不能从根本上提高处理性能。GO语言则不同,通过协同学可以方便地实现API的并行处理,最大化处理效率。依靠Golang的高性能HTTP Server,系统的吞吐量从几百个PHP级别提升到了几千英里甚至一万多。开发效率GO语言使用简单,代码描述效率高,编码标准统一,使用快捷。用少量的代码,就可以标准化框架,用统一的规范快速构建API业务逻辑。可以快速搭建各种通用组件和公共类库,进一步提高开发效率,实现特定场景下功能的批量生产。二、Go语言能做什么?

Go语言自1.0版本发布以来,吸引了众多开发者的关注,得到了广泛的应用。Go语言简单、高效、并发的特点吸引了众多传统语言开发者,而且数量还在不断增加。

鉴于Go语言的特点和设计初衷,Go语言作为一种服务器编程语言,非常适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等。在网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等。此外,Go语言也适用于内存数据库和云平台领域。目前国外很多云平台都是Go开发的。

服务器编程,如果你以前用C或者C来做那些事情,用Go是非常合适的,比如处理日志、数据打包、虚拟机处理、文件系统等等。分布式系统、数据库代理、中间件等。如Etcd。目前应用最广泛的网络编程包括Web应用、API应用和下载应用,Go内置的net/http包基本实现了我们平时使用的网络功能。数据库云平台的运营与发展。目前国外很多云平台都在使用Go开发。3.国内外有哪些企业或项目使用Go语言?

Go发布后,很多公司,尤其是云计算公司,开始使用Go来重构自己的基础设施,很多都是直接用Go开发的。最近,如火如荼的Docker用Go开发。

有许多使用Go语言开发的开源项目。早期的Go开源项目只是通过将Go语言与C语言库中的传统项目绑定来实现的,如Qt、Sqlite等。后期的很多项目都是用Go语言重新原生实现的,比其他语言更简单,这也导致了大量使用Go语言的原生开发项目的出现。

云计算基础设施领域代表性项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。基础软件代表项目:tidb、influxdb、cockroachdb等。微服务代表项目:go-kit、Micro、哔哩哔哩蒙佐银行的typhon等。互联网基础设施代表项目:Ethereum、hyperledger等。部分采用Go的国外公司,如谷歌、Docker、苹果、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS等公司;

Go开发的国内企业:如阿里巴巴云CDN、百度、小米、奇牛、PingCAP、华为、金山软件、猎豹移动、饿了么等。

码头工人

Docker是一种操作系统级的虚拟化技术,它可以将操作系统与应用程序隔离开来,也可以称为容器。Docker可以在物理服务器上快速运行一个或多个实例。基于lxc的虚拟包装工具可以搭建PAAS平台。例如,启动一个CentOS操作系统,并在执行其内部命令行上的指令后完成。整个过程就像在操作系统中一样高效。

项目链接:

https://github.com/docker/docker

Go语言

Go语言自己的早期源代码是用C语言和汇编语言编写的。从GO的1.5版本开始,完全是用Go语言自己写的。Go语言的源代码对于理解Go语言的底层调度有很大的参考意义。建议想要深入了解Go语言的读者阅读。

项目链接:

https://github.com/golang/go

Kubernetes

由谷歌开发并建立在Docker上的容器调度服务使用户能够通过Kubernetes集群管理云容器集群。

项目链接:

https://github.com/kubernetes/kubernetes

etcd

一个分布式可靠的KV存储系统,可以快速配置云。

项目链接:

https://github.com/coreos/etcd

毕戈

Beego是一个类似于Python的Tornado框架,采用了RESTFul的设计思想,是一个非常轻量级、高度可扩展、高性能的由go语言编写的Web应用框架。

项目链接:

https://github.com/astaxie/beego

马提尼酒

快速构建模块化网络

应用的 Web 框架。

项目链接:

https://github.com/go-martini/martini

codis

国产的优秀分布式 Redis 解决方案。

项目链接:

https://github.com/CodisLabs/codis

delve

Go语言

强大的调试器,被很多集成环境和编辑器整合。

项目链接:

https://github.com/derekparker/delve

Facebook

Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过https://github.com/facebookgo访问查看facebook开源的项目,比如著名的是平滑升级的grace。

Uber

腾讯

腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice 。

百度

目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个 http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend 。

其次就是百度的消息系统。负责公司手百消息通讯系统服务器端开发及维护。

京东

京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。

小米

小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/ 。

此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

360

360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon.

还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上 https://blog.golang.org/qihoo。

七牛云

七牛云用了近50万行代码,来实现整个产品。七牛云存储产品网址:http://qiniu.com/。上线时间:2011-9-1。应用范围:整个产品(包括基础服务、Web端、统计平台、各类小工具等等)Go代码行数占比:99.9%日 PV:保密

美团

美团后台流量支撑程序。应用范围:支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能。

滴滴

基础服务平台。

###金山微看

应用范围:服务接口,后台流程服务,消息系统,图片系统

搜狗

搜狗推送系统。Push系统中用于维持与客户端连接的部分。

QOR - 模块化的电商系统

QOR官网: QOR: E-commerce & CMS SDK written in Gogithub地址: qor/qor · GitHub应用范围: 整个产品

weico

产品名:weico 3.0, 服务端所有代码都是用Go实现。

仙侠道

产品网址:仙侠道官网 - 心动游戏应用范围: 游戏服务端(通讯、逻辑、数据存储)

快玩游戏

网址:快玩小游戏,单机游戏,网页游戏,快玩游戏,快玩游戏盒 应用范围:实时消息系统、用户认证、用户会话、统一统计接口

盛大云CDN

网址:盛大云计算应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等

Bmob移动后端云服务平台

产品网址:Bmob移动后端云服务平台应用范围:Restful API(使用Beego)、统计分析平台、常用服务如发邮件、队列异步处理、统计用户空间和接口请求

群策

网址:群策 - 统一团队沟通,高效完成工作应用范围:全系统

BiddingX DSP广告投放系统

网址:BiddingX_专业的DSP解决方案供应商应用范围:竞价投放、曝光统计、点击跳转

街坊四邻

网址:首页 - 街坊四邻应用范围:后台服务

Leanote

网址:Leanote

Bearychat

网址:BearyChat

宅豆

网址:宅豆网 - 自筑最美家,宅豆随你搭

白板- 设计图讨论工具

网址:白板

实验楼

网址:实验楼 - 第一家以实验为核心的IT在线教育平台

新浪微博

中间件和弹性调度用 Java 和 Go 编写,微博视频转码及存储服务用 Go 编写。

爱奇艺

VR 后台系统中间件,VR 端的 HTTP 接口。

猎豹移动

消息推送

网易

网易蜂巢容器公有云。

哔哩哔哩

弹幕

巨人网络

部分手机游戏的服务端。

今日头条

Nsq:Nsq 是由Go语言开发的高性能、高可用消息队列系统,性能非常高,每天能处理数十亿条的消息;

Packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者

Skynet:分布式调度框架

Doozer:分布式同步工具,类似ZooKeeper

Heka:mazila开源的日志处理系统

Cbfs:couchbase开源的分布式文件系统

Tsuru:开源的PAAS平台,和SAE实现的功能一模一样

Groupcache:memcahe作者写的用于Google下载系统的缓存系统

God:类似redis的缓存系统,但是支持分布式和扩展性

Gor:网络流量抓包和重放工具

还有很多,比如阿里中间件、聚美优品、高升控股、探探、斗鱼直播、人人车、亚信、Udesk、方付通、招财猫、三一集团、美餐网等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。Go语言作为一门大型项目开发语言,在很多大公司相继使用,甚至完全转向Go开发。

四、写在最后

当然,一个技术能不能发展起来,关键还要看三点。

有没有一个比较好的社区。像 C、C++、Java、Python 和 JavaScript 的生态圈都是非常丰富和火爆的。尤其是有很多商业机构参与的社区那就更为人气爆棚了,比如 Linux 的社区。有没有一个工业化的标准。像 C、C++、Java 都是有标准化组织的。尤其是 Java,其在架构上还搞出了像 J2EE 这样的企业级标准。有没有一个或多个杀手级应用。C、C++ 和 Java 的杀手级应用不用多说了,就算是对于 PHP 这样还不能算是一个好的编程语言来说,因为是 Linux 时代的第一个杀手级解决方案 LAMP 中的关键技术,所以,也发展起来了。

上述的这三点是非常关键的,新的技术只需要占到其中一到两点就已经很不错了,何况有的技术,比如 Java,是三点全占到了,所以,Java 的发展是如此好。当然,除了上面这三点重要的,还有一些其它的影响因素,比如:

学习曲线是否低,上手是否快。这点非常重要,C++ 在这点上越做越不好了。有没有一个不错的提高开发效率的开发框架。如:Java 的 Spring 框架,C++ 的 STL 等。是否有一个或多个巨型的技术公司作为后盾。如:Java 和 Linux 后面的 IBM、Sun……有没有解决软件开发中的痛点。如:Java 解决了 C 和 C++ 的内存管理问题。

用这些标尺来量一下 Go 语言,我们可以清楚地看到:

Go 语言容易上手;Go 语言解决了并发编程和写底层应用开发效率的痛点;Go 语言有 Google 这个世界一流的技术公司在后面;Go 语言的杀手级应用是 Docker,而 Docker 的生态圈在这几年完全爆棚了。

所以,Go 语言的未来是不可限量的。当然,我个人觉得,Go 可能会吞食很多 C、C++、Java 的项目。不过,Go 语言所吞食主要的项目应该是中间层的项目,既不是非常底层也不会是业务层。

也就是说,Go 语言不会吞食底层到 C 和 C++ 那个级别的,也不会吞食到高层如 Java 业务层的项目。Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,没有复杂的业务场景,也到不了特别底层(如操作系统)的中间平台层的软件项目或工具。而 C 和 C++ 会被打到更底层,Java 会被打到更上层的业务层。

好了,我们再用上面的标尺来量一下 Go 语言的杀手级应用 Docker,你会发现基本是一样的。

Docker 上手很容易。Docker 解决了运维中的环境问题以及服务调度的痛点。Docker 的生态圈中有大公司在后面助力。比如 Google。Docker 产出了工业界标准 OCI。Docker 的社区和生态圈已经出现像 Java 和 Linux 那样的态势。……

所以,虽然几年前的 Docker ,当时的坑儿还很多,但是,相对于这些大的因素来说,那些fzdmz都不是问题。只是需要一些时间,这些fzdmz在未来 5-10 年就可以完全被填平了。

同样,我们可以看到 Kubernetes 作为服务和容器调度的关键技术一定会是最后的赢家。

最后,我还要说一下,为什么要早一点地进入这些新技术,而不是等待这些技术成熟了后再进入。原因有这么几个。

技术的发展过程非常重要。因为你可以清楚地看到了这种新技术的生态圈发展过程。让我们收获最大的并不是这些技术本身,而是一个技术的变迁和行业的发展。

从中,我们看到了非常具体的各种思潮和思路,这些东西比起 技术本身来说更有价值。因为,这不但让我们重新思考已经掌握的技术以及如何更好地解决已有的问题,而且还让我看到了未来。不但有了技术优势,而且这些知识还让我们的技术生涯多了很多的可能性。

这些关键新技术,可以让你拿到技术的先机。这些对一个需要技术领导力的个人或公司来说都是非常重要的。

一个公司或是个人能够占有技术先机,就会比其它公司或个人有更大的影响力。一旦未来行业需求引爆,那么这个公司或是个人的影响力就会形成一个比较大的护城河,并可以快速地产生经济利益。

Go的应用范围一直在扩大,云计算,微服务,区块链,哪里都有用Go写的重量级项目。docker/kubernetes生态圈,几百/千万行代码,基本统治了云原生应用市场。去年大热的区块链,以太坊的geth,比特币的btcd,闪电网络的lnd,都是Go语言开发。还是那句话,多看看各种语言的生态,或许都并没有你想象的那么不堪。。。Go语言设计上确实不够“先进”,但也是另一种“务实”。其实go不管在国内还是国外已经很受待见了,国外google用的很多,uber也在用,国内有著名的今日头条,每日千亿级的访问妥妥的。多少语言xndwt都没有这么大的应用场景。

go并发编程sync.Cond使用场景及实现原理是什么java计算机毕业设计网上超市系统源码+系统+数据库+lw文档+mybatis+运行部署在create-react-app项目中将SVG作为ReactComponent导入时变得不确定在字符串中搜索符合特定条件的子字符串C++构造析构赋值运算函数怎么应用
开放api接口什么意思(api聚合模式) 流放之路做装备(QQ小程序女神之路打不开)
相关内容