单体服务-微服务-分布式 [三兄弟的区别]

news/2024/9/24 0:29:51/

大家好,我是晓星航。今天为大家带来的是 单体服务-微服务-分布式 [三兄弟的区别] 相关的讲解!😊

文章目录

  • 1.单体服务
    • 1.1单体服务架构的基本介绍
    • 1.2单体服务的优缺点
  • 2.微服务
    • 2.1微服务架构的基本介绍
    • 2.2微服务架构的优缺点
  • 3.分布式
  • 4.三兄弟之间的区别

1.单体服务

1.1单体服务架构的基本介绍

单体服务:一种软件开发模型,它将所有的服务组件集成在一个独立的系统单位中进行开发、部署和维护。在这种架构中,前端用户界面、后端服务器逻辑、数据库操作等组件通常紧密耦合在一起,形成一个统一的程序。这种架构模式易于开发和部署,特别是在项目规模较小、复杂度较低的情况下。然而,随着项目规模的扩大、复杂度的增加,单体架构可能会导致应用变得难以维护、扩展和理解。

图解:
在这里插入图片描述
在这里插入图片描述

1.2单体服务的优缺点

优点:

  • 更少的横切问题:与整体架构相关的一个主要优点是你只需要担心一个应用程序的横切问题,例如日志记录或缓存。
  • 减少运营开销:将你的业务集中在一个应用程序上,意味着你只需为一个应用程序设置日志记录、监视和测试。由于你不需要进行多个部署,单体应用的部署通常也不太复杂。
  • 更容易的测试:使用单体架构,自动化测试更容易设置和运行,因为一切都在同一个屋檐下。对于微服务,测试需要适应不同运行时环境中的不同应用程序——这可能会变得复杂。
  • 性能:与微服务相比,单体应用还具有性能优势。这通常归因为使用本地调用而不是跨网络的 API 调用。

缺点:

  • 过度紧密的耦合:虽然单体可以帮助你避免前面提到的纠缠,但单体越大,它就越容易受到纠缠。由于一切都如此紧密耦合,单体应用中的服务隔离变得非常困难,使得独立扩展或代码维护变得困难。
  • 更难理解:与微服务相比,单体应用更难理解,这一点在新团队成员入职时就会出现。有时,这是紧密耦合的直接结果,而且可能存在依赖性和副作用,当你查看特定服务或控制器时,这些依赖性和副作用并不明显。

2.微服务

2.1微服务架构的基本介绍

微服务:由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

2.2微服务架构的优缺点

优点:

  • 测试容易
  • 可伸缩性强
  • 可靠性强
  • 跨语言
  • 协同开发
  • 方便系统迭代

缺点:

  • 运维成本高,人力成本比较大,部署项目
  • 接口兼容版本问题
  • 分布式系统的复杂性
  • 分布式事务

3.分布式

分布式和微服务概念类似,我们来说一下它们两者的区别:
微服务:将模块拆分成一个独立的服务单元通过接口来实现数据的交互。简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。

分布式服务:服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

关系:分布式只是一种手段,把不同的机器分散在不同的地方,然后这些机器间相互协助完成业务。微服务是一种特殊的分布式,微服务架构是分布式服务架构的子集。微服务架构通过更细粒度的服务切分,使得整个系统的迭代速度并行程度更高,但是运维的复杂度和性能会随着服务的粒度更细而增加。微服务重在解耦合,使每个模块都独立。分布式重在资源共享与加快计算机计算速度。

图解:
在这里插入图片描述

4.三兄弟之间的区别

单体服务:传统架构。集所有功能于一身构建一个项目,不可分开部署

分布式:一种部署方式。一定部署在不同的服务器上,其项目功能可以是相同的业务(集群部署),也可以是不同的业务

微服务:一种软件架构。通常是把不同的业务拆分出来做多个服务,可以部署在相同的服务器上,也可以部署在不同的服务器上

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘


http://www.ppmy.cn/news/1454781.html

相关文章

道可道,非常道,名可名,非常名;学习道德经新解读!打破思想钢印——早读(逆天打工人爬取热门微信文章解读)

你读过道德经吗? 引言Python 代码第一篇 洞见 原来这就是:穷人的思想钢印第二篇 人民日报 来了!新闻早班车要闻社会政策 结尾 知识始于好奇 终于智慧 好奇心驱使我们探索 而智慧则是自由思想的结晶 引言 玄之又玄 众妙之门 今天真的是大开我的眼界 我之…

【Linux】环境离线安装telnet

前言 在Linux环境中有时候会遇到使用telnet命令,去检查服务端口是否连通。 telnet简述 Telnet 是一种远程登录协议,它是 TCP/IP 协议族的一部分,也是 Internet 上进行远程登录服务的标准协议和主要方式。Telnet 允许用户在自己的本地计算机…

小型气象站设备的应用场景有哪些?

TH-QC12小型气象站设备的应用场景非常广泛,涵盖了多个领域。以下是一些主要的应用场景: 农业领域:在农业科研和生产管理中,小型气象站可以广泛应用于茶园、果园、温室等范围。它们可以协助精确监测和搜集气候数据,为生…

一文彻底讲透 CSS 盒模型

文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 CSS 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。 CSS 盒模型&…

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert:断言,一般用来比较是否相等,比如 Assert.assertEquals 在JUnit测试框架中,BeforeClass,Before,After和AfterClass是四个常用的注解,它们的作用如下: …

WSL (Windows Subsystem for Linux) 中将默认用户更改为 root

要在 WSL (Windows Subsystem for Linux) 中将默认用户更改为 root,你可以使用以下步骤: 打开你的命令提示符或 PowerShell。首先,你需要知道你的 Linux 发行版的名称。你可以通过运行以下命令来列出所有安装的 WSL 发行版及其状态&#xff…

Qt QImageWriter类介绍

1.简介 QImageWriter 用于写入图像文件的类。它提供了将 QImage 对象保存到不同图像格式文件的功能,包括但不限于 PNG、JPEG、BMP 等。QImageWriter 可以将图像写入文件,也可以写入任何 QIODevice,如 QByteArray,这使得它非常灵活…

QT5之lambda+内存回收机制

使用lambda需要 配置c11 所以在点.pro文件里面配置添加如下 CONFIG c11 使用到qDebug 打印包含头文件 #include<QDebug> lambda 表达式使用 代替槽如下 #include "mainwidget.h" #include<QPushButton> #include<QDebug> mainWidget::mainWid…