今天跟大家唠唠我搞的这个“mvp ozone”,别想歪,不是游戏哈,是我一个项目代号,灵感来源,当年三星白队,懂的都懂!
事情是这样的,年初接个新项目,甲方爸爸要求高性能、高可用,还要快速迭代,简直就是又要马儿跑得快,又要马儿不吃草。 琢磨几天,决定用微服务架构,语言选型上,Java太重,Python性能差点意思,咬咬牙,上Go。
接下来就是一顿操作猛如虎:
1. 搭环境: 先是把Go环境搭起来,什么GOPATH、GOROOT,环境变量一顿配置,头都大,还好之前玩过,轻车熟路。
2. 建项目: 用`go mod init`创建项目,然后把常用的依赖,比如gin框架、gorm框架、zap日志库,一股脑全给安排上。
3. 搞模块: 按照业务模块,把项目拆成一个个小的service,像用户服务、订单服务、商品服务啥的,每个服务单独一个git仓库,方便独立部署和维护。
4. 撸代码: 这才是重头戏,按照需求文档,吭哧吭哧写代码,各种API接口、数据库操作、业务逻辑,写得我眼都花。
5. 写测试: 为保证代码质量,单元测试、集成测试必须安排上,用`go test`跑一遍,看看有没有什么bug。
6. 搞部署: 用Docker把每个服务打包成镜像,然后用Kubernetes部署到服务器上,再用Nginx做负载均衡,对外提供服务。
7. 盯监控: 为随时掌握系统状态,用Prometheus和Grafana搭建监控系统,监控CPU、内存、磁盘、网络等各种指标,一旦出现异常,立马报警。
中间遇到的坑,那可多去:
数据库连接池配置不合理,导致连接数不够用。 解决办法:调整连接池大小,优化SQL语句。
并发处理不当,导致数据竞争。解决办法:使用锁或者channel来保证线程安全。
日志打印太多,导致磁盘空间不足。解决办法:调整日志级别,定期清理日志。
服务之间调用超时,导致请求失败。解决办法