A total of eight stages of learning roadmap: Go core programming — database processing –Web development framework — multi-cloud management platform — user management platform — monitoring and alarm system — release system –Docker and K8S.
This paper is the first stage: GO core programming, and the learning roadmap and tutorial of the remaining stage are sorted out in the following three articles.
Go language: an up-and-comer from a prestigious family
Go was created at Google in 2009 and written by three computer gurus, Rob Pike, Ken Thomp-Son, and Robert Griesemer. Due to its pedigree, Go attracted a lot of attention from developers when it was born.The Go language is syntactically similar to C, but it adds memory safety, garbage collection, structural morphology, andCSP-style
Concurrent computing and other advantages. Most importantly, Go is designed to make multi-core, networked computers and large code bases more efficient, helping programmers quickly scale software development and deployment.
Go language advantage: the future is foreseeable
Go has millions of users across industries, experience areas, and engineering disciplines. Go language has the advantages of concise syntax, easy to use, simple format and fast speed, which makes it one of the most rapidly developing languages. In addition, it has a thriving open source community.
As Go usage grew, more and more basic services were built. Popular open source apps built on Go include Docker, Hugo and Kubernetes. Anthos, Google’s hybrid cloud platform, is also built on Go.
Go was originally designed to support a wide range of Google services and infrastructure. Now, Go is not only widely used in the United States, but also increasingly mature in China. The technical teams of alibaba, JD.com, Sogou, Meituan and other first-tier major manufacturers have shared relevant information on their official accounts. Interested partners can look for it.Internet infrastructure representative projects: Ethereum, Hyperledger, etc. Some foreign companies that use Go, such as Google, Docker, Apple, Cloud Foundry, CloudFlare, Couchbase, CoreOS, Dropbox, MongoDB, AWS, etc. Domestic enterprises using Go development: such as Ali Cloud CDN, Baidu, Xiaomi, Seven Cattle, PingCAP, Huawei, Kingsoft software, Cheetah Mobile, Ele. me and other companies.
Facebook is also using it, and they’ve created an open source organization on Github called Facebook Go, which you can visit at github.com/facebookgo…
As a large company in China, Tencent still dares to try, especially in the field of Docker containerization. They have done the practice of Docker 10,000 units in 15 years.
Xiaomi’s support for Golang is so open for its operations monitoring system, known as open-falcon.com/. In addition, Golang is used by teams such as Mi Interactive Entertainment, MI Mall, MI Video and MI Eco-Chain.
360 also uses Golang quite a bit. One is Poseidon, an open source log search system hosted on Github, as well as 360’s push team, who wrote a blog post on Golang’s official blog blog.golang.org/qihoo.
Meituan use Go language to do background flow support procedures. Applications include supporting back-end traffic (sorting, recommendation, search, etc.), load balancing, cache, fault tolerance, conditional shunting, and performance statistics (QPS, LATENCY).
More than 80% of the traffic of Toutiao’s current back-end services is running on the services constructed by Go. The number of microservices exceeds 100, the peak QPS exceeds 7 million, and the daily request processing volume exceeds 300 billion, which may be the largest Go application in the industry.
There are many others, such as Ali middleware, Baidu, Jingdong Cloud, Didi, Jinshan Weikan, Sina Weibo, IQiyi, netease, Bilibili, Jumei Youping, Gaosheng Holdings, Tantan, Douyu Live, Renren Car, Asiainxin, Udesk, Fangtong, Zhaicaimao, Sany Group, Meishan, etc. Generally, Golang chooses the appropriate product system for his company, such as message push, monitoring, container, etc. Golang is particularly suitable for network concurrent services, which is his strength, so it is also used in these projects first. Go language as a large project development language, in many large companies have been used, or even completely switch to Go development.
Top1: the programming languages programmers most want to learnRecruitment websites are the barometer of the industry. This year, we found that more and more Go developers, such as Zhihu and Bilibili, migrated to Go. Instead, Python development hiring, which had been hot, declined.IT industry revealed: What are the 10 most popular jobs for 2020? What about salaries?HackerRank is a platform that brings together more than 5 million developers (more than 20% of the global total) and more than 1,200 customers. HackerRank launched a community survey of programmer skills, with more than 70,000 developers from more than 100 countries participating.
Application area of Go language
Early open source projects of Go language are only implemented by binding C language library with traditional projects through Go language, such as Qt and Sqlite. Many of the later projects were implemented natively in Go, which was easier than other languages, leading to the emergence of a large number of native development projects using Go.
Representative projects in the field of cloud computing infrastructure: Docker, Kubernetes, ETCD, Consul, Cloudflare CDN, Qiniu Cloud Storage, etc.
Representative projects of basic software: TIDB, InfluxDB, CockroachDB, etc.
Representative projects of micro services: Go-Kit, Micro, TYPHON of Monzo Bank, Bilibili, etc.
Docker is an operating system-level virtualization technology that can isolate operating systems and applications, also known as containers. Docker can quickly run one or more instances on a physical server. LXC based on a virtual packaging tool, to achieve the PAAS platform. For example, starting a CentOS operating system and executing commands from its internal command line ends the whole process as efficiently as if it were operating on its own.
Project link: github.com/docker/dock…
KubernetesGoogle is a container scheduling service built on Docker developed by Kubernetes. Users can manage cloud container cluster through Kubernetes cluster.
Project link: github.com/kubernetes/…
Etcd is a distributed, reliable KV storage system for fast cloud configuration.
Project link: github.com/coreos/etcd
Beegobeego is a Python like Tornado framework, which adopts RESTFul design ideas and uses Go language to write a very lightweight, high scalability and high performance Web application framework.
Project link: github.com/astaxie/bee…
Martini is a Web framework for quickly building modular Web applications. Project link: github.com/go-martini/…
Codis domestic excellent distributed Redis solution. Project link: github.com/CodisLabs/c…
1. Basic programming of Go language
Understand the history and characteristics of GO language, learn to build the GO development environment and use the tool chain, master the basic grammar of GO, GO object-oriented grammar, GO to IO operations, etc.
(1) Technical points
1. Development history of Go
2. Build the Go development environment
3.Go program structure introduction
4. Variable declaration & assignment
5. Basic data type definitions & operations
7.Go language process control
8. Compound data type definitions & operations
9. Function definition & call of Go
10. Error handling in Go
Package definition & import in Go language
Structure definition and object-oriented programming
13.Go language method declaration
14. Variable/attribute/method visibility
15.Go files and IO operations
16. Coding and decoding of Go language
17. Interface introduction and use of Go
18. Principle and use of reflection
(2) Unlock actual combat
1. Complete the number guessing game
2. Collect statistics on the number of occurrences for each IP address and status code
Second, Go advanced concurrent programming
(1) Technical points
1. Introduction and combat of Goroutine
2. Closure traps
3. Count semaphore
4. Read/write locks and mutex locks
Atomic operation
6. Pipeline (buffer pipeline, read/write pipeline)
7. Multiplexing
8. Timer/retard
9. Parse common functions of runtime package
(2) Unlock actual combat
1. Preliminary mastery of concurrent programming essentials
2. Master the producer/consumer model
Go advanced network programming
Understand network programming, familiar with HTTP protocol, remote method call RPC and its implementation, master TCP, UDP server, client development, Go WEB programming, Go WEB Client development, etc.
(1) Technical points
1. The Socket is introduced
2. Introduction to TCP and UDP server and client development
3.HTTP protocol introduction
4. Remote method call RestAPI, RPC introduction
5.WEB programming processor introduction
6.HTML and template introduction
(2) Unlock actual combat
1. Command line end-to-end chat system
2. Simple file service
3. Complete the cli user management function (login, query, add, modify, and delete functions, and use files to store data)
4. Complete the command line end-to-end chat system
※ Some articles from the network, if any infringement, please contact to delete; More articles and materials | click behind the text to the left left left 100 gpython self-study data package Ali cloud K8s practical manual guide] [ali cloud CDN row pit CDN ECS Hadoop large data of actual combat operations guide the conversation practice manual manual Knative cloud native application development guide OSS Operation and maintenance actual combat manual cloud native architecture white paper Zabbix enterprise distributed monitoring system source document 10G large factory interview questions