在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、我们为什么选择Go语言选择Go语言的原因可能会有很多,关于Go语言的特性、优势等,我们在之前的文档中也已经介绍了很多了。但是最主要的原因,应该是基于以下两方面的考虑:
二、Go语言能做什么Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,Go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入,而且人数越来越多。 鉴于Go语言的特点和设计的初衷,Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web 应用、API应用、下载应用等;除此之外,Go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。
三、国内外有哪些企业或项目使用Go语言Go发布之后,很多公司特别是云计算公司开始用Go重构他们的基础架构,很多都是直接采用Go进行了开发,最近热火朝天的Docker就是采用Go开发的。 使用 Go 语言开发的开源项目非常多。早期的 Go 语言开源项目只是通过 Go 语言与传统项目进行C语言库绑定实现,例如 Qt、Sqlite 等;后期的很多项目都使用 Go 语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量使用 Go 语言原生开发项目的出现。
采用Go的一些国外公司,如Google、Docker、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS等公司; DockerDocker 是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker 可以在一台物理服务器上快速运行一个或多个实例。基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。例如,启动一个 CentOS 操作系统,并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效。 项目链接: go语言Go 语言自己的早期源码使用C语言和汇编语言写成。从 Go 1.5 版本后,完全使用 Go 语言自身进行编写。Go 语言的源码对了解 Go 语言的底层调度有极大的参考意义,建议希望对 Go 语言有深入了解的读者读一读。 项目链接: KubernetesGoogle 公司开发的构建于 Docker 之上的容器调度服务,用户可以通过 Kubernetes 集群进行云端容器集群管理。 项目链接: kubernetes/kubernetesgithub.com etcd一款分布式、可靠的 KV 存储系统,可以快速进行云配置。 项目链接: beegobeego 是一个类似 Python的 Tornado 框架,采用了 RESTFul 的设计思路,使用 Go 语言编写的一个极轻量级、高可伸缩性和高性能的 Web 应用框架。 项目链接: martini一款快速构建模块化的 Web 应用的 Web 框架。 项目链接: https://github.com/go-martini/martinigithub.com
codis国产的优秀分布式 Redis 解决方案。 项目链接: delveGo语言 强大的调试器,被很多集成环境和编辑器整合。 项目链接: Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过 访问查看facebook开源的项目,比如著名的是平滑升级的grace。 Uber腾讯腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考 腾讯万台规模的Docker应用实践 - InfoQwww.infoq.com
百度目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个 InfoQ - 促进软件开发领域知识与创新的传播www.infoq.com
其次就是百度的消息系统。负责公司手百消息通讯系统服务器端开发及维护。 京东京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。 小米小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/ 。 此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。 360360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上, 还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上 https://blog.golang.org/qihooblog.golang.org
七牛云七牛云用了近50万行代码,来实现整个产品。七牛云存储产品网址: 上线时间:2011-9-1。应用范围:整个产品(包括基础服务、Web端、统计平台、各类小工具等等)Go代码行数占比:99.9%日 PV:保密 美团美团后台流量支撑程序。应用范围:支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能。 滴滴基础服务平台。 金山微看 应用范围:服务接口,后台流程服务,消息系统,图片系统 搜狗搜狗推送系统。Push系统中用于维持与客户端连接的部分。 QOR - 模块化的电商系统
QOR: E-commerce & CMS SDK written in Gogetqor.com
weico产品名:weico 3.0, 服务端所有代码都是用Go实现。 仙侠道
仙侠道官网 - 心动游戏zhuanlan.zhihu.com
快玩游戏
快玩小游戏,单机游戏,网页游戏,快玩游戏,快玩游戏盒zhuanlan.zhihu.com
盛大云CDN
Bmob移动后端云服务平台
群策
群策 - 统一团队沟通,高效完成工作zhuanlan.zhihu.com
BiddingX DSP广告投放系统
街坊四邻
Leanote
Bearychat
宅豆
白板- 设计图讨论工具
实验楼
新浪微博中间件和弹性调度用 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开发。 四、写在最后当然,一个技术能不能发展起来,关键还要看三点。
上述的这三点是非常关键的,新的技术只需要占到其中一到两点就已经很不错了,何况有的技术,比如 Java,是三点全占到了,所以,Java 的发展是如此好。当然,除了上面这三点重要的,还有一些其它的影响因素,比如:
用这些标尺来量一下 Go 语言,我们可以清楚地看到:
所以,Go 语言的未来是不可限量的。当然,我个人觉得,Go 可能会吞食很多 C、C++、Java 的项目。不过,Go 语言所吞食主要的项目应该是中间层的项目,既不是非常底层也不会是业务层。 也就是说,Go 语言不会吞食底层到 C 和 C++ 那个级别的,也不会吞食到高层如 Java 业务层的项目。Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,没有复杂的业务场景,也到不了特别底层(如操作系统)的中间平台层的软件项目或工具。而 C 和 C++ 会被打到更底层,Java 会被打到更上层的业务层。 好了,我们再用上面的标尺来量一下 Go 语言的杀手级应用 Docker,你会发现基本是一样的。
所以,虽然几年前的 Docker ,当时的坑儿还很多,但是,相对于这些大的因素来说,那些小坑儿都不是问题。只是需要一些时间,这些小坑儿在未来 5-10 年就可以完全被填平了。 同样,我们可以看到 Kubernetes 作为服务和容器调度的关键技术一定会是最后的赢家。 最后,我还要说一下,为什么要早一点地进入这些新技术,而不是等待这些技术成熟了后再进入。原因有这么几个。 技术的发展过程非常重要。因为你可以清楚地看到了这种新技术的生态圈发展过程。让我们收获最大的并不是这些技术本身,而是一个技术的变迁和行业的发展。 从中,我们看到了非常具体的各种思潮和思路,这些东西比起 技术本身来说更有价值。因为,这不但让我们重新思考已经掌握的技术以及如何更好地解决已有的问题,而且还让我看到了未来。不但有了技术优势,而且这些知识还让我们的技术生涯多了很多的可能性。 这些关键新技术,可以让你拿到技术的先机。这些对一个需要技术领导力的个人或公司来说都是非常重要的。 一个公司或是个人能够占有技术先机,就会比其它公司或个人有更大的影响力。一旦未来行业需求引爆,那么这个公司或是个人的影响力就会形成一个比较大的护城河,并可以快速地产生经济利益。 Go的应用范围一直在扩大,云计算,微服务,区块链,哪里都有用Go写的重量级项目。docker/kubernetes生态圈,几百/千万行代码,基本统治了云原生应用市场。去年大热的区块链,以太坊的geth,比特币的btcd,闪电网络的lnd,都是Go语言开发。还是那句话,多看看各种语言的生态,或许都并没有你想象的那么不堪。。。Go语言设计上确实不够“先进”,但也是另一种“务实”。其实go不管在国内还是国外已经很受待见了,国外google用的很多,uber也在用,国内有著名的今日头条,每日千亿级的访问妥妥的。多少语言终其一生都没有这么大的应用场景。 |
请发表评论