用户中心服务开发总结
1 前言
公司最初的用户中心是.net实现的,由于业务的发展和公司战略的考虑,需要把老的用户系统进行重构使用Java重写。这个文章主要介绍对这次重构的一些总结。
当时的主要目标有两方面:
- 完成用户体系的重构,从系统架构、技术实现、产品设计上都进行优化
- 各业务线从老用户系统平滑迁移到新用户体系
2 总体架构
2.1 系统关系
2.1.1 用户体系同其它系统的关系
2.1.2 系统内部的模块划分
划分原则
- 优先保证认证中心的稳定性,和用户登录、认证相关的逻辑,放在认证中心。
- 其它业务,如 注册、三方账号绑定,登录校验,放在用户中心。
- 和用户体系相关的业务数据,放在公共数据服务模块,存放的原则:
- 和业务相关的,特别是要供多个系统使用的数据,放在此模块(系统配置不存)
- 随着业务发展,可能会变化的数据,放在此模块(男女性别,系统常量不存)
2.2 系统架构
3 主要业务流程
3.1 用户登录
3.1.1 用户登录流程图
3.1.2 用户登录时序图
3.2 用户认证
3.2.1 用户认证流程图
3.2.2 用户认证时序图
4 重难点
4.1 大数据场景
4.1.1 业务场景
- 更换手机号获取用户信息(常用登陆 IP、常用机型)
- 后台用户信息列表(Web 使用时长、App 使用时长)
4.1.2 技术方案
使用大数据应用服务,去承接这部分功能。数据源都来源于大数据部门,为业务线提供标准化的微服务接口。
4.1.3 方案风险
风险较小,技术实现较小。会额外多一些开发成本,但是后续的扩展性会好很多。而且可复用于后面所有用到大数据的业务系统。
4.2 数据检索场景
4.2.1 业务场景
- 管理后台-用户列表-模糊查询功能
4.2.2 技术方案
使用 ElasticSearch 中间件,作为独立的搜索服务。放弃老系统,使用数据库SQL做模糊查询的方式,使用更高效,扩展性更好的技术方式去实现此功能。
4.2.3 方案风险
需要运维扩展现有的ES服务器资源(一般ES只用于日志搜索,并不服务于业务线)。
5 补充说明
由于用户体系,涉及几乎所有的业务线。用户中心又有许多历史遗留的老接口。在新老系统交接的过程中,难免会发现各种问题。在新系统上线之后的一段时间内,要争取把这些问题都解决修复。