用户中心服务开发总结

Table of Contents

1 前言

公司最初的用户中心是.net实现的,由于业务的发展和公司战略的考虑,需要把老的用户系统进行重构使用Java重写。这个文章主要介绍对这次重构的一些总结。

当时的主要目标有两方面:

  • 完成用户体系的重构,从系统架构、技术实现、产品设计上都进行优化
  • 各业务线从老用户系统平滑迁移到新用户体系

2 总体架构

2.1 系统关系

2.1.1 用户体系同其它系统的关系

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E5%A4%96%E9%83%A8%E7%B3%BB%E7%BB%9F%E5%85%B3%E7%B3%BB.png

2.1.2 系统内部的模块划分

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E5%86%85%E9%83%A8%E6%A8%A1%E5%9D%97.png

划分原则

  • 优先保证认证中心的稳定性,和用户登录、认证相关的逻辑,放在认证中心。
  • 其它业务,如 注册、三方账号绑定,登录校验,放在用户中心。
  • 和用户体系相关的业务数据,放在公共数据服务模块,存放的原则:
    1. 和业务相关的,特别是要供多个系统使用的数据,放在此模块(系统配置不存)
    2. 随着业务发展,可能会变化的数据,放在此模块(男女性别,系统常量不存)

2.2 系统架构

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84.png

3 主要业务流程

3.1 用户登录

3.1.1 用户登录流程图

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E7%99%BB%E5%BD%95%E9%80%BB%E8%BE%91.png

3.1.2 用户登录时序图

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E7%99%BB%E5%BD%95%E6%97%B6%E5%BA%8F.png

3.2 用户认证

3.2.1 用户认证流程图

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81%E9%80%BB%E8%BE%91.png

3.2.2 用户认证时序图

%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81%E6%97%B6%E5%BA%8F.png

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 补充说明

由于用户体系,涉及几乎所有的业务线。用户中心又有许多历史遗留的老接口。在新老系统交接的过程中,难免会发现各种问题。在新系统上线之后的一段时间内,要争取把这些问题都解决修复。