preface

Hello, everyone, I’m Asong. Recently, some readers have asked me if I have any high-quality open source projects in the direction of Go language, which can be written on my resume. I can’t remember at the moment, so I spent two days researching and recommending several open source projects for those with or without work experience. Let’s take a look below.

No working experience

For friends was at school, in addition to know the necessary basic knowledge, also want to have what it takes to one or two shots of projects, light is the foundation, without practice, it is difficult to resume this in the past, for students, simple crud is to master, then recommend a few relatively complete document web project, after the introduction can be based on the depth development.

bbs-go

Bbs-go is an open source community system built with go language, and the backend uses technology stack:

  • Iris (github.com/kataras/iri…). Go language MVC framework
  • Gorm (Gorm.io /) Go LANGUAGE ORM framework
  • Nuxt.js (nuxtjs.org/) based on vue.js server page rendering framework, simple, easy to use, powerful
  • Resty (github.com/go-resty/re…). Go language good HTTP -client
  • Cron (github.com/robfig/cron) Scheduled task
  • Goquery (github.com/PuerkitoBio…). HTML DOM element parsing

And supporting the front end of the project, based on to establish the Vue, still more comprehensive function, through this program can learn to develop a design idea of the open source community, for the introduction to a novice web development is very friendly, but the project need to pay to watch the build document, but the code is open source, you can download the source code oneself study, Code content is not much and concise, their deep cultivation days should be able to master.

Project address: gitee.com/mlogclub/bb…

Gin-vue-admin

Gin-vue-admin is a full stack development base platform based on VUE and Gin development, integrating JWT authentication, dynamic routing, dynamic menu, Casbin authentication, form generator, code generator and other functions, providing a variety of sample files. Complete documentation and video tutorials are also available. Personally, I think this project is a must-see project for beginners. After doing it once, I will have mastered the basic CRUD. The functions of fragment long transmission and code generator are of great reference significance, so I can have a deeper understanding of them. This project does not need much introduction, documentation is more detailed, can achieve the degree of hand – by – hand.

Project address: github.com/flipped-aur…

rpcx

At present, enterprises are transforming from single application to microservice architecture, and the practice of microservice is inseparable from the application of RPC framework. At present, RPC frameworks of service governance include Dubo-Go, Go-Zero, Go-Kit, etc. Cross-language call RPC frameworks include Thrift, gRPC, Hessian, Finagle, RPCX, etc. It is important for a small person to understand the principle of RPC, so you can start with RPCX framework, RPCX is a distributed Go language RPC framework. It supports Zookepper, ETCD, Consul multiple service discovery modes and multiple service routing modes. RPCX is one of the most high-performance RPC frameworks at present. RPCX has complete documentation and a dedicated team to maintain it, making it an excellent choice for beginners.

Project address: github.com/smallnest/r…

Document address: doc.rpcx.io/

go-kit

Go-kit is a microservice that allows you to quickly build robust, reliable, and maintainable microservices. Go-kit provides support for registries such as Consul, ETCD, ZooKeeper, and Eureka. A go-Kit microservices practice tutorial has been open-source by one of the big guys:

  • Watch the series on the blog: juejin.cn/post/684490…
  • The source address is here: github.com/hwholiday/l…
  • Go-kit command line tool for automatically generating code: github.com/kujtimiihox…

Project address: github.com/go-kit/kit

Have working experience

Already has experience of friends can not see the project and principle of some basic, you can pay more attention to the project of architecture design, performance optimization, service management and so on, the more to think about how to maintain good a project, it does not need to see open source framework, pay more attention to themselves, the framework of the project team to find out the advantages and disadvantages to do optimization, Make yourself more valuable. Here are a few good open source projects for you to learn from if your project team’s framework is weak.

zinx

Zinx is a TCP long-connection server framework based on the Go language that can be used in gaming and other long-connection applications. We can learn how to design a lightweight concurrent server by learning from Zinx, who has a complete video tutorial and documentation, and then write one based on Zinx, with some optimizations, and write it on your resume!

Project address: github.com/aceld/zinx

The document address: www.kancloud.cn/aceld/zinx

Video address: www.bilibili.com/video/av710…

go-zero

For most of my friends, THEY started CRUD as soon as they entered the company. The Web framework and RPC framework they used were already built by the company and were used directly. There were few opportunities to participate in the design of a Web framework and RPC framework, but the interviewer still liked to examine these things in the interview. Therefore, we need to pay more attention to how to design a high-performance enterprise framework, go-Zero is an enterprise framework, we can learn from the design worthy of reference; Go-zero integrates the Web and RPC framework, and is a microservice framework opened by Good Future in 20 years. Since the Go-Zero project is still relatively large, it is suggested that you learn it with purpose. For example, I want to know the principle realization of micro-service registration and discovery, and the principle and implementation of adaptive load balancing algorithm. So we can look up the source code with purpose, summarize the learning document and summarize it out to form their own things, write on the resume blowing water he is not sweet!!

The document system of Go-Zero is not perfect yet, and we still need to summarize and refine some knowledge points by ourselves.

Project address: github.com/zeromicro/g…

go-nsq

NSQ is a distributed real-time messaging platform based on Go language, which can be used for real-time messaging services in large-scale systems and can process hundreds of millions of messages per day. Its design goal is to provide a powerful infrastructure for decentralized services running in a distributed environment. The reason why I recommend this project is to let you learn how NSQ is designed. It is easy to use, but how to design is the key. If you are asked to design a high-performance real-time messaging platform in the interview, do you know how to design it?

Project address: github.com/nsqio/go-ns…

Learning to address: cloud.tencent.com/developer/a…

Tidb

Tidb is a representative product in the NewSQL industry. It is an open source distributed relational database independently designed and developed by PingCAP. It is compatible with MySQL 5.7 protocol and MySQL ecology and other important features. Tidb is now being used by many companies to solve the problems of relational databases, elastic scaling, and global distribution. Tidb uses Go language to develop SQL layer, and the distributed storage engine below uses Rust language. Tidb has the following advantages:

  • Support elastic expansion and contraction capacity;

  • SQL support, compatible with most MySQL syntax, in most scenarios can directly replace MySQL;

  • By default, it supports high availability and automatic data recovery and failover.

  • Support ACID transactions;

If you are familiar with the design and implementation of Tidb, you can write it on your resume and talk to your interviewer about it!!

Project address: github.com/pingcap/tid…

Address: document docs.pingcap.com/zh/tidb/sta…

kubernetes

When it comes to cloud native mention not open Kubernetes, now each enterprise is in the cloud native, so we each have to understand Kubernetes, even if you are a business development, not a little Kubernetes are not too shy to go out for an interview, this is a necessary skill. Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services that facilitates declarative configuration and automation. Kubernetes has a large and rapidly growing ecosystem; Kubernetes due to Go language preparation, we can begin to learn from the source, with the official documents, carefully designed, find a Kubernetes related work soon took off, now many do Kubernetes direction of friends are also turned by business development, friends also don’t hurry to learn!!

Project address: github.com/kubernetes/…

IO /docs/home/

Chinese document: kubernetes. IO/useful/docs/con…

It is recommended to read English documents. Some parts of Chinese documents are difficult to understand in translation.

Prometheus

Prometheus, a project of the Cloud Native Computing Foundation, is a system and service monitoring system. It collects metrics from configured targets at a given time interval, evaluates regular expressions, displays results, and can trigger alerts when specified conditions are observed. Prometheus is now used by companies for monitoring and reporting, but do you know how it works? Don’t just stay in the use stage, the core principle we still need to spend some time to study, the same can be in the interview and the interviewer blow water.

Project address: github.com/prometheus/…

Document address: Prometheus. IO /blog/

conclusion

In this article, we recommend several high-quality open source projects for those with or without work experience. Some of these projects have been widely used in enterprises. The implementation principle of these projects requires us to study deeply and truly understand why and why, so as to be able to talk with the interviewer confidently.

Well, that’s the end of this article. I amasongAnd we’ll see you next time.

Created a reader exchange group, welcome you to join the group, learn and exchange together. Way to join the group: pay attention to the public account. For more learning materials, please go to the official number.