Go 微服务实战 - 从 0 到 1 搭建一个类 Instagram 应用

2022-01-18 23:09:04 +08:00
 qloog

2022 年给自己定一个小目标,万一实现了呢? 不,是一定要实现 😝

概要

近几年各大应用基本都有社区(动态)的功能,展现形式各不相同,比如国内的有:

国外的有:

也算是比较流行的一个 feature 了,刚好本人近几年也一直从事此类的开发,所以准备搭建一套出来。

社区在 APP 中的作用

简单来说就是使用动态功能可以提高用户在应用内的活跃度,让用户在应用内停留的时间更长(个人观点)。

当然最基本的用户功能也是需要有的,那么如果一个用户发了一条动态,粉丝如何收到呢? 所以这里也离不开关系服务。可以先来看下整体架构。

为什么要做这么一套服务?

主要有两个目的

  1. 之前都是使用 restful API 来开发的,基础服务会用 gRPC 来实现,同时也对之前做的一些不好的地方做下优化和改进
  2. 把实现思路开放出来,希望可以帮助到需要的同学

💡 如果有觉得设计不好的地方也欢迎提供建议,共同改进。

通过这套微服务可以学到什么?

业务架构图

服务划分

该微服务系统整体会包含如下 4 大服务:

1. 用户服务(gRPC+Protocol Buffer)

该服务主要提供以下功能

2. 关系服务(gRPC+Protocol Buffer)

该服务主要提供以下功能

3. 动态服务(HTTP)

该服务主要提供以下功能

4. 聚合层服务

主要对外提供 API 服务,面向的是前端,比如 WEB, iOS, Android 等

上面的几个服务大部分接口都会从此服务进行逻辑调用处理。比如处理用户数据,关系数据等

技术选型

开发步骤

会按照服务逐个进行开发,最后在聚合服务中进行组合,最后供客户端进行调用。

🔚 好,小目标定完了😝,后面就是撸起袖子加油干了了 😭

原文(不定期更新): https://legend-hero-0e2.notion.site/Go-0-1-Instagram-6597618e65a647d282a7d45ff2554246

2615 次点击
所在节点    推广
13 条回复
wsseo
2022-01-18 23:30:56 +08:00
没有地址
nekota
2022-01-19 00:33:43 +08:00
很合理的架构。能展开讲一下聚合层和消息队列的应用吗?
ufan0
2022-01-19 00:38:48 +08:00
持续关注,期待更新
rv54ntjwfm3ug8
2022-01-19 00:54:18 +08:00
你这是来推广你的框架吧 /t/669961 GitHub 1024casts/snake 重定向到 go-eagle/eagle
推广贴请发在 推广 节点
@Livid
rv54ntjwfm3ug8
2022-01-19 01:00:42 +08:00
看了下 OP 已经发了不止一个花式推广贴了 /t/675331
muzuiget
2022-01-19 01:16:03 +08:00
机智如我直奔评论区。
Livid
2022-01-19 03:40:43 +08:00
@qloog 这个主题已经被移动。

请阅读 V2EX 的节点使用说明:

https://www.v2ex.com/help/node
qloog
2022-01-19 10:23:31 +08:00
@theklf4 推广的时代已经过去,现在主要是应用阶段
qloog
2022-01-19 10:27:08 +08:00
qloog
2022-01-19 10:28:33 +08:00
@theklf4 不算吧😭,就是要做实战项目呢
codespots
2022-01-20 18:48:01 +08:00
老哥,我还没用 yaf 写过一个实际项目,你这都从 go 进化到 go 的微服务了
qloog
2022-02-10 10:25:55 +08:00
@codespots 跟上市场形式,转型要快😁
codespots
2022-02-10 11:19:47 +08:00
@qloog 那看来我要 star 下了,跟着你学习 go 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829092

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX