架构技术栈

互联网技术演进的模式

互联网业务千差万别,但由于它们具有“规模决定一切”的相同点,其发展路径也基本上是一致的。互联网业务发展一般分为几个时期:初创期、发展期、竞争期、成熟期。

不同时期的差别主要体现在两个方面:复杂性、用户规模。

业务复杂性

互联网业务发展第一个主要方向就是“业务越来越复杂”,我们来看看不同时期业务的复杂性的表现。

初创期
发展期
竞争期
成熟期
用户规模

互联网业务的发展第二个主要方向就是“用户量越来越大”。互联网业务的发展会经历“初创期、发展期、竞争期、成熟期”几个阶段,不同阶段典型的差别就是用户量的差别,用户量随着业务的发展而越来越大。

用户量增大对技术的影响主要体现在两个方面:性能要求越来越高、可用性要求越来越高。

量变到质变

架构技术栈_第1张图片

负载均衡

DNS 用于实现地理级别的负载均衡,而 Nginx、LVS、F5 用于同一地点内机器级别的负载均衡。其中 Nginx 是软件的 7 层负载均衡,LVS 是内核的 4 层负载均衡,F5 是硬件的 4 层负载均衡。

软件和硬件的区别就在于性能,硬件远远高于软件,

Ngxin 的性能是万级,一般的 Linux 服务器上装个 Nginx 大概能到 5 万 / 秒;

LVS 的性能是十万级,没有具体测试过,据说可达到 80 万 / 秒;

F5 性能是百万级,从 200 万 / 秒到 800 万 / 秒都有。硬件虽然性能高,但是单台硬件的成本也很高,一台最便宜的 F5 都是几十万,但是如果按照同等请求量级来计算成本的话,实际上硬件负载均衡设备可能会更便宜,例如假设每秒处理 100 万请求,用一台 F5 就够了,但用 Nginx,可能要 20 台,这样折算下来用 F5 的成本反而低。

因此通常情况下,如果性能要求不高,可以用软件负载均衡;如果性能要求很高,推荐用硬件负载均衡。

4 层和 7 层的区别就在于协议和灵活性。Nginx 支持 HTTP、E-mail 协议,而 LVS 和 F5 是 4 层负载均衡,和协议无关,几乎所有应用都可以做,例如聊天、数据库等。

目前很多云服务商都已经提供了负载均衡的产品,例如阿里云的 SLB、UCloud 的 ULB 等,中小公司直接购买即可。

用户管理

单点登录(SSO)

稍微大一点的互联网业务,肯定会涉及多个子系统,这些子系统不可能每个都管理这么庞大的用户,由此引申出用户管理的第一个目标:单点登录(SSO),又叫统一登录。单点登录的技术实现手段较多,例如 cookie、JSONP、token 等,目前最成熟的开源单点登录方案当属 CAS,其架构如下(https://apereo.github.io/cas/4.2.x/planning/Architecture.html )

第三方应用接入

除此之外,当业务做大成为了平台后,开放成为了促进业务进一步发展的手段,需要允许第三方应用接入,由此引申出用户管理的第二个目标:授权登录。现在最流行的授权登录就是 OAuth 2.0 协议,基本上已经成为了事实上的标准,如果要做开放平台,则最好用这个协议,私有协议漏洞多,第三方接入也麻烦。

架构技术栈_第2张图片

消息推送

消息推送根据不同的途径,分为短信、邮件、站内信、App 推送。除了 App,不同的途径基本上调用不同的 API 即可完成,技术上没有什么难度。例如,短信需要依赖运营商的短信接口,邮件需要依赖邮件服务商的邮件接口,站内信是系统提供的消息通知功能。

App 目前主要分为 iOS 和 Android 推送,iOS 系统比较规范和封闭,基本上只能使用苹果的 APNS;但 Android 就不一样了,在国外,用 GCM 和 APNS 差别不大;但是在国内,情况就复杂多了:首先是 GCM 不能用;其次是各个手机厂商都有自己的定制的 Android,消息推送实现也不完全一样。因此 Android 的消息推送就五花八门了,大部分有实力的大厂,都会自己实现一套消息推送机制,例如阿里云移动推送、腾讯信鸽推送、百度云推送;也有第三方公司提供商业推送服务,例如友盟推送、极光推送等。

存储云、图片云

存储云和图片云通常的实现都是“CDN + 小文件存储”
只有服务器提供文件存储:FastDfs

微服务

架构技术栈_第3张图片
微服务架构最佳实践 - 基础设施篇
自动化测试
自动化部署
配置中心
接口框架
API 网关
服务发现。服务发现主要有两种实现方式:自理式和代理式。
服务路由
服务容错
服务监控
服务跟踪
服务安全

原文转载

https://blog.csdn.net/zhangbijun1230/article/category/7519360/5

你可能感兴趣的:(架构设计)