一.大型互联网项目架构目标
1.传统项目与互联网项目对比
I.传统项目面向某特定受众群体,用户少,如何某某公司员工请假项目OA
II.互联网项目面向群体网民,如微信,天猫,淘宝
用户多,流量大,并发高,易受攻击,功能繁琐等
2.高性能
指标如下
1.响应时间:执行并处理请求的速度
2.并发数:系统能同时处理的请求数量
并发连接数:客户端向服务器发请求,并建立TCP连接.每秒钟服务器连接总TCP数量
连接数:每秒有多少次请求
并发用户数:单位时间内用户数
3.吞吐量:指单位时间内有多少用户
QPS:每秒查询数
TPS:每秒事务数
一个事务指一个完整的点击,包含多个请求资源加载
3.高可用
网站服务一直可以正常访问
4.高伸缩
通过硬件增加/减少,提高/降低处理能力
5.高可扩展
系统间耦合度低,方便移除或新增模块
6.安全性
提供网站安全访问和数据加密.安全存储等策略
7.敏捷性
随需应变,快速响应
二.集群与分布式
1.集群
一个业务模块,部署在多台服务器上
主要的使用场景是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求
通过提高单位时间内执行的任务数来提升效率
2.分布式
一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上
主要的使用场景就是为了摆脱单机资源的束缚,拆分雨雾模块实现低耦合,减少运行时间
以缩短单个任务的执行时间来提升效率
三.分布式架构演进
单体架构:
功能不拆分,如myLibrary[doge]
优:开发部署方便,小型项目首选
劣:项目启动慢
性能低
垂直架构:
拆分成多个子项目,项目独立不交互
如淘宝与天猫
劣:重复功能太多
分布式架构:
在垂直架构基础上,拆分子模块,形成独立服务,实现服务共享和重用
劣:服务提供方一旦变更,消费方都要变更
SOA架构:
面向服务架构,功能单元通过ESB进行通信与连接
微服务架构:
原有的单个业务系统拆分为多个独立开发,设计,运行的小应用,之间通过服务完成交互和集成
特点:
组件化:不需要协调其他团队
去中心化:每个微服务有自己自己私有的数据库
自动化部署:应用拆分,方便部署,测试,运行