1.大型互联网项目架构目标
用户体验 :美观、功能、速度、稳定性
注:衡量一个网站速度是否快:1. 打开一个新页面可以一瞬间(0.36)完成;2.页面内跳转,一刹那(0.018)间完成。
1.1传统项目和互联网项目
互联网项目例如天猫、微信、百度等
特点:用户多;流量大,并发高;海量数据;易受攻击;功能繁琐;变更快;
目标:传统项目例如OA(办公自动化系统)、HR(人事系统)、CRM(客户关系管理系统)
区别:传统项目用户群体员工,互联网项目网民。
1.2 大型互联网项目架构目标
- 高性能
性能指标
响应时间:指执行一个请求从开始到最后收到响应数据花费的总体时间
并发数量:系统能处理的请求数量
2.1 并发连接数:指客户端向服务器发起请求,并建立TCP连接。每秒钟服务器连接的总TCP数量;
2.2 并发请求数:也称为QPS(Query Per Second)指每秒多少请求;
2.3 并发用户数:单位时间内有多少用户吞吐数量:指单位时间内系统能处理的请求数量
3.1 QPS:Query Per Second 每秒查询数
3.2 TPS:Transactions Per Second 每秒事务数
3.3 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
3.4 一个页面的一次访问,只会形成一个TPS,一次页面请求可能多次对服务器请求,就会有多个QPSQPS >=并发连接数 >=TPS
- 高可用:网站可以一直访问
- 可伸缩:通过硬件的增加或减少从而提高或降低处理能力
- 高可扩展:系统间耦合低,方便的新增或移除方式,增加或减少功能或模块
- 安全性
- 敏捷性:随需应变,快速响应
2.集群和分布式
集群:很多“机器”一起,干一样的事
分布式:很多”机器“一起,干不一样的事,合起来是一件大事
微服务是一种特殊的分布式,粒度更小
3.架构演进
单体架构(单机,多机)->垂直架构->分布式架构->SOA架构->微服务架构
单体架构:
优点:
- 简单:开发部署都很方便,小型项目首选
缺点:
- 项目启动慢
- 伸缩性差
- 可靠性差
- 扩展性和可维护性差
- 性能低

垂直架构:垂直架构是指将单体架构中的多个模块拆分为多个独立项目。形成多个独立的单体架构。
存在问题:重复功能太多。


- 分布式架构是指在垂直架构的基础上,将公共业务模块抽离出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用。
- RPC:Remote Procedure Call 远程过程调用。有许多非常多的协议和技术来都实现了RPC的过程。比如HTTP REST风格,Java RMI规范,WebService SOAP协议、Hession等。
分布式架构存在问题:
服务提供方一旦发生变更,所有消费方都需要变动。


- SOA:(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
- ESB: (Enterparise Servce Bus)企业服务总线,服务中介。主要提供了一个服务于服务之间的交互。ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。

微服务架构
微服务架构是在SOA上做的升华,微服务架构强调的一个重点是”业务需要彻底的组件化和服务化“,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务架构=80%的SOA服务架构思想+100%的组件化架构思想+80%的领域建模思想
特点:
- 服务实现组件化:开发者可以自由选择开发技术。也不需要协调其他团队。
- 服务之间交互一般使用REST API
- 去中心化:每个微服务有自己私有的数据库持久化业务数据


dubbo是SOA时代的产物,springCloud 是微服务时代的产物。