Original link: Recommend a few high-quality open source projects in the Go direction that can be written on your resume (requires a
Preface
Hello, everyone, my name is asong
. Recently, some readers have always asked me if there are any Go
, which can be written on the resume. I really can’t remember it for a while. I spent two days researching and recommending a few for those with or without work experience. Open source projects, let's take a look at them together.
No work experience
For those who are still in school, in addition to knowing the necessary basic knowledge, they should also have 1-2 projects to take out. It is difficult to pass the resume level with only basics and no practice. For students, it is simple The crud
still needs to be mastered. Next, I recommend several web
projects with relatively complete documentation. After getting started, you can develop in-depth on this basis.
bbs-go
bbs-go
is an Go
language. The backend uses a technology stack:
- iris ( https://github.com/kataras/iris ) Go language mvc framework
- gorm ( http://gorm.io/ ) Go language orm framework
- Nuxt.js ( https://nuxtjs.org/) a server-side page rendering framework based on Vue.js, simple, easy to use, and powerful
- resty ( https://github.com/go-resty/resty ) Go language easy to use http-client
- cron ( https://github.com/robfig/cron ) timing task
- goquery ( https://github.com/PuerkitoBio/goquery ) html dom element analysis
There is also a supporting front-end project, based on Vue
, the function is relatively comprehensive, through this project you can understand the design ideas of developing an open source community, for a novice to get started web
development is still very friendly, but this project needs to pay to watch the build The document, but the code is open source, you can download the source code and study it yourself. The code content is not much and concise, and you should be able to master it for a few days.
Project address: https://gitee.com/mlogclub/bbs-go
Gin-vue-admin
This project is well-known in the field of Go
Gin-vue-admin
is a vue and gin . It integrates jwt authentication, dynamic routing, dynamic menu, casbin authentication, and forms. Generator, code generator and other functions, provide a variety of sample files, but also complete document tutorials and video tutorials. I personally think this project is a must-see project for beginners. After doing it again, the basic crud
will be mastered. Among them, the functions of sharding long pass and code generator are quite useful for reference. You can learn more about it. This project does not need to be introduced too much, the document is more detailed, and it can reach the level of getting started by hand.
Project address: https://github.com/flipped-aurora/gin-vue-admin
rpcx
Now companies are transforming from a single application to a RPC
inseparable from the application of the 061af7702cf399 framework. The current service governance type RPC
framework includes dubbo-go
, go-zero
, go-kit
etc., and the cross-language call type RPC
framework has Thrift
, gRPC
, Hessian
, Finagle
, rpcx
, etc., in terms of understanding for a white RPC
important principle, so you can start rpcx
frame start, rpcx is a distributed Go
language RPC
framework that supports Zookepper
, etcd
, consul
multiple service discovery methods and multiple service routing methods. It is currently one of the best performing RPC frameworks. rpcx
is relatively complete and has a dedicated team to maintain. It is the best choice for novices to get started.
Project address: https://github.com/smallnest/rpcx
Document address: https://doc.rpcx.io/
go-kit
You can pay attention to the go-kit
project. Based on go-kit
you can quickly build robust, reliable, and maintainable microservices. Go-kit provides support for consul, etcd, zookeeper, eureka and other registries. There is a big guy who has open sourced it. A go-kit
practice tutorial:
- Watch this series of blogs: https://juejin.cn/post/6844903794380111886
- The source code address is here: https://github.com/hwholiday/learning_tools/tree/master/go-kit
- The command line tool for go-kit to automatically generate code: https://github.com/kujtimiihoxha/kit
Project address: https://github.com/go-kit/kit
Have work experience
Friends who already have work experience don’t need to look at some basic projects and principles. They can pay more attention to project architecture design, performance optimization, service governance, etc., and think more about how to maintain a project. This is actually not the case. You don't need to look at the open source framework, pay more attention to the framework of your project team, find out the advantages and disadvantages to optimize, and reflect your own value more. If the framework of your own project team is relatively watery, then here are a few excellent open source projects for you to learn from.
zinx
zinx
TCP
long connection server framework developed based on the Go
language, which can be applied in the game field or other long connection fields; we can learn zinx
framework, he has complete video tutorials and documents, through which we can fully understand How to design a lightweight concurrent server, and then zinx
, and make some optimizations, can't it be blown on the resume? ! !
Project address: https://github.com/aceld/zinx
Document address: https://www.kancloud.cn/aceld/zinx
Video address: https://www.bilibili.com/video/av71067087
go-zero
For most of my friends, they started crud
soon as they entered the company. The web
and rpc
frameworks used by the company have been built and used directly. There are few opportunities to participate in how to design a web
framework and rpc
framework. In the interview, but the interviewer still loves to examine these things, so we usually need to pay more attention to how to design a high-performance enterprise framework. go-zero
is an enterprise framework, from which we can learn design worthy of reference; go-zero
integration the web
and rpc
framework is in 20
on the future of open source a good micro-services framework, due go-zero
project is quite large, with the purpose to suggest that you learn, for example, I would like to know the micro-service registration and discovery of the principle of realization , The principle and implementation of the adaptive load balancing algorithm, so that we can look up the source code with a purpose, summarize the learning document and summarize it to form our own things, write it on the resume and blow water, it is not fragrant! ! !
go-zero
is not very complete, and the learning of some knowledge points needs to be summarized and refined by everyone.
Project address: https://github.com/zeromicro/go-zero/blob/master/readme-cn.md
go-nsq
NSQ
is a distributed real-time messaging platform based on the Go language, which can be used for real-time messaging services in large-scale systems, and can process hundreds of millions of messages every day. Its design goal is to run decentralized services in a distributed environment Provide a strong infrastructure. It’s not necessary to say more about his power. The reason I recommend this project is to let everyone learn nsq
is designed. It is simple to use, but how to design is the key point. If you are asked to design a high-performance real-time in the interview Message platform, do you know how to design it?
Project address: https://github.com/nsqio/go-nsq
Learning address: https://cloud.tencent.com/developer/article/1735996
Tidb
Tidb
is a representative product in the NewSQL
PingCAP
. It is compatible with important features such as the MySQL 5.7 protocol and the MySQL ecology. At present, many companies are using Tidb
to solve the problem of relational database, elastic expansion and global distribution. Tidb
uses the Go
language to develop the SQL
layer. The distributed storage engine below uses the rust
language. Using Tidb
has the following advantages:
- Support flexible expansion and contraction;
- Support SQL, compatible with most MySQL syntax, and can directly replace MySQL in most scenarios;
- High availability is supported by default, and data repair and failover are automatically performed;
- Support ACID transactions;
If you are familiar with Tidb
, you can write it on your resume and talk to the interviewer! ! !
Project address: https://github.com/pingcap/tidb
Document address: https://docs.pingcap.com/zh/tidb/stable
kubernetes
When it comes to cloud native, you can’t mention kubernetes
. Now that all companies are going to cloud native, then each of us must understand kubernetes
. Even if you are a business developer, kubernetes
would not be too embarrassed to go out for an interview. This is An essential skill. Kubernetes
is a portable and extensible open source platform for managing containerized workloads and services, which can facilitate declarative configuration and automation. Kubernetes
has a huge and fast-growing ecosystem; Kubernetes
is Go
language, we can start learning from the source code, cooperate with the official documentation, carefully study, find a kubernetes
related work soon took off, and now many do kubernetes
direction All of my friends are also transferred from business development, my friends don’t hurry up to learn! ! !
Project address: https://github.com/kubernetes/kubernetes
Official website document: https://kubernetes.io/docs/home/
Chinese document: https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/
It is recommended to look at the English document, as some parts of the Chinese document are difficult to understand when translated.
Prometheus
Prometheus
is Cloud Native Computing Foundation
, which is a system and service monitoring system. It collects metrics from the configured target at a given time interval, evaluates regular expressions, displays the results, and can trigger an alarm when a specified condition is observed. Now companies basically use Prometheus
for monitoring and reporting, but do you know how it works? Friends who have already worked should not just stay in the use stage. We still have to spend some time to study the core principles. You can also talk to the interviewer in the interview.
Project address: https://github.com/prometheus/prometheus
Document address: https://prometheus.io/blog/
Summarize
In this article, we recommend a few high-quality open source projects for friends with or without work experience. Some projects have been widely used in enterprises. The implementation principles need to be studied deeply, and we can truly understand why in order to talk to the interviewer. And talk.
, this is the end of this article, my name is asong
, see you in the next issue.
created a reader exchange group, welcome you all to join the group and learn and communicate together. Ways to join the group: follow the official account to obtain. For more learning materials, please go to the public account to receive.
Welcome to pay attention to the public account: [Golang DreamWorks]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。