go-zero实战微服务项目推荐|第六届字节青训营大项目|简易版抖音

GopherTok

项目介绍:http://gophertok.kuaji.club/

项目演示:https://www.bilibili.com/video/BV1sh4y1N7bq/?spm_id_from=333.999.0.0

{09951663-C990-6AA2-14C8-28D9C1DDBDCD}第六届字节跳动青训营大项目作品,使用go-zero搭建的微服务项目,由gopher小队完成,一个简易版抖音项目

🪵架构

eb4302aa8c255a470e8be4becfda63ad

🚀技术栈

功能实现
http框架go-zero
rpc框架go-zero
orm框架gorm
数据库Innodb-cluster,redis-cluster,mongodb
对象存储腾讯云cos,minio
服务发现、注册与配置中心etcd,nacos
链路追踪jaeger
服务监控prometheus,grafana
消息队列kafka
日志搜集filebeat,go-stash,elasticsearch,kibana
网关traefik
部署Docker,docer-compose
CI/CDGithub Action

高可用

  • mysql选择innodb-cluster

image-20230814172330152

  • redis选择redis-cluster

在这里插入图片描述

  • minio集群

MinIO分布式集群架构

四个节点

image-20230816101826428

  • kafka集群

image-20230816101130893

3节点

image-20230816101331794

  • 服务的apirpc启动多个docker实例,api使用traefik负载均衡,rpc通过etcd`实现负载,保证服务的可靠性,高峰时期可以轻松扩容

高并发

  • 调用各个服务的rpc时采用并发调用,显著减少了响应时间

  • 将高频率的数据采用redis作缓存,减少了mysql压力

  • 使用kafka异步写入mysql,增加系统吞吐量

高性能

  • kafka采用聚集写入,大大减少磁盘io和网络io

配置中心和服务发现、注册中心

nacos作为配置中心

image-20230818163632603

etcd作为服务发现和注册中心

e45ceb303cceb5ea188b8fa11f66c768

链路追踪

使用jaeger作为链路追踪

796364212238fb72b302c76a95f124b1

日志搜集

image-20230818164131821

filebeat收集业务日志,然后将日志输出到kafka中作为缓冲,go-stash获取kafka中日志根据配置过滤字段,然后将过滤后的字段输出到elasticsearch中,最后由kibana负责呈现日志

39ca160fbd2b2b385622deef2e79ba03

监控

使用prometheus进行服务监控

42ba4597865261dcddcd1545d78c3d4f

再由grafana进行可视化呈现

image-20230818160820149

网关

使用traefik作为网关,根据路由规则将请求负载均衡到各个服务的api上面

image-20230818163032128

再通过负载均衡到各个服务api容器实例

image-20230818164454219

CI/CD

  • 使用Github Action进行CI/CD,每次提交上去后进行自动化测试
  • 然后可以手动构建各个服务的镜像,构建好后自动推送到dockerhub上面
  • 再ssh登录远程服务器,利用新的镜像和已经写好的docker-compose自动部署好新的容器

🎉感谢

字节跳动青训营
青训营

📣许可证

GopherTokMIT 许可证下开源,请在遵循 MIT 开源证书 规则的前提下使用

总结

这个项目还是花费了我们很多心思的,如果你觉得对比有所帮助,请点击star支持我们,star就是对我们最大的鼓励🥰🥰🥰

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值