【未来服务器端编程语言】最全空降golang资料补给包(满血战斗),包含文章,书籍,作者论文,理论分析,开源框架,云原生,大佬视频,大厂实战分享ppt
Google · Go语言之父
《Go语言趣学指南》
《Go语言从入门到进阶实战》
《Go语言高并发与微服务实战》
title | Link |
---|---|
【golang云原生】 golang实现行程码、健康码识别 | 点击观看 |
【golang云原生】 golang 实现ping网络指令 | 点击观看 |
【golang云原生】golang 借助公有云实现点播转直播 | 点击观看 |
【golang云原生】如何使用gin框架构建web项目脚手架 | 点击观看 |
【golang云原生】 为什么jwt会被广泛应用 | 点击观看 |
【golang云原生】 golang实现生产者消费者模式 | 点击观看 |
【golang云原生】 go语言UDP网络编程之发送DNS请求 | 点击观看 |
【golang云原生】 go语言快速实现一个web互动直播(一) | 点击观看 |
【golang云原生】go语言快速实现一个web互动直播(二) | 点击观看 |
【golang云原生】golang实现文件上传到对象存储 | 点击观看 |
【golang云原生】论一款强大的验证组件在web开发中的重要性 | 点击观看 |
【golang云原生】golang配合公有云实现机器人流量的拦截 | 点击观看 |
【golang云原生】golang面试题实现一个内存缓存系统 | 点击观看 |
【golang云原生】最受欢迎的开源日志框架logrus实战应用 | 点击观看 |
【golang云原生】基于公有云快速实现邮件推送 | 点击观看 |
项目 | 简介 |
---|---|
docker | 无人不知的虚拟化平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。 |
golang | go本身,也是用go语言实现的,包括他的编译器,要研究go源代码的可以看此项目录 |
kubernetes | Google出品,用于调度和管理docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。 |
gogs | 一款基于git的代码托管系统,类似于github和gitlab,不过其小巧易用,功能强大,部署方便,也有不少用户在使用。 |
syncthing | 开源的文件同步系统,它使用了其独有的对等自由块交换协议,速度很快,据说可以替换BitTorrent Sync。 |
grafana | 一款开源监控度量的看板系统,可以接Graphite、Elasticsearch、InfluxDB等数据源,定制化很高。 |
etcd | 一款分布式的,可靠的K-V存储系统,使用简单,速度快,又安全。 |
hub | 一款更便捷使用github的工具,包装并且扩展了git,提供了很多特性和功能,使用和git差不多。 |
influxdb | 可伸缩的数据库,使用场景主要用来存储测量数据,事件点击以及其他等实时分析数据,用来做监控性能很不错。 |
caddy | 快速的,跨平台的HTTP/2 Web服务器。 |
beego | 国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔。 |
martini | 也是一款不错的Web框架。 |
cayley | Google开源的图数据库,这是一个NoSql数据库,适合处理复杂的,但是结构化低的数据,适用于社交网络,推荐系统等。 |
nsq | 一款开源的实时的,分布式的消息中间件系统。 |
codis | Codis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。 |
delve | 这个Go开发者都知道,一款go应用开发的调试工具。 |
cobra | cobra是一个命令行go库,可以让你创建非常强大的,现代的CLI命令行应用。 |
megaease/easegress | 云本地流量编排系统 |
项目 | 简介 |
---|---|
Viper | Viper 是一个完整的 Go 应用配置解决方案。 |
echo | 高性能、极简主义的 Go Web 框架 |
uber-go/fx | 一个基于依赖注入的 Go 应用框架。 |
Swagger | 生成器、UI 和验证 |
Logrus | Logrus 是一个适用于 Go(golang) 的结构化记录器,与标准库记录器完全 API 兼容。 |
mockery | Golang 的模拟代码自动生成器 |
migrate | 用 Go 编写的数据库迁移。作为 CLI 使用或作为库导入。 |
NSQ | 消息传递 |
sqlx | sqlx 是一个库,它在 Go 的标准 database/sql 库上提供了一组扩展。 |
Macaron | 一款具有高生产力和模块化设计的 Go Web 框架 |
Gin | 轻量 Web 框架 |
zinx | TCP并发服务器框架 |
Negroni | Web 中间件 |
csrf | CSRF 中间件 |
handlers | Go的net/http包的有用处理程序集合 |
SizedWaitGroup | 并发控制 |
concurrent | 并发工具包 |
grab | 文件下载 |
go-netty | 网络框架 |
项目 | 简介 |
---|---|
gorilla/websocket | Go的一个快速、经过良好测试和广泛使用的WebSocket实现。 |
nhooyr/websocket | 常用的Go WebSocket库 |
websocketd | Go 开发的一键搭建 WebSocket 服务器命令行工具 |
ws | WebSocket 开发包 |
melody | WebSocket 服务框架 |
neffos | 一个现代的、快速的、可扩展的websocket框架,带有优雅的Go API |
fastws | fastttp和net/http的快速WebSocket实现。默认支持并发读写操作。 |
Centrifugo | 实时消息服务器,可以与任何语言编写的应用程序后端结合使用 |
goim | 支持集群的 im 及实时推送服务 |
Tinode | 即时消息服务器,通过 websocket/JSON 或 gRPC/TCP 等协议传输 |
WebRTC | WebRTC 实现 |
Berty | 安全的点对点通讯软件 |
Keybase | 即时通讯工具 Keybase 全平台客户端 |
golang/protobuf | Go 版本的 Protocol Buffers |
gogo/protobuf | golang/protobuf 的扩展替代品 |
Objx | 操作 map、slice、JSON 等数据的包 |
gorilla/rpc | 构建基于 HTTP 的 RPC 服务,比如 JSON-RPC |
Twirp | 基于 Protobuf 的 RPC 框架,与 gRPC 类似 |
项目 | 简介 |
---|---|
dubbo-go | Apache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁,与 gRPC/Spring Cloud 生态互联互通,带领 Java 生态享受云原生时代的技术红利 |
NSQ | 实时分布式消息平台 |
NATS | 云原生消息中间件 |
sarama | Kafka 客户端 |
InfluxDB | 时间序列数据库 |
Thanos | 支持 Prometheus 简化部署、高可用、分布式存储 |
CockroachDB | 分布式 SQL 数据库 |
RadonDB | 基于 MySQL 研发的新一代分布式关系型数据库 |
TiDB | 分布式关系型数据库,兼容 MySQL 协议 |
AresDB | Uber 开源的 GPU 驱动的实时分析存储&查询引擎 |
leveldb | LevelDB 的 Go 实现 |
GCache | golang的内存缓存库。支持多种驱逐政策:LRU、LFU、ARC |
go-cache | Go的内存键:值存储/缓存(类似于Memcached)库,适用于单机应用程序。 |
groupcache | 分布式缓存 |
cachego | 支持 Redis、Bolt 等缓存接口 |
go-tagexpr | 字节跳动开源的结构体标签表达式解释器 |
goav | FFmpeg 视频处理 |
rosedb | 基于 bitcask 的 k-v 存储模型,高效、快速、简洁 |
Title | Translation(参考) | Company |
---|---|---|
《Acme: A User Interface for Programmers》 | 程序员的用户界面 | AT&T,贝尔实验室 |
《Understanding Real-World Concurrency Bugs in Go》 | 了解真实go中的并发bug | 宾夕法尼亚州立大学 |
《A Formal Model of the Kubernetes Container Framework》 | Kubernetes容器框架的形式化模型 | 奥斯陆大学 |
《Running Cloud Native Applications on DigitalOcean Kubernetes》 | 在DigitalOcean Kubernetes上运行云本地应用 | 未知 |
《Kubernetes as an Availability Manager for Microservice Applications》 | Kubernetes作为微服务应用程序的可用性管理器 | 康科迪亚大学 |
《Borg, Omega, and Kubernetes》 | Borg、Omega 和 Kubernetes | |
《A Raft-based HTAP Database》 | 基于raft的HTAP数据库 | VLDB基金会论文集 |
《For Reproducible Environments and Containerized Applications》 | 用于可复制环境和容器化应用程序 | 圣克劳德州立大学 |
《Escape from Escape Analysis of Golang》 | golang逃离分析 | 清华大学 |
《Using gRPC with Go》 | 在Go中使用gRPC | 未知 |
这里我们讲云原生,主要目的是为了大家如何利用云原生技术,快速地使用go语言开发。而不是研究云原生本身的技术。
我们以腾讯云为例,列举腾讯云为我们提供的云原生接口项目:(列举部分我们常见的)
Go官网下载地址:https://golang.org/dl/
Go官方镜像站(推荐):https://golang.google.cn/dl/
文件名 | 文件属性 |
---|---|
AUTHORS | 文件,官方 Go语言作者列表 |
CONTRIBUTORS | 文件,第三方贡献者列表 |
LICENSE | 文件,Go语言发布授权协议 |
PATENTS | 文件,专利 |
README | 文件,README文件,大家懂的。提一下,经常有人说:Go官网打不开啊,怎么办?其实,在README中说到了这个。该文件还提到,如果通过二进制安装,需要设置GOROOT环境变量;如果你将Go放在了/usr/local/go中,则可以不设置该环境变量(Windows下是C:\go)。当然,建议不管什么时候都设置GOROOT。另外,确保$GOROOT/bin在PATH目录中。 |
VERSION | 文件,当前Go版本 |
api | 目录,包含所有API列表,方便IDE使用 |
doc | 目录,Go语言的各种文档,官网上有的,这里基本会有,这也就是为什么说可以本地搭建”官网”。这里面有不少其他资源,比如gopher图标之类的。 |
favicon.ico | 文件,官网logo |
include | 目录,Go 基本工具依赖的库的头文件 |
lib | 目录,文档模板 |
misc | 目录,其他的一些工具,相当于大杂烩,大部分是各种编辑器的Go语言支持,还有cgo的例子等 |
robots.txt | 文件,搜索引擎robots文件 |
src | 目录,Go语言源码:基本工具(编译器等)、标准库 |
test | 目录,包含很多测试程序(并非_test.go方式的单元测试,而是包含main包的测试),包括一些fixbug测试。可以通过这个学到一些特性的使用。 |
这里我给大家整理归纳为四大块,分别是语法、中间件、后端开发、云原生。
我们通过这个四个板块的学习,逐步进阶成一个可以从事后端服务器开发的工程师。
下面我们简单介绍中间件和云原生:
MySQL、Redis、MongoDB、Kafka这些常见的中间件,这里我们不做赘述。我们着重简述下Gin、etcd、ElasticSearch、gRPC。
Gin
Gin是一个用Go (Golang)编写的HTTP web框架。它具有一个类似martinii的API,性能要好得多——快了40倍。
官方Github项目:https://github.com/gin-gonic/gin
etcd
Etcd是一种强一致性的分布式键值存储,它提供了一种可靠的方法来存储需要被分布式系统或机器集群访问的数据。它可以在网络分区期间优雅地处理leader选举,并且可以容忍机器故障,即使是leader节点。
官网:https://etcd.io/
ElasticSearch
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
官网:https://www.elastic.co/cn/elasticsearch/
gRPC
gRPC是一个现代的开源高性能远程过程调用(Remote Procedure Call, RPC)框架,可以在任何环境中运行。通过对负载平衡、跟踪、运行状况检查和身份验证的可插拔支持,它可以有效地连接数据中心内和跨数据中心的服务。它也适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。
官网:https://grpc.io/
微服务
微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相互通信。
DevOps
DevOps是一种重视“软件开发人员”和“IT运维技术人员”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
持续部署
持续部署,是一种软件工程方法,意指在软件开发流程中,以自动化方式,频繁而且持续性的,将软件部署到生产环境中,使软件产品能够快速的发展。
持续部署可以整合到持续整合与持续交付(Continuous delivery)的流程之中。
容器化
容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操作系统 (OS)。
想要高效地的学习Golang,单单知道学习哪几个板块,是远远不够的。我们还需要将每个板块的知识点进一步细化。
——成功与失败之间,最重要的是不容忽视的细节
那么开始进一步完善之前的知识点:
每天晚上8点【免费技术直播】:分享Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习。