项目拆分记录

项目背景

本次项目有三个,第一个是体育赛事APP,主要功能为围绕足球与篮球比赛进行的业务扩展,如比赛方案推荐,个人竞猜,玩法推荐等等内容。第二个数据开放接口,开放数据服务给他人使用。第三个为工具项目,主要功能为进行赛事信息计算。以上项目一开始全部采用单库单项目进行的项目架构。用户为50W+,单表最高行为7千万+

优化目标

降低耦合度,提高可扩展性,降低Mysql压力,降低请求压力

解决方案

修改代码架构

由单项目架构修改为微服务架构,把项目拆分成四个微服务,第一个是体育赛事APP,第二个数据开放接口,第三个为工具项目,第四个为数据源项目,前面三个的业务内容全部围绕第四数据源进行的扩展

修改项目部署方式

将上列拆分完后的项目,由单服务器修改为分布式,采用NGINX进行请求权重分发

修改Mysql架构

将上列项目由单Mysql数据库修改为多库,根据冷热数据进行数据分布存储或者删除降低单表行量,采用读写分离模式

采用NoSql

对高频数据采用Mysql存储,NoSql缓存的形式进行数据处理,数据源项目中有高频写入与读取的一张表为赔率信息,修改成为了使用MongoDB进行存储于读取

问题与解决

  • Session共享问题,修改为redis存储Token形式,使用JWT
  • 读写分离遇到数据错误,目前采用重新同步的方式,此方式相当繁琐不推荐使用,建议寻找DB管理大师请教方法
  • 由于项目原因,有数据源的关联,但是那些表的数据被我分离出去以服务的形式提供,导致无法关联查询。此问题目前采用中间表的形式进行数据关联,将使用到的字段在本地数据库新建一张实时同步表,字段尽量使用int类型并且建立对应的索引,查询时进行条件关联
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!