一、我们为什么选择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开发

三、国内外有哪些企业或项目使用Go语言

Go发布之后,很多公司特别是云计算公司开始用Go重构他们的基础架构,很多都是直接采用Go进行了开发,最近热火朝天的Docker就是采用Go开发的。

使用 Go 语言开发的开源项目非常多。早期的 Go 语言开源项目只是通过 Go 语言与传统项目进行C语言库绑定实现,例如 Qt、Sqlite 等;

后期的很多项目都使用 Go 语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量 使用 Go 语言原生开发项目的出现。

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

四、写在最后

当然,一个技术能不能发展起来,关键还要看三点。(以下观点引自https://www.cnblogs.com/qwangxiao/p/8318894.html)

• 有没有一个比较好的社区。像 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 那样的态势。

1.11——Go语言适合做什么相关推荐

  1. 自学golang【第一章:go语言基础知识】为什么要学习go语言?go语言与c语言的关系?go语言创始人?go语言的特性有哪些?go语言适合做什么?国内外有哪些企业或项目使用go语言?

    事先声明:本文部分内容参考了尹成的笔记,如果侵权请联系删除. 我是一名自学go语言的初学者,从今天开始我将会坚持更新go语言的相关知识,从入门到精通,如果大家有什么需要可以加我QQ:239479969 ...

  2. golang语言适合做什么

    golang可以做服务器端开发.golang很适合做日志处理.数据打包.虚拟机处理.数据库代理等工作.在网络编程方面,它还广泛应用于web应用.API应用等领域. 一.应用 Golang的应用方向: ...

  3. python语言适合做什么生意好_学完python可以从事哪些行业?

    随着人工智能和大数据的兴起,Python受到了越来越多人的关注,一跃成为最受欢迎的编程语言之一.Python如此火爆,发展前景怎么样?学完后可以做什么呢?下面,千锋上海带大家了解一下. Python到 ...

  4. ASP.NET适合做互联网吗,适合做电子商务平台吗?

    看下日访问量过千万ip的 和讯股票,.net做的 搜房网,.net做的: 腾讯NBA,.net做的: 投资5个亿的好再买,.net做的: 刚上市不久的麦考林,.net做的: 越来越多的网站在使用.ne ...

  5. python语言能做什么-Python是什么_python能做什么

    Python是什么 Python是一种编程语言,它的名字来源于一个喜剧.也许最初设计Python这种语言的人并没有想到今天Python会在工业和科研上获得如此广泛的使用.著名的自由软件作者Eric R ...

  6. go语言可以做什么?入门Go语言

    每一门语言配置好环境后的第一件事-----------向世界问候 本篇博客带大家公平的了解一下go语言相较其他语言的优势,以及go语言的一些特色 先打印一个hello world感受一下go语言的魅力 ...

  7. 哪种语言更适合做自动化测试?

    经常有测试新手问我:Python和Java语言,哪个更适合做自动化测试?本来想简单的回答一下的,但又觉得对不起大家对小编的信任.因此,小编今天专门写了一篇文章来回答这个问题.欢迎各位大佬补充~ 1.什 ...

  8. python语言最适合的领域_掌握python语言可以做什么?十大应用领域介绍

    python作为一门当下极其火爆的编程语言,得到世界范围内无数编程爱好者和开发者喜欢并不是偶然的,除了要比其他编程语言更容易入门,python还拥有无比广阔的应用前景,薪资待遇也非常不错. 1. WE ...

  9. java写的教育管理的项目_干货分享|推荐12款适合做Java后台管理系统的项目

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥有 ...

最新文章

  1. pytorch 预处理
  2. 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库
  3. C++虚继承(四) --- /d1 reportSingleClassLayout插入看类内存布局
  4. 微信企业号开发之如何建立连接
  5. 6-7 使用函数输出水仙花数_「Java」再议printf函数
  6. 一个25岁董事长给程序员的18条忠告
  7. MATLAB学习笔记(九)
  8. 互联网应用开发架构的演进历程--单体应用->集群->分布式->微服务->ServiceMesh
  9. 苹果涉嫌利用App Store打压屏幕时间应用竞争对手 已被投诉至欧盟
  10. 基于C语言的软件,基于C语言的计算机软件编程分析
  11. 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」
  12. c语言栈中符号 的作用是什么,C语言数据结构----栈的应用(程序的符号匹配检测)...
  13. 输入3个数a,b,c,按大小顺序输出
  14. [转载] python的变量和C++的变量有什么区别
  15. 【面试】最容易被问到的N种排序算法!
  16. 图像处理之基础---叹为观止的图像处理
  17. 龙芯OpenJDK更新策略:没必要跟进小版本,最后大版本更新
  18. ode45matlab例子,ode45(ode45用法举例)
  19. 网游运营基本概念及专业术语
  20. HDU2370——Convert Kilometers to Miles

热门文章

  1. [Xcode 实际操作]七、文件与数据-(18)使用MarkMan与设计师进行心灵沟通
  2. HMI-PLC数据交换方式之一 区域指针
  3. idea创建SpringBoot工程
  4. Java | interface 和 implements关键字【接口,看这篇就够了】
  5. Windows文件搜索软件Everything
  6. 宿舍路由器设置傻瓜教程
  7. 多少开发人员 饿了么_开发个类似饿了么外卖app要多少钱
  8. 怎么把几个pdf合并成一个文件?这个pdf合并的方法不容错过
  9. HTML5 与 CSS3 jQuery部分知识总结
  10. Aliyun 阿里云 机器翻译调用 详解