Golang初识
字节跳动也就是我们常说的今日头条
1.今日头条基于Go语言构建千亿级微服务的实践
今日头条当前后端服务超过80%的流量是跑在Go构建的服务上
微服务数量超过100个
高峰QPS超过700万
日处理请求量超过3000亿
是业内最大规模的Go应用
2.Go构建微服务的历程
在2015年之前,头条的主要编程语言是Python以及部分C++
随着业务和流量的快速增长,服务端的压力越来越大,随之而来的问题频出
Python的解释型语言特性以及落后的多进程服务模型受到了巨大的挑战
此外,当时的服务端是一个典型的单体架构,耦合严重
部分独立功能也急需从单体架构中拆出来
3.为什么选择Go语言?
Go语言相对其他语言具有几点天然的优势:
语法简单,上手快
编译型语言,运行速度快
性能高,编译快,开发效率也不低
天生支持并发,充分利用多核,协程模型是非常优秀的服务端模型,同时也适合网络调用
静态编译,部署方便,编译包小,没有依赖
4.什么是Go?
Go语言是Google于2009年推出的一门新的系统编程语言。
Go的另外一个名字叫Golang,简称云计算时代的C语言。
Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。
Go语言介于C和Python之间,运行速度快,开发效率高。
5.Go的主要特点有哪些?
可直接编译成机器码,不依赖其他库
类型安全和内存安全
以非常直观的极低代价的方案实现高并发
高效的垃圾回收机制
快速编译(同时解决C语言中头文件太多的问题)
为多核计算机提供性能提升的方案
UTF-8编码支持
跨平台编译
内嵌C支持
特点:静态类型语言,但是有动态语言的感觉
1.静态编译
2.垃圾回收
3.简洁的符号和语法
4.平坦的类型系统
5.基于CSP的并行模型
6.高效简单的工具链
7.丰富的标准库
6.Go存在的价值是什么?用来做什么?
Go在谷歌,以软件工程为目的的语言设计
服务器编程
分布式系统
网络编程
内存数据库
云平台
Go是记事本编码吗?
包括vim IDEA Sublime Text Eclipse等众多知名IDE均已支持
vscode idea liteide goland
7.国内知名互联网公司在使用Go语言的有哪些?
百度 BFE项目手百消息通讯系统
阿里 CDN
腾讯 腾讯游戏蓝鲸平台
京东 云消息推送系统、云存储、京东商场
小米 运维监控系统、小米互娱、小米商城、小米视频、小米生态链
360 日志搜索系统Poseidon
美图、滴滴等等
字节跳动 今日头条基于Go语言构建千亿级微服务的实践
8.Go语言写的开源软件有哪些?
Docker 容器
Kubernetes Google Borg的开源实现
Etcd 类似zookeeper的高可用key-value存储
9.什么时候用Go?
做一些页面,逻辑变化大用Python
高性能大规模,分布式集群管理用Go
10.Golang软件下载的地址在哪?
官方下载地址https://golang.org/dl
国内下载地址https://dl.gocn.io
https://golangtc.com/download
我们下载这个go1.9.2.windows-amd64.msi
打开cmdgo versiongo run hello.gopackage mainimport "fmt"func main() {fmt.Println("hello go")}
还要安装Git
11.Go语言开发工具的ide
liteide
https://liteide.org/cn/
https://sourceforge.net/projects/liteide/files
12.Go语言帮助文档
go语言官网https://golang.org
go中文社区https://studygolang.com
go中文在线文档https://studygolang.com/pkgdoc