初涉项目架构
-
了解传统项目与互联网项目的区别
-
传统项目指OA、HR、CRM这种,互联网项目则是常见的app
-
首先是受众(服务对象)不同,传统项目是面向公司、学校等群体,互联网项目则是面向全体网民
- 两种对象数量不同,差异较大
- 两种对象对产品的忍耐力不一样
-
-
互联网项目特点:
- 用户多、 流量大,并发大、 海量数据
- 易受攻击
- 功能繁杂、 变更快
-
大型互联网项目的架构目标;
-
高性能
- 响应快:发出请求到收到响应数据的时间
- 并发数:系统同时能处理的请求数量
- 并发连接数:发起请求并建立连接。每秒服务器连接的总TCP数量
- 请求数:QPS(Query Per Second),一次TCP连接可能产生多次请求
- 并发用户数:单位时间内有多少用户
- 吞吐量:单位时间内系统能处理的请求数
- QPS
- TPS(Transactioins Per Second)
- 一次页面的访问属于一个TPS
- 一次页面的请求,可能产生多次对服务器的请求
- 所以结论: QPS >= 并发连接数 >= TPS
-
高可用: 网站服务一直可以正常访问
-
可伸缩:通过硬件 / 增加减少,提高 / 降低处理能力
-
高可扩展:系统间耦合低
-
安全性:网站安全访问,数据加密,安全存储
-
-
分布式系统(满足上述目标);
-
集群和分布式:
-
架构演进:
单体架构 —> 垂直架构 —> 分布式架构 —> SOA架构 —> 微服务架构
- 单体架构:
- 优点:
- 简单:开发部署方便。小型项目的首选
- 缺点一大堆:
- 启动慢、 可靠性查、拓展性差、性能低
- 优点:
- 垂直架构:
- 垂直架构是指将大的单体架构中的多个功能模块拆分成多个独立项目,形成多个单体架构
- 拆分后,对于之前的一个大的单体架构的存在问题就有所减轻
- 但垂直架构不够先进的地方就在于,拆分后的每个项目中存在很多重复的模块,问题出于它不能远程调用
- 分布式架构:
- 分布式架构就是在垂直架构基础上,将那些重复的模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用
- RPC:Remote Procedure Call(远程过程调用) 有非常多的协议和技术来实现RPC的过程。比如:HTTP REST风格、 Java RMI规范、 WebServiece SOAP协议、 Hession等
- 缺点:
- 服务提供方一旦产生变更(如 地址等),所有消费者都需要变更
- SOA架构:
- SOA(Service - Oriented Architecture面向服务的架构)是一个组件模型,ta将应用程序的不同功能单元(服务)进行拆分,并在这些服务之间定义良好的接口和契约联系起来
- 提供了ESB(Enterprise Service Bus)企业服务总线,相当于一个服务中介。主要是提供了服务之间的交互和治理。ESB包含了负载均衡、流量控制、加密处理、服务监控、异常处理、监控告急等等
- 上面分布式的缺点就得以改善了,消费者不用变更了,让那个中介去变更
- 微服务架构:
- 微服务架构是在SOA上做的升华,微服务架构强调”业务需要彻底的组件化和服务化“,原有的单个业务系统拆分成多个独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
- 微服务架构 = 80% SOA服务架构思想 + 100% 组件化架构思想 + 80% 领域建模思想
- 特点:
- 服务实现组件化:开发者可以自由选择开发技术
- 服务之间交互一般使用REST API
- 去中心化:每个微服务有自己的数据库
- 服务实现组件化:开发者可以自由选择开发技术
- 服务之间交互一般使用REST API
- 去中心化:每个微服务有自己的数据库
- 方便部署、测试、运维
- 单体架构:
-