15-登录功能功能架构设计一(登录设计的复杂性)
xiangliheart
xiangliheart
发布于 2022-03-15 / 15 阅读 / 0 评论 / 0 点赞

15-登录功能功能架构设计一(登录设计的复杂性)

登录设计的复杂性

登录的核心流程和功能十分简单明了,只不过是对用户身份进行验证,但是在性能、可靠性、安全性等方面却有着特别复杂的要求,要充分地认识到登录设计的复杂性,不要被其简单的表象所迷惑。

登录流程如图4-1所示,包含以下4个步骤。(1)用户在客户端输入用户名和密码,点击“登录”按钮。

(2)   服务端从数据库查询账号信息。

(3)   服务端核对用户名和密码是否正确。

(4)   如果用户名或密码错误,则返回错误提示;如果用户名和密码正确,则跳转进入用户首页。

图4-1 登录流程

登录流程看似简单,似乎没有什么需要设计的,那么请思考如下几个问题。

(1)  怎样防止密码被暴力破解?

(2)  怎样防止机器人模拟登录?

(3)  高并发、海量用户场景下的登录如何顺畅?

(4)  如果用户数量增长到上千万、上亿,登录还能否正常?

(5)  密码怎样传输才能防止被网络抓包?

(6)  密码复杂度怎样设计?怎样做过期策略和账号锁定策略?

(7)  怎样支持手机、平板、PC等多设备登录?

(8)  怎样支持安卓、iOS、小程序、公众号等多端登录?

(9)  怎样做人脸识别、指纹识别、语音识别登录?

(10)   单体架构、分布式架构、集群模式下登录有什么区别?

(11)   手机号、邮箱、账号登录有什么区别?

(12)   怎样做手机验证码登录?

(13)   怎样做第三方授权登录?

(14)   密码怎样存储才能不被开发人员窃取使用?

以上只是列举了部分问题,其实登录不仅不简单,而且极其复杂,由登录所衍生出的需求也非常多。例如,给用户发通知信息、记录用户登录轨迹、分析用户作息时间、分析登录行为等。

除了复杂性,登录功能的重要性也不可以忽视,其重要程度可以排在所有功能的第一位,登录设计为什么会如此重要,主要有以下4个方面的原因。

(1)     一旦登录不可用,将会直接带来巨大的经济损失。如果淘宝由于技术故障,导致一天无法登录,那么直接损失将达到几百亿元。如果是“双11”这一天无法登录,那么损失的就是几千亿元。

不仅对于互联网电商类系统是这样,对于企业内部系统依然如此,例如,如果资金收付系统、资金管理系统、财务系统无法登录,则可能导致一系列的财务问题。

所以,某个系统功能出现问题并不可怕,无法登录才是真正的可怕。

(2)     登录是有权限类操作的大门,必须经过它的验证,才能够取得内部功能的使用权限。例如,如果无法登录支付宝,那么将无法使用它的转账、账单、基金、种树等功能,而大门一旦被人恶意攻破,后果将不堪设想,他人可以冒充你的身份进行转账、发虚假消息、购物等。

(3)     登录承压巨大,对于淘宝、京东、微信等这一类2C的互联网产品,每天都达到几亿日活,就算去掉一些用户的免登录设置,其压力也是不可以忽视的。怎样在这种高并发、持续高压的状态下保持登录的可用性、稳定性,并不那么简单。

(4)     登录是系统的脸面,如果出现无法打开登录页面,无法登录或登录失败,则会给企业形象带来巨大影响。

做系统的架构设计,一定要懂得一个道理,小功能未必不重要,也未必简单。任何简单的功能,当其使用量达到一定使用量级之后,都会变为极其重要的功能。

经过一系列的提问,可以总结出设计登录功能要从多个维度去考虑问题,架构师也需要具备较强的产品设计能力,如图4-2所示,包括以下6点。

(1)存储方式:数据存储在哪里?存储的结构是什么?(2)交互方式:怎样交互数据?采用什么样的传输协议?

(3)   登录方式:系统的登录方式是什么?不同的登录方式,设计和实现流程不同。

(4)   校验方式:怎样定义登录成功、失败还是异常?

(5)   安全设计:怎样防止攻击,保证登录可靠性?

(6)   衍生需求:登录可以产生哪些附加价值?

图4-2 登录设计的范围


评论