传统单体架构介绍及优缺点

来看下传统架构的架构图:

一个项目包(war包,归档包)包含了应用的所有功能, 在没有出现微服务概念之前,基本上都是这种架构形式存在, 我们一般把程序打包成一个文件后,扔到tomcat或者jetty, jboss等应用服务器中即可。

特点:

  • 部署很简单,符合我们的思维
  • 项目雍炯
  • 技术债务
  • 部署频率低
  • 扩展性差
  • 阻碍技术创新

来看下微服务架构:

把每个独立的模块单独抽出来作为一个独立运行的服务,服务之间采用轻量级Rest方式调用

微服务特点:

  • 每个小组专注于一个微型服务,致力于该服务的稳定性,可用性,服务性能,以及业务的迭代开发
  • 每个微服务可以独立运行(独立一个进程运行)
  • 多个微服务或者说一系列微服务组合起来就构建了一个或者多个独立的系统
  • 每个微服务只针对独立的业务开发基础的服务,也就是说一个微服务只关注某个特定的功能
  • 每个微服务可以使用不同的技术实现,以及每个微服务有自己独立的数据库
  • 每个微服务之间通过一些轻量的通讯机制进行通讯,例如REST API
  • 更加容易部署,而且可以全自动部署

单体架构到微服务架构改造问题

  • 运维要求高
  • 分布式固有的复杂性
  • 接口调用成本高

微服务设计原则

  • 单一职责
  • 服务自治
  • 轻量级通讯原则
  • 接口明确原则
  • 微服务粒度
  • 服务依赖

微服务与SOA联系及区别

  • SOA(面向服务架构)是集成多个较大组件(一般是应用)的一种机制,它们将整体构成一个彼此协作的套件,是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯
  • 微服务架构中,业务逻辑被拆分成一系列小而松散耦合的分布式组件,共同构成了较大的应用,每个组件都被称为微服务
  • 微服务架构是SOA架构的子集,微服务架构的粒度更加细

功能

SOA

微服务

组件大小

大块业务逻辑

单独任务或小块业务逻辑

耦合

通常松耦合

总是松耦合

公司架构

任何类型

小型、专注于功能交叉的团队

管理

着重中央管理

着重分散管理

目标

确保应用能够交互操作

执行新功能,快速拓展开发团队

 

 

更多springcloud教程参见[持续更新]:

springcloud教程目录

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐