一个golang初学者的练手项目

kaixinguoruobing · · 3140 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

> 最近写了一个go语言练手项目[osproxy](https://github.com/qinguoyi/osproxy)和[osproxy-grpc](https://github.com/qinguoyi/osproxy-grpc),代码已完全开源到github。 相信不少接触go语言的读者,都是被它"极简协程","高并发","高性能"的特性所吸引,我也不例外,想着学完之后,能快速上手享受一把。 但当我看完基本语法,想找个练手项目时,才发现github上大部分都是博客/后台管理系统之类的,这些项目都是经验丰富的工程师快速迁移经验,写出来的go代码,对初学者不太友好;甚至不少博主推荐Docker/k8s这样的大项目,看的让人心里直打退堂鼓。 我也才接触go语言不久,明白初学者想快速实践,但找不到靠谱项目的心情,所以我希望这个基于go语言,非博客,非后台管理系统的项目能满足你的需求。 我之前有写过C++练手项目[TinyWebServer](https://github.com/qinguoyi/TinyWebServer),被不少人喷,也让不少人入了服务器开发的门,所以完全不要担心[osproxy](https://github.com/qinguoyi/osproxy)这个项目会很复杂,但也不要担心项目让你学不到什么东西。 正如之前很多人对TinyWebServer的评价,[osproxy](https://github.com/qinguoyi/osproxy)同样是一个"麻雀虽小又五脏俱全"的项目。 [osproxy](https://github.com/qinguoyi/osproxy)是一个使用Go语言开发的对象存储分布式代理(object-storage-distributed-proxy),可以作为文件存储微服务,支持docker一键部署,包括但不限于以下功能: * 分布式uid及秒传,支持相同文件不同命名 * 分片读写,大文件上传,merge接口不用等待数据合并,分片上传完直接下载 * 异步任务,易扩展的event-handler,支持分片合并及其他文件处理任务 * 统一封装,降低业务接入复杂度,业务侧只需要存储文件uid * 代理下载,不直接暴露底层存储厂商及格式 * 支持集群部署,proxy模块处理不同机器的分片转发 * 支持MinIO/腾讯COS/阿里OSS等对象存储,易于扩展 * 支持Docker一键部署 ![架构.png](https://static.golangjob.cn/230608/479efeeada6acd1840d0fa9e3cf06445.png) 你能实践这些东西: * go:协程,sync包(waitgroup/once/mutex),channel,interface(可插拔组件注册)等 * grpc:一元RPC,服务器流RPC,客户端流RPC,RPC拦截器,RPC数据转发 * gin:路由组,http服务转发,文件数据转发,中间件 * gorm:简单文件元数据的存储 * nginx:http和grpc的反向代理,及证书自签 * redis:数据缓存,缓存与DB双写,简单的服务注册与发现,分布式锁 * uuid:分布式ID * docker:dockerfile的书写,docker一键部署等 ![功能.png](https://static.golangjob.cn/230608/83fa7440be17b946e473476beef326f4.png) 以上项目仅针对初学者,望知悉。 最后,感谢你能看到这里。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3140 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传