架构目标

传统项目和互联网项目

  1. 传统项目和互联网项目最大的区别在于用户类型和用户量
  2. 因为用户类型和用户量, 互联网项目特别在意用户体验
  3. 什么是用户体验?
  • 美观、功能、速度、稳定性
  • 对于后端工程师, 速度和稳定性是我们关心的
  1. 如何衡量一个网站速度是否快
  • 一般来说
  • 打开新页面在1s内完成就非常快
  • 页面内跳转在瞬间完成就非常快
  1. 衡量网站的性能指标:
  • 响应时间: 指执行一个请求从开始到最后收到响应数据所花费的总体时间。
  • 并发数: 指系统同时能处理的请求数量。
    • 并发连接数: 指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量
    • 请求数: 也称为QPS(QueryPerSecond)指每秒多少请求
    • 并发用户数: 单位时间内有多少用户
  • 吞吐量: 指单位时间内系统能处理的请求数量,
    • QPS: QueryPerSecond 每秒查询数
    • TPS: TransactionsPer Second每秒事务数
    • 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
    • 一个页面的一次访问,只会形成一个TPS; 但一次页面请求,可能产生多次对服务器的请求,就会有多个QPS
  • QPS >= 并发连接数 >= TPS

互联网项目特点:

  • 用户多
  • 流量大,并发高
  • 海量数据
  • 易受攻击
  • 功能繁琐
  • 变更快

大型互联网项目架构目标

  • 高性能: 提供快速的访问体验。
  • 高可用: 网站服务一直可以正常访问。
  • 可伸缩: 通过硬件增加/减少,提高/降低处理能力。
  • 高可扩展: 系统间耦合低,方便的通过新增/移除方式,增加/减少新的功能/模块。
  • 安全性: 提供网站安全访问和数据加密,安全存储等策略。
  • 敏捷性: 随需应变,快速响应。

集群和分布式

集群和分布式

  1. 集群: 很多“人”一起,干一样的事。
  • 一个业务模块, 部署再多台服务器上, 本质是资源堆砌
  1. 分布式: 很多“人”一起,干不一样的事。这些不一样的事,合起来是一件大事。
  • 一个大的业务系统, 拆分为小的业务模块, 分别部署在不同的机器上, 本质是效率优化
  1. 举个例子

  • 单机服务:
    • 一个人洗菜/切菜/炒菜, 这就是一个单机的厨师服务,
    • 洗菜/切菜需要时间, 所以一个厨师每小时只能炒5道菜
    • 厨师可能会请假, 厨师服务就不可用了
  • 集群服务:
    • 再添加一个厨师, 这个厨师也负责洗菜/切菜/炒菜
    • 两个厨师服务可以组成一个厨师集群
    • 厨师集群每小时可以炒10道菜, 性能就明显提升了
    • 一个厨师请假还有一个厨师可以服务, 可用性也提升了
  • 分布式服务
    • 厨师最核心的工作是炒菜, 洗菜/切菜会降低厨师的含金量
    • 请两个切配专门洗菜/切菜, 厨师只炒菜
    • 一个切配加一个厨师组成一个分布式的厨师服务
    • 现在整个后厨系统有两个分布式厨师服务
    • 一个分布式服务每小时可以炒10道菜
    • 现在后厨系统每小时可以炒20道菜, 明显2厨2配的组合比4厨的组合更优
    • 如果炒菜速度不够, 可以加厨师, 如果洗切速度不够,可以加切配, 后厨的伸缩性明显提升
    • 后续还可以把洗切工作由人工交给机器, 厨师工作不受影响, 后厨的扩展性明显提升
  • 这样分布式的集群系统, 就具备高性能, 高可用, 可伸缩, 高扩展的特点
  1. 分布式的集群系统
  • 单机服务系统

  • 集群服务系统

  • 分布式集群服务系统

架构演进

架构演进

Dubbo 是 SOA时代的产物,SpringCloud 是微服务时代的产物

单体架构

  1. 优点:简单: 开发部署都很方便,小型项目首选
  2. 缺点:
  • 项目启动慢
  • 可靠性差
  • 可伸缩性差
  • 扩展性和可维护性差
  • 性能低

垂直架构

垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构。

垂直架构存在的问题: 重复功能太多

分布式架构

分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务供其他调用者消费,以实现服务的共享和重用。

  1. RPC: Remote ProcedureCall 远程过程调用。

有非常多的协议和技术来都实现了RPC的过程。比如:HTTPREST风格,JavaRMI规范、WebServiceSOAP协议Hession等等。

  1. 分布式架构存在的问题:

服务提供方一旦产生变更,所有消费方都需要变更。

SOA架构

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

微服务架构

微服务架构是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成.

微服务架构=80%的SOA服务架构思想+100%的组件化架构思想+80%的领域建模思想

特点:

  1. 服务实现组件化:开发者可以自由选择开发技术。也不需要协调其他团队
  2. 服务之间交互一般使用RESTAPI
  3. 去中心化:每个微服务有自己私有的数据库持久化业务数据
  4. 自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署、测试、运维
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐