三分钟了解服务架构演进及优缺点

单一应用架构

一般用于定制系统,需求明确,不会迭代,开发快

优点:项目易于管理,部署简单

缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难

解释:ABC代表三个模块,A->B->C代表调用关系

  • 测试成本高:每个模块都需要测试,所有关联模块有需要测试

我们要测试除了A、B、C三个模块外,还需要测试A->B、B->C、A->B->C

  • 可伸缩性差:我们在AB直接插一个D,那么我们需要改动A和B代码,才能变成A->B->C->D

  • 可靠性差:如果C的功能出现问题,并不一定是C的代码错误,也有可能是AB引起的

  • 迭代困难:改动部分代码,需要重新测试大量功能。

  • 跨语言程度差:只用一种语言

  • 团队协作难:模块的耦合高,代码整合调试困难

RPC架构

远程调用过程

优点:应用直接调用服务,服务之间是隔离的

缺点:服务过多时,管理成本高昂。服务治理,服务注册、发现,服务容错,服务跟踪,服务网关,IP暴露等

解释:ABC还是代表是哪个模块,有一个远程的服务来调用ABC

  • 应用直接调用服务,服务之间是隔离的:ABC没有直接的关系,而是通过远程的服务来调用ABC

  • 服务治理,服务注册、发现,服务容错,服务跟踪,服务网关,IP暴露等都是因为服务隔离产生的。

SOA架构面向服务架构

在RPC架构的基础上加了一个ESB,应用去调用ESB,ESB去调用服务

ESB:企业服务总线,服务中介

微服务架构

对比与SOA架构,将ESB换成了注册中心,代表技术:SpringCloud、Dubbo

常见的架构风格:

  • C/S:比如QQ

  • 基于组件模型的架构:比如EJB

  • 分层架构:典型就是MVC架构

  • 面向服务架构:SOA和微服务

优点:与单一应用架构相对比

  • 测试容易

  • 可伸缩性强

  • 可靠性强

  • 跨语言程度会更加灵活

  • 团队协作容易

  • 系统迭代容易

缺点:

  • 运维成本过高,部署服务器数量高

  • 接口兼容多版本,可能一个系统的不同功能具有不同的版本

  • 分布式系统的复杂性,通信成本提升,系统复杂性提升

  • 分布式事务,分布式系统会引出分布式事务的出现,现在有很多的分布式事务解决方案,尽量不使用分布式事务去解决,会影响并发量或性能

你可能感兴趣的:(架构)