分布式系统中的相关概念
大型互联网项目架构目标
传统项目和互联网项目
-
传统项目
用户群体
:企业员工- 例如:OA(办公自动化系统)、HR(人力资源)、CRM(客户关系管理系统)等
-
互联网项目
用户群体
:网民- 例如:QQ、微信、百度等
-
企业员工和网民的区别
- 1.用户忍耐力不一样:互联网项目是零
- 2.并发量不一样:互联网项目大
-
用户体验
- 美观、功能、速度、稳定性
- 后面二者与后端程序员有关
-
衡量一个网站速度是否快
:- 打开一个新页面一瞬间完成;页面内跳转,一刹那间完成。
- 经过周密的计算,一瞬间为0.36秒,一刹那有0.018秒
-
互联网项目特点:
- 用户多
- 流量大,并发高
- 海量数据
- 易受攻击
- 功能繁琐
- 变更快
大型互联网项目架构目标
-
高性能
:提供快速的访问体验。- 衡量网站的性能指标:
- 响应时间: 指执行个请求从开始到最后收到响应数据所花费的总体时间。
- 并发数:指系统同时能处理的请求数量。
- 并发连接数:指的是客户端向服务器发起请求,建立了TCP连接。每秒钟服务器连接的总TCP数量
- 请求数:也称为QPS(Query Per Second)指每秒多少请求.
- 并发用户数:单位时间内有多少用户
- 吞吐量:指单位时间内系统能处理的请求数量。
- QPS: Query Per Second每秒查询数。
- TPS: Transactions Per Second每秒事务数。
- 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
- 一个页面的一次访问,只会形成一 个TPS;但一次页面请求,可能产生多次对服务器的请求,就会有多个QPS
QPS>=并发连接数>= TPS
- 衡量网站的性能指标:
-
高可用
:网站服务一直可以正常访问。 -
可伸缩
:通过硬件增加/减少,提高/降低处理能力。 -
高可扩展
:系统间耦合低,方便的通过新增/移除方式,增加减少新的功能/模块。 -
安全性
:提供网站安全访问和数据加密,安全存储等策略。 -
敏捷性
:随需应变,快速响应。
集群和分布式
集群
:很多"人”一起,干一样的事
。一个业务模块,部署在多台服务器上。
分布式
:很多"人”一起,干不一样的事
。这些不一样的事, 合起来是一件大事。一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上。
例如我开了一个餐馆,本来就是只有我一个人是厨师,我要同时洗菜,切菜和炒菜;当我再顾一个厨师,同样这个厨师洗菜,切菜和炒菜都要做。这时,二者就
构成了一个集群
,这样的话餐馆的效率就提升很多,实现了高性能
。当其中一个厨师生病,但是餐馆还是可以正常开业,这样就
实现了高可用
当洗菜,切菜和炒菜分别对其他人进行分配了的话,每个人单独负责一个工作,这样就实现了分布式,同时切菜的两个,炒菜的两个人和洗菜的两个人分别都构成了集群
当在经营过程中发现洗菜的过程太慢了,再去顾一个人洗菜,三个人同时洗菜,这样洗菜的速度就提升上来了,这种操作就
实现了可伸缩
(就是某一个模块有点慢,通过加一个模块来提升)随着科技的发展,可以通过机器去切菜,所以可以使用两台机器去淘汰掉切菜的两个人,
这样的操作就称为高可扩展
(某一个模块不行了,就替换掉这个模块,对其它的模块没有任何的影响)
架构演进
Dubbo是SOA时代的产物,SpringCloud 是微服务时代的产物