推荐几个可以写到简历上的Go方向优质开源项目(需花点心思研究)
  H4BUkWYYb6vt 2023年11月02日 27 0


前言

哈喽,大家好,我是​​asong​​​。最近总有读者问我有没有​​Go​​语言方向优质的开源项目,可以写在简历上那种,一时还真想不起来,花了两天时间调研了一下,针对有无工作经验的分别推荐几个开源项目,下面我们一起来看一下。

无工作经验

对于还在上学的朋友们,除了知道必要的基础知识外,也要有1-2个拿的出手的项目,光有基础,没有实践,很难过去简历这一关,对于学生而言,简单的​​crud​​​还是要熟练掌握的,接下来就推荐几个文档比较齐全的​​web​​项目,入门后可以在此基础上深度开发。

bbs-go

​bbs-go​​​是一个使用​​Go​​语言搭建的开源社区系统,后端使用技术栈:

  • iris (https://github.com/kataras/iris) Go 语言 mvc 框架
  • gorm (http://gorm.io/) Go 语言 orm 框架
  • Nuxt.js (https://nuxtjs.org/) 基于Vue.js的服务端页面渲染框架,简单、好用、功能强大
  • resty (https://github.com/go-resty/resty) Go 语言好用的 http-client
  • cron (https://github.com/robfig/cron) 定时任务
  • goquery (https://github.com/PuerkitoBio/goquery) html dom 元素解析

还有配套的前端项目,基于​​Vue​​​搭建的,功能还是比较全面的,通过这个项目可以了解开发一个开源社区的设计思路,对于一个新手入门​​web​​开发还是很友好的,但是这个项目需要付费才能观看搭建文档,不过代码是开源的,大家可以把源码下载下来自己研究一下,代码内容不多且简洁,自己深耕几天应该可以掌握。

项目地址:https://gitee.com/mlogclub/bbs-go

Gin-vue-admin

这个项目在​​Go​​​语言领域还是很出名的,​​Gin-vue-admin​​​是一个基于 vue 和 gin 开发的全栈前后端分离的开发基础平台,集成jwt鉴权,动态路由,动态菜单,casbin鉴权,表单生成器,代码生成器等功能,提供多种示例文件,还配有完整的文档教程和视频教程。这个项目个人觉得是新手入门必看项目,跟着做一遍后基本的​​crud​​就都掌握了,其中分片长传、代码生成器的功能还是挺有借鉴意义的,可以深入了解一下。这个项目不需要介绍太多,文档比较详细,可以达到手把手入门的程度。

项目地址:https://github.com/flipped-aurora/gin-vue-admin

rpcx

现在企业都是由单体应用向微服务架构转型,微服务的实践离不开​​RPC​​​框架的应用,目前服务治理型的​​RPC​​​ 框架有​​dubbo-go​​​、​​go-zero​​​、​​go-kit​​​ 等,跨语言调用型的 ​​RPC​​​ 框架有 ​​Thrift​​​、​​gRPC​​​、​​Hessian​​​、​​Finagle​​​、​​rpcx​​​ 等,对于一个小白而言理解​​RPC​​​的原理比较重要,所以可以先从​​rpcx​​​框架入手,rpcx 是一个分布式的​​Go​​​语言的​​RPC​​​框架,支持​​Zookepper​​​、​​etcd​​​、​​consul​​​多种服务发现方式,多种服务路由方式, 是目前性能最好的 RPC 框架之一,​​rpcx​​的文档比较齐全,有专门的团队维护,是新手入门的不二选择。

项目地址:https://github.com/smallnest/rpcx

文档地址:https://doc.rpcx.io/

go-kit

大家可以关注一下​​go-kit​​​这个微服务项目,基于​​go-kit​​​可以快速构建健壮、可靠、可维护的微服务,go-kit提供了对consul、etcd、zookeeper、eureka等注册中心的支持,有一位大佬开源了一份​​go-kit​​微服务实践教程:

  • 源码地址在这里:https://github.com/hwholiday/learning_tools/tree/master/go-kit
  • go-kit自动生成代码的命令行工具:https://github.com/kujtimiihoxha/kit

项目地址:https://github.com/go-kit/kit

有工作经验

已经有工作经验的朋友们就可以不用看一些基础的项目和原理了,可以更多的关注项目的架构设计、性能优化、服务治理等,更多的去思考如何维护好一个项目,这其实并不需要来看开源框架,更多关注自己项目团队的框架,从中找出优缺点去做优化,更加体现自己的价值。如果自己项目团队的框架比较水的话,那么下面就推荐几个优秀的开源项目供你学习借鉴。

zinx

​zinx​​​是一个基于​​Go​​​语言开发的​​TCP​​​长连接服务器框架,其可以应用在游戏领域或其他长连接领域;我们可以学习​​zinx​​​框架的设计思路,他有完整的视频教程和文档,通过这个我们可以完全理解如何设计一个轻量级并发服务器,然后自己基于​​zinx​​自己写一个,并做一些优化,写在简历上岂不是可以吹一吹!!!

项目地址:https://github.com/aceld/zinx

文档地址:https://www.kancloud.cn/aceld/zinx

视频地址:https://www.bilibili.com/video/av71067087

go-zero

对于大多数朋友一进入公司就开始了​​crud​​​,使用的​​web​​​框架、​​rpc​​​框架也都是企业已经搭建好的,直接就拿来用了,很少有机会参与到如何设计一个​​web​​​框架、​​rpc​​​框架之中,但是面试中面试官还爱考查这些东西,所以就需要我们平常多关注如何设计一款高性能的企业框架,​​go-zero​​​就一款企业框架,我们可以从中学习到值得借鉴的的设计;​​go-zero​​​集成了​​web​​​和​​rpc​​​框架,是在​​20​​​年由好未来开源的一款微服务框架,由于​​go-zero​​项目还是比较大的,建议大家带着目的性去学习,比如我想了解微服务注册与发现的原理实现、自适应负载均衡算法原理与实现,这样我们就可以带着目的性去查阅源码,总结学习文档并把它摘要出来形成自己的东西,写在简历上吹吹水他不香嘛!!!

​go-zero​​的文档体系还不是很完善,一些知识点的学习还需要大家自己去总结提炼。

项目地址:https://github.com/zeromicro/go-zero/blob/master/readme-cn.md

go-nsq

​NSQ​​​是一个基于Go语言的分布式实时消息平台,可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。他的强大就不必多说了,我推荐这个项目的原因是让大家去学习​​nsq​​是如何设计的,使用起来是简单的,但是如何设计才是重点,面试中如果让你设计一个高性能的实时消息平台,你知道该如何设计吗?

项目地址:https://github.com/nsqio/go-nsq

学习地址:https://cloud.tencent.com/developer/article/1735996

Tidb

​Tidb​​​是​​NewSQL​​​行业中的代表性产品,由​​PingCAP​​​公司自主设计、研发的开源分布式关系型数据库,兼容MySQL 5.7 协议和 MySQL 生态等重要特性。目前很多公司都在使用​​Tidb​​​,解决了关系型数据库、弹性扩展以及全球分布的问题。​​Tidb​​​采用​​Go​​​语言开发​​SQL​​​层,下边的分布式存储引擎使用​​rust​​​语言,使用​​Tidb​​具有以下优势:

  • 支持弹性的扩缩容;
  • 支持 SQL,兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL;
  • 默认支持高可用,自动进行数据修复和故障转移;
  • 支持 ACID 事务;

如果大家熟悉​​Tidb​​的设计与实现,可以写到简历上,和面试官吹吹水!!!

项目地址:https://github.com/pingcap/tidb

文档地址:https://docs.pingcap.com/zh/tidb/stable

kubernetes

一提到云原生就提不开​​kubernetes​​​,现在各个企业都在上云原生,那么我们每个人都要理解​​kubernetes​​​,即使你是一名业务开发,不会一点​​kubernetes​​​都不太好意思出去面试,这是一个必备技能。​​Kubernetes​​​ 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。​​Kubernetes​​​ 拥有一个庞大且快速增长的生态系统;​​Kubernetes​​​由于是​​Go​​​语言编写,我们可以从源码开始学习,配合着官方文档,仔细专研一番,找个​​kubernetes​​​相关的工作不久起飞了,现在很多做​​kubernetes​​方向的朋友也都是由业务开发转去的,朋友们还不赶快学习来!!!

项目地址:https://github.com/kubernetes/kubernetes

官网文档:https://kubernetes.io/docs/home/

中文文档:https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

推荐看英文文档,中文文档有些地方翻译过来有点难理解。

Prometheus

​Prometheus​​​ 是​​Cloud Native Computing Foundation​​​ 的一个项目,是一个系统和服务监控系统。它以给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并可以在观察到指定条件时触发警报。现在企业基本都使用​​Prometheus​​做监控上报,但是你知道他的工作原理是怎样的吗?已经工作的朋友不要只停留在使用阶段了,其核心原理我们还是要花点时间研究一下的,一样可以在面试中和面试官吹水。

项目地址:https://github.com/prometheus/prometheus

文档地址:https://prometheus.io/blog/

总结

本文我们针对有无工作经验的朋友们推荐了几个优质的开源项目,有些项目已经广泛在企业中应用,其实现原理需要我们深究,真正做到知其所以然,才能做到和面试官的侃侃而谈。

好啦,本文到这里就结束了,我是​​asong​​,我们下期见。

创建了读者交流群,欢迎各位大佬们踊跃入群,一起学习交流。入群方式:关注公众号获取。更多学习资料请到公众号领取。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
H4BUkWYYb6vt