1.1单体架构
单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。
存在的问题:
- 代码耦合:模块的边界模糊、依赖关系不清晰,整个项目非常复杂,每次修改代码都心惊胆战
- 迭代困难:每次功能的变更或bug的修复都会导致重新部署整个应用,随着代码的增多,构建、测试和部署的时间也会增加
- 扩展受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩
- 技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多不坏不修
- 阻碍创新:单体应用往往使用统一的技术平台或方案解决所有的问题,要想引入新技术平台会非常困难
1.2分布式架构
分布式:需要按照功能点把系统拆分,拆分成独立的功能,单独为某一个节点添加服务器,需要系统之间配合才能完成整个业务逻辑。
分布式架构优点:
- 不同的团队负责不同的子项目
- 可以灵活的进行分布式部署
- 可以为某一模块单独加集群
分布式架构缺点:
- 模块之间有一些通用的业务逻辑无法共用。
1.3soa架构
SOA:Service Oriented Architecture(面向服务的架构)。也就是把工程拆分成服务层,表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现,使用ESB(Enterparise Servce Bus企业服务总线,代表技术:Mule、WSO2)提供表现层和服务层之间的交互。
存在的问题:
- 不支持集群、臃肿
1.4微服务架构
微服务架构是一种架构模式,或者说是一种架构风格,它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间相互协调,互相配合,为服务提供最终的价值。服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据服务上下文,选择合适的语言,工具进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
从技术维度理解:
微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。
优点
●单一职责原则
●每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;
●开发简单,开发效率提高,一个服务可能就是专-的只干一件事;
●微服务能够被小团队单独开发,这个小团队是2~5人的开发人员组成;
●微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
●微服务能使用不同的语言开发。
●易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如jenkins, Hudson,bamboo
●微服务易于被一 个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
●微服务允许你利用融合最新技术。
●微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面混合
●每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统- 数据库
缺点:
●开发人员要处理分布式系统的复杂性
●多服务运维难度,随着服务的增加,运维的压力也在增大●系统部署依赖
●服务间通信成本
●数据一致性
1.5分布式系统中的相关概念
1.5.1衡量网站性能指标:
- 响应时间:指执行一个请求从开始到最后收到相应数据所花费的总体时间
- 并发数:指系统同时能处理的请求数量
①并发连接数:指的是客户端向服务器发起的请求,并建立了TCP连接,每秒钟服务器连接的总的TCP数量
②请求数:也称为QPS(Query Per Second)指每秒多少请求
③并发用户数:指单位时间内有多少用户
- 吞吐量:指单位时间内系统能处理的请求数量
①QPS:Query Per Second每秒查询数
②TPS:Transaction Per Second每秒事务数
③一个事务是指一个客户机向服务器发送请求然后服务器做出的反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
1.5.2集群和分布式
集群:很多人“人”一起,干一样的事
- 一个业务模块,部署在多台服务器上。
分布式:很多“人”一起,不干一样的事,这些不一样的事,合起来就是一件大事。
- 一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上。
1.5.3微服务架构
微服务架构是在SOA 上做的升华,微服务架构强调的是一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务架构=80%的SOA服务架构思想+100%的组件化架构思想+80%的领域建模思想
特点:
①服务实现组件化:开发者可以自由选择开发技术,也不需要协调其他团队
②服务之间交互一般使用REST API
③去中心化:每个微服务有自己私有的数据库持久化业务数据