一、什么是分布式?
1、如何满足大型互联网系统的架构?
① 如何理解互联网项目
- 传统项目:OA、CRM等系统内部员工系统,大多数为ToB的内部项目
- 互联网项目:电商、聊天平台等,存在各类网民,大多数为ToC的外部项目
区别
在于用户群体,细化来说在于用户群体的类别和数量上的问题。互联网项目需要考虑用户的忍耐力。
互联网产品要考虑用户体验,主要分为交互体验、功能适配、响应速度以及应用的稳定性。
在分布式应用中,交互体验和功能适配与后端无关,后端需要着重思考速度和稳定性的问题。
- 速度上的指标要在毫秒级完成,页面内跳转需要考虑半毫秒级别。(要在网速允许的环境下,能在如此的速度上反应)
- 稳定性需要考虑应用的特点,例如是否存在:用户量大、流量大、并发高、海量数据、不安全性、功能繁琐、迭代速度等问题
② 如何满足构建目的
需要考虑衡量指标
- 响应时间
- 并发数
-- 并发连接数:客户端向服务器发起请求,单位时间内能建立的TCP连接数量
-- 请求数:请求数≥连接数(考虑单连接能否复用)
-- 连接数:单位时间内,能建立多少用户连接 - 吞吐量
-- QPS:每秒的查询数量
-- TPS: 每秒的事务数量 - 高性能:提供高速的响应能力
- 高可用:网站可一直正常访问
- 可伸缩:通过硬件的伸缩控制性能
- 可扩展:系统应用间耦合度低,可拆解
- 安全性:保证能抵御一定的攻击
- 敏捷性:可快速迭代
2、集群和分布式
- 集群:一群人干一件事:一个业务模块部署在多个机器上
- 分布式:不同人干不同的事:一个业务拆分成不同模块,部署在多个机器上
集群好比施工队中的一群指定职位的人,好比打砖群体、水泥匠等;分布式就相当于施工团队,有一群不同的人,干不一样的事情,但是都在进行盖楼。(一个模糊的比喻)
二、架构的演变
该处先不做过多的讨论,仅作为扼要的说明。