1.1. 主流的互联网技术特点
分布式 、高并发、集群、负载均衡、高可用。
分布式:一件事情拆开来多人一起做。
集群:一件事情大家一起做。
负载均衡:将请求平均分配到不同的服务器中,达到均衡的目的。
高并发:同一时刻,处理同一件事情的处理能力(解决方案:分布式、集群、负载均衡)
高可用:系统都是可用的。
1.2. 架构演变的过程
1.2.1. 单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
-
布署一个tomcat即可
-
架构优点:
架构简单,前期开发成本低、开发周期短,适合小型项目(OA、CRM、ERP(sap),后台管理系统)。
-
架构缺点:
全部功能集成在一个工程中
(1)业务代码耦合度高,不易维护。
(2)维护成本高,不易拓展
(3)并发量大,不易解决
(4)技术栈受限,只能使用一种语言开发。
1.2.2. 垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
单个业务并发量大,按业务模块拆分
-
架构优点:
(1)业务代码相对解耦
(2)维护成本相对易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
(3)并发量大相对易于解决(搭建集群)
(4)技术栈可扩展(不同的系统可以用不同的编程语言编写)。
-
架构缺点:
代码之间存在数据、方法的冗余
1.2.3. 分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
解决:代码之间存在数据、方法的冗余
-
架构优点:
(1)业务代码完全解耦,并可实现通用
(2)维护成本易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
(3)并发量大易于解决(搭建集群)
(4)技术栈完全扩展(不同的系统可以用不同的编程语言编写)。
-
架构缺点:
服务单点问题
1.2.4. 流动计算架构(SOA)
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
拥有: 统一管理资源调度的框架 dubbo+zookeeper
资源调度和治理中心的框架:dubbo+zookeeper
-
架构优点:
(1)业务代码完全解耦,并可实现通用
(2)维护成本易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
(3)并发量大易于解决(搭建集群)
(4)技术栈完全扩展(不同的系统可以用不同的编程语言编写)。
(5)解决服务单点问题(消费先找注册中心要提供者列表,选一个调用。服务提供要注册到注册中心上,服务提供挂了,就会注册中心删除)
【小结】
1:单体架构
全部功能集中在一个项目内(All in one)。访问量很低
2:垂直架构
按照业务进行切割,形成小的单体项目。解决单个业务并发大, 访问量越来越多
3:SOA架构,访问量很高(万级)
面向服务的架构(SOA)是一个组件模型,全称为:Service-Oriented Architecture,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互.
可以使用dubbo作为调度的工具(RPC协议)
4:微服务架构, 网络快
将系统服务层完全独立出来,抽取为一个一个的微服务。
特点一:抽取的粒度更细,遵循单一原则,数据可以在服务之间完成数据传输(一般使用restful请求调用资源)。
特点二: 采用轻量级框架协议传输。(可以使用springcloudy)(http协议 restful json)
特点三: 每个服务都使用不同的数据库,完全独立和解耦。