互联网架构模板:“用户层”和“业务层”技术
极客时间:《从 0 开始学架构》:互联网架构模板:“用户层”和“业务层”技术
用户层技术
1、用户管理
互联网业务的一个典型特征就是通过互联网将众多分散的用户连接起来,因此用户管理是互联网业务必不可少的一部分。
稍微大一点的互联网业务,肯定会涉及多个子系统,这些子系统不可能每个都管理这么庞大的用户,由此引申出用户管理的第一个目标:单点登录(SSO),又叫统一登录。目前成熟的开源单点登录方法是CAS,其框架如下:
当业务做大成为了平台后,开放成为了促进业务进一步发展的手段,需要允许第三方应用接入,由此引申出用户管理的第二个目标:授权登录。目前最流行的授权登录的是OAuth2.0协议。
当用户数量巨大时,可以考虑使用一个简单的负载均衡架构便可应对。
用户管理的基本架构如下:
2、消息推送
消息推送根据不同的途径,分为短信、邮件、站内信、App 推送。除了 App,不同的途径基本上调用不同的 API 即可完成,技术上没有什么难度。例如,短信需要依赖运营商的短信接口,邮件需要依赖邮件服务商的邮件接口,站内信是系统提供的消息通知功能。
3、存储云、图片云
互联网业务场景中,用户会上传多种类型的文件数据,如图片,这些文件具备以下几个典型特点:、
- 数据量大:用户基数大,用户上传行为频繁。
- 文件体积小:大部分图片是几百KB到几MB,短视频播放时间也是在几分钟内
- 访问有时效性:大部分文件是刚上传的时候访问最多,随着时间的推移访问量越来越小。
为了满足用户的文件上传和存储需求,需要对用户提供文件存储和访问功能,存储云和图片云通常的实现都是“CDN + 小文件存储”
业务层技术
抛开业务上的差异,各个互联网业务发展最终面临的问题都是类似的:业务复杂度越来越高。也就是说,业务层面对的主要技术挑战是“复杂度”。面对业务层的技术挑战,一个字:“拆”,化整为零、分而治之,将整体复杂性分散到多个子业务或者子系统里面去。
但随着子系统数量越来越多,如果达到几百上千,另一个复杂问题就会凸显出来:子系统数量太多,已经没有人能够说清楚业务的调用流程了,出了问题排查也会特别复杂。怎么办?一个字:“合”。采取的“合”的方式是按照“高内聚、低耦合”的原则,将职责关联比较强的子系统合成一个虚拟业务域,然后通过网关对外统一呈现,同样以电商为样例,采用虚拟业务域后,其架构如下