Skip to content

[Beta]webook是一个仿简书的Golang项目,包括登录注册、验证码登录、

Notifications You must be signed in to change notification settings

Yangyiliy-liuyang/webook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

023dd7e · Apr 4, 2024
Mar 20, 2024
Mar 14, 2024
Apr 4, 2024
Mar 29, 2024
Mar 28, 2024
Mar 27, 2024
Nov 2, 2023
Nov 6, 2023
Mar 15, 2024
Mar 24, 2024
Mar 27, 2024
Mar 25, 2024
Mar 27, 2024
Mar 27, 2024
Mar 26, 2024
Mar 26, 2024
Nov 8, 2023
Nov 8, 2023
Nov 8, 2023
Nov 8, 2023
Nov 8, 2023
Nov 9, 2023
Nov 9, 2023
Nov 8, 2023
Mar 22, 2024
Mar 27, 2024

Repository files navigation

webook

webook 是一个仿简书的项目 gin

  • gorm
  • cors
  • regex
  • bcrypt
  • sessions
  • redis
  • JWT
  • sms
  • lua脚本
  • wire
  • mock
  • sqlmock
  • viper
  • etcd
  • Zap
  • sarama

目录结构

启动

docker compose up

登录注册 JWT会话管理 限流 使用UserAgent增强JWT安全性

领域对象domain.User·业务概念 数据库对象dao.User·直接映射到表结构

  • 时区问题int64,统一使用UTC0的时区,返回数据才处理 服务器 go应用 数据库
  • 唯一索引冲突unique
  • Region 使用含糊地区代表
  • 联表 使用json代表Addr string或者反向持有uid 为什么使用自增主键?
  • 数据库中的数据存储是一个树型结构,自增意味着树朝一个方向增长,id相邻的大概率在磁盘上也是相邻的 ,充分利用操作系统预读机制。 不是自增则意味中间插入数据,页分页

docker kubernetes部署

对Profile redis缓存 异步

短信登录 验证码发送 校验 使用Redis缓存 lua脚本

业务规则

  • 一个手机号码,一分钟只能发一次,有效时间十分钟(本身系统有限流)
  • 验证通过了,不可以再用
  • 三次验证失败后,不可以再用
  • 验证失败,只提示用户验证码不对,不提示过于频繁的失败原因 业务层上、分布式环境下并发,不是语言层面上的并发,不可以通过channel 或者 sync.lock 检查数据-doingSth 考虑并发安全 使用分布式锁或者lua脚本

DDD领域理论 REST风格 依赖注入

面向接口编程 超前设计 最小化实现

单元测试 集成测试 mock sqlmock

微信登录

Viper配置管理 etcd远程配置中心

适配器模式 装饰器模式

TDD测试驱动开发

发帖功能

分发制作库和线上库,依然MongoDB实现大文本存储,采用雪花算法生成主键,解决MongoDB无法生成自增主键的问题 实现不同的缓存方案管理

Kafka消息队列

About

[Beta]webook是一个仿简书的Golang项目,包括登录注册、验证码登录、

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published