go学习笔记-day23
学习是由时间成本和经济成本的,学习go也同样,那么 go 语言能做什么?
摘自博客:
https://blog.csdn.net/weixin_41667472/article/details/109908466
一、我们为什么选择Go语言
执行性能
缩短API的响应时长,解决批量请求访问超时的问题。GO语言不一样,通过协程可以方便的实现API的并行处理,达到处理效率的最大化。 依赖Golang的高性能HTTP Server,提升系统吞吐能力,由PHP的数百级别提升到数千里甚至过万级别。
开发效率
GO语言使用起来简单、代码描述效率高、编码规范统一、上手快。 通过少量的代码,即可实现框架的标准化,并以统一的规范快速构建API业务逻辑。 能快速的构建各种通用组件和公共类库,进一步提升开发效率,实现特定场景下的功能量产。
二、Go语言能做什么
鉴于Go语言的特点和设计的初衷,
Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;
网络编程方面,Go语言广泛应用于Web 应用、API应用、下载应用等;
( Go内置的net/http包基本上把我们平常用到的网络功能都实现了 )
除此之外,Go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。
三、国内外有哪些企业或项目使用Go语言
云计算基础设施领域:
代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。
基础软件:
代表项目:tidb、influxdb、cockroachdb等。
微服务:
代表项目:go-kit、micro、monzo bank的typhon、bilibili等。
互联网基础设施:
代表项目:以太坊、hyperledger等。
go语言
Go 语言自己的早期源码使用C语言和汇编语言写成。从 Go 1.5 版本后,完全使用 Go 语言自身进行编写。Go 语言的源码对了解 Go 语言的底层调度有极大的参考意义,建议希望对 Go 语言有深入了解的读者读一读。
项目链接:
https://github.com/golang/go
beego
beego 是一个类似 Python的 Tornado 框架,采用了 RESTFul 的设计思路,使用 Go 语言编写的一个极轻量级、高可伸缩性和高性能的 Web 应用框架。
项目链接:
https://github.com/astaxie/beego
delve
Go语言
强大的调试器,被很多集成环境和编辑器整合。
项目链接:
https://github.com/derekparker/delve
http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend
盛大云CDN
- 网址:盛大云计算
- 应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等
Go 语言不会吞食底层到 C 和 C++ 那个级别的,也不会吞食到高层如 Java 业务层的项目。Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,没有复杂的业务场景,也到不了特别底层(如操作系统)的中间平台层的软件项目或工具。而 C 和 C++ 会被打到更底层,Java 会被打到更上层的业务层。
杀手级应用:
我们再用上面的标尺来量一下 Go 语言的杀手级应用 Docker,你会发现基本是一样的。
Docker 上手很容易。
Docker 解决了运维中的环境问题以及服务调度的痛点。
Docker 的生态圈中有大公司在后面助力。比如 Google。
Docker 产出了工业界标准 OCI。
Docker 的社区和生态圈已经出现像 Java 和 Linux 那样的态势。
……
同样,我们可以看到 Kubernetes 作为服务和容器调度的关键技术一定会是最后的赢家。