互联网项目的特点

用户的使用需求

用户对于一个互联网项目的使用需求主要分为美观、功能、速度、稳定性。

互联网项目的特点

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

衡量网站的性能指标

  1. 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。

  2. 指系统同时能处理的请求数量。

    • 并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量。
    • 请求数:也称为QPS(Query Per Second) 指每秒多少请求
    • 并发用户数:单位时间内有多少用户
  3. 吞吐量 :指单位时间内系统能处理的请求数量

    • QPS:Query Per Second 每秒查询数.

    • TPS:Transactions Per Second 每秒事务数.

    • 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

    • 一个页面的一次访问,只会形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,就会有多个QPS

      比如请求只请求一个页面,但是这个页面包含了一些静态资源,这些静态资源也会产生对服务器的请求。

    • QPS >= 并发连接数 >= TPS

  4. 高性能:提供快速的访问体验。

  5. 高可用:网站服务一直可以正常访问。

  6. 可伸缩:通过硬件增加/减少,提高/降低处理能力。

  7. 高可扩展:系统间耦合低,方便的通过新增/移除方式,增加/减少新的功能/模块。

  8. 安全性:提供网站安全访问和数据加密,安全存储等策略。

  9. 敏捷性:随需应变,快速响应。

集群和分布式

  • 集群的概念

    集群就是单机的多实例,在多个服务器上部署多个服务,每个服务就是一个节点,部署N个节点,处理业务的能力就提升 N倍(大约),这些节点的集合就叫做集群;每台单机上部署的服务都是一样的。

  • 分布式的概念

    分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC(远程调用)方式通信。

  • 集群示例图

    互联网项目的特点

    可以看出每台单击上部署的服务都是一样的。

  • 集群分布式示例图

    互联网项目的特点

    将一个完整的系统进行了拆分,再布置了集群。

架构演进

架构的发展历史

互联网项目的特点

架构的特点

  1. 单体架构

    互联网项目的特点

    • 优点

      简单:开发部署都很方便,小型项目首选

    • 缺点

      1. 项目启动慢
      2. 可靠性差
      3. 可伸缩性差
      4. 扩展性和可维护性差
      5. 性能低
  2. 垂直架构

    互联网项目的特点

    • 特点

      垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构,但是每个架构中依赖的项目有相同的。

    • 缺点

      存在着单体架构的问题,以及每个单体架构中重复的功能太多。

  3. 分布式架构

    互联网项目的特点

    • 特点

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

      RPC:远程调用。

    • 存在问题

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

  4. SOA架构

    互联网项目的特点

    • 特点

      SOA:(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。

      ESB:(Enterparise Servce Bus) 企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。

      ESB 包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等

    • 缺点

      关系联系偏于复杂,并且ESB功能太重,不适合中小型公司使用。

  5. 微服务架构

    互联网项目的特点

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

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

    • 特点

      服务实现组件化:开发者可以*选择开发技术。也不需要协调其他团队。

      服务之间交互一般使用REST API。

      去中心化:每个微服务有自己私有的数据库持久化业务数据。

      自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署、测试、运维。

Dubbo 是 SOA时代的产物,SpringCloud 是微服务时代的产物,但是也有很多公司在使用Dubbo。