GopherTok
项目介绍:http://gophertok.kuaji.club/
项目演示:https://www.bilibili.com/video/BV1sh4y1N7bq/?spm_id_from=333.999.0.0
![]() | 第六届字节跳动青训营大项目作品,使用go-zero搭建的微服务项目,由gopher小队完成,一个简易版抖音项目 |
---|
🪵架构
🚀技术栈
功能 | 实现 |
---|---|
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/CD | Github Action |
高可用
- mysql选择
innodb-cluster
- redis选择
redis-cluster
- minio集群
四个节点
- kafka集群
3节点
- 服务的
api
和rpc
启动多个docker实例,api使用
traefik负载均衡,
rpc通过
etcd`实现负载,保证服务的可靠性,高峰时期可以轻松扩容
高并发
-
调用各个服务的
rpc
时采用并发调用,显著减少了响应时间 -
将高频率的数据采用
redis
作缓存,减少了mysql
压力 -
使用
kafka
异步写入mysql
,增加系统吞吐量
高性能
- kafka采用聚集写入,大大减少磁盘io和网络io
配置中心和服务发现、注册中心
nacos作为配置中心
etcd作为服务发现和注册中心
链路追踪
使用jaeger
作为链路追踪
日志搜集
filebeat
收集业务日志,然后将日志输出到kafka
中作为缓冲,go-stash
获取kafka
中日志根据配置过滤字段,然后将过滤后的字段输出到elasticsearch
中,最后由kibana
负责呈现日志
监控
使用prometheus
进行服务监控
再由grafana
进行可视化呈现
网关
使用traefik
作为网关,根据路由规则将请求负载均衡到各个服务的api
上面
再通过负载均衡到各个服务api
容器实例
CI/CD
- 使用
Github Action
进行CI/CD,每次提交上去后进行自动化测试 - 然后可以手动构建各个服务的镜像,构建好后自动推送到
dockerhub
上面 - 再ssh登录远程服务器,利用新的镜像和已经写好的
docker-compose
自动部署好新的容器
🎉感谢
字节跳动青训营 |
---|
![]() |
📣许可证
GopherTok 在 MIT 许可证下开源,请在遵循 MIT 开源证书 规则的前提下使用
总结
这个项目还是花费了我们很多心思的,如果你觉得对比有所帮助,请点击star支持我们,star就是对我们最大的鼓励🥰🥰🥰