You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.2 KiB
2.2 KiB
DouTok 部分设计文档
[TOC]
包划分
graph TD
total[DouTok]
a[applications]
c[cmd]
cfg[config]
p[pkg]
a1[app1]
a2[app2]
a3[app3]
model[model]
dto[dto]
service[service]
middle[middleware]
rpc[rpc]
redis[redis handle]
total --- a
a --- a1
a --- a2
a --- a3
a1 --- handle
a1 --- rpc
total --- model
total --- dto
total --- service
total --- middle
total --- c
total --- cfg
total --- p
p --- redis
模块划分
api
网关入口,接收http请求,转发到微服务端获取结果
user
用户管理微服务 主要服务接口: /douyin/user/register/ /douyin/user/login/ /douyin/user/
relation
关系管理微服务 主要服务接口: /douyin/relation/action/ /douyin/relation/follow/list/ /douyin/relation/follower/list/ /douyin/relation/friend/list/
feed
视频流功能微服务 主要服务接口: /douyin/feed/
publish
视频发布功能微服务 主要服务接口: /douyin/publish/list/ /douyin/publish/action/
favorite
点赞功能微服务 主要服务接口: /douyin/favortie/action/ /douyin/favortite/list/
comment
评论功能微服务 主要服务接口: /douyin/comment/action/ /douyin/comment/list/
message
私信功能微服务 主要服务接口: socket /douyin/message/chat/ /douyin/message/action/
存储方案
hbase:
聊天记录表、评论表、关注表、粉丝表、点赞表、视频表
mysql:
用户信息表(不包括点赞数、关注数等)、用户count表(点赞数、粉丝数等)
各个模块传输到Log模块的日志结构
以json格式通过Kafka传输到Log模块
{
"app": "{模块名}",
"address": "{提供日志的服务所在地址及端口}",
"type": "{日志类型}",
"process_id": 1,
"thread_id": 2,
"go_id": 3,
"request_id": 4
}
上述日志类型包括:
- log:只用于记录的日志
- kafka-topic-partition-field1,field2,field3:除用于记录外,将此条日志再次通过kafka进行传输,topic、partition分别是使用的kafka信息,field1、2、3为要传输的字段名