微服务架构 | 青训营笔记

55 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

单体架构介绍

单体架构(Monolithic Architecture)是一种将所有功能打包在一个容器中运行的设计风格,一个实例中集成了一个系统的所有功能。一个软件应用,往往会将应用所有功能都开发和打包在一起,一个B/S应用架构往往是这样的:

graph LR
a(Client) --> b(Browser)
b --> c(server)

但是,当用户访问量变大导致一台服务器无法支撑时怎么办呢?加服务器加负载均衡,架构就变成这样了:

graph LR
a(Client) --> b(Browser)
b --> c(LoadBalance)
c --> d(ServerA)
c --> e(ServerB)

单体架构的缺点:

  • 代码臃肿,应用启动时间长
  • 伸缩困难,单体应用扩展性能时只能整个应用进行扩展,造成计算资源浪费。

SOA

SOA(Service-Oriented Architecture)是一种分布式服务架构的常见方式:提供一种被各个服务单元/系统彼此认可的协议进行数据通讯,进而实现跨服务单元/系统交互的能力。

v2-11b3e6c534e18ca9fc4013359aa40115_b.jpg

微服务与SOA

微服务是符合SOA架构风格的,但它与传统的SOA又有一些区别,主要体现在:

  • 微服务要求以服务为单位,拆分的粒度更细 传统SOA多以系统为节点通讯,微服务更强调将每个系统再拆分形成一个个独立的服务单元

  • 微服务更分布式,去中心化 微服务不需要ESB,强调服务协同(Choreography)而不是编排(Orchestration)

  • 各服务可自运行,无需外部容器 使用集中化的诸如Tomcat、JBoss容器不够敏捷,对可伸缩性也有比较大的影响,因此微服务要求每个服务节点可独立运行,独立对外提供服务