当前位置: 首页 > article >正文

单机服务和微服务

单体服务

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

优点:

  1. 简单易懂:单体服务架构相对简单,易于理解和上手。开发人员可以更快地构建和部署整个应用程序。
  2. 快速开发:由于所有功能模块都在同一个应用程序中,开发人员可以更方便地进行代码编写、测试和集成,加快开发速度。
  3. 低成本:相对于其他架构模式,单体服务架构的开发和维护成本相对较低,因为它不需要处理分布式系统和服务间通信的复杂性。

缺点:

  1. 难以扩展:随着应用程序规模和流量的增长,单体服务架构变得难以扩展。增加处理能力可能需要垂直扩展整个应用,增加硬件成本。
  2. 单一故障点:在单体服务架构中,整个应用程序是一个单一的实体,当一个模块出现问题时,可能会导致整个系统崩溃,降低了系统的健壮性和可靠性。
  3. 难以维护:由于所有功能模块都集中在一个应用程序中,当需要修改或升级某个模块时,可能会涉及整个应用程序的重新部署和测试,增加了维护的复杂性。
  4. 团队协作限制:在单体服务架构中,不同功能模块之间的代码和资源是共享的,这可能导致团队之间的协作和独立开发受到限制

image-20241224181557824

微服务
  1. 微服务架构:微服务架构是一种具体的设计实现或者设计方案,是将复杂的系统使用组件化的方式进行拆分,并使用轻量级通讯方式进行整合的一种设计方法

  2. 微服务:微服务是微服务架构的巨头实现方案,是通过微服务架构设计方法拆分出来的独立的组件化的小应用

  3. 微服务定义的精髓->分而治之,合而用之,将复杂的系统进行拆分的方法,就是分而治之,可以让复杂的事情变简单,使用轻量级通讯等方式进行整合的设计,就是合而用之,可以让微小的力量变

  4. 微服务架构是将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间采用轻量级通信机制,这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,公用一个最小型的集中式管理,服务可用不同的语言进行开发,使用不同的数据存储技术

  5. 微服务架构的核心特点

    • 每个服务都是独立的进程,拥有自己的数据库和技术栈,可以独立部署和更新。

    • 服务之间通过轻量级的通信机制(通常是基于HTTP的REST API)进行交互,减少了系统的耦合性。

    • 微服务架构使得系统更容易扩展和维护,每个服务可以独立地进行开发和迭代,提高了系统的整体灵活性和响应速度,允许独立部署和扩展每个服务,根据需求可以增加或减少实例数量。而在单体系统中,只能对整个应用程序进行扩展

可扩展性是指系统能够在需要时进行扩展以应对更大的负载或更高的性能要求。以下是几个常见的可扩展性应用案例:
网络应用程序:如电子商务网站、社交媒体平台等,当用户数量增加时,需要通过增加服务器或拓展基础设施来处理更多的请求和数据。
云计算:云服务提供商需要能够扩展其基础设施以适应越来越多的用户和服务需求,例如增加服务器、存储和网络资源。
大数据处理:当数据量增加时,需要扩展数据存储、处理和分析的能力,以处理更多的数据并提供准确和实时的结果。
实时流处理:例如视频流、传感器数据等,需要扩展处理能力以实时处理和分析大量的数据。
虚拟化和容器化:通过虚拟化和容器化技术,可以将应用程序和服务部署在多个机器上,从而实现可扩展性并提高性能和资源利用率。
分布式系统:通过将任务分布到多台计算机上,可以提高系统的可扩展性和容错性,例如分布式数据库、分布式文件系统等。
微服务架构:将应用程序拆分成多个小型、独立的服务,可以更容易地进行扩展和部署。
CDN(内容分发网络):通过在全球范围内分布服务器,为用户提供更快的内容传输和更好的用户体验。
这些都是常见的可扩展性应用案例,通过不同的技术和策略,可以实现系统的可扩展性以满足不断增长的需求。


http://www.kler.cn/a/452506.html

相关文章:

  • Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息
  • Ubuntu20.04 交叉编译Qt5.15.15 for rk3588
  • Mysql 查询性能调优总结
  • CH32V307VCT6---工程template创建
  • python fastapi docs UI 失效解决方案
  • GoFrame框架介绍
  • 模型的量化(Quantization)
  • 一篇梳理清楚JavaScript ES6中的Promise
  • [WASAPI]音频API:从Qt MultipleMedia走到WASAPI,相似与不同
  • 钢材缺陷识别分割数据集labelme格式693张4类别
  • leetcode hot100 将有序数组转化为二叉搜索树
  • 微服务: 06-rabbitmq设置延时队列,场景与使用(springboot)
  • 图神经网络_图嵌入_SDNE
  • 【Rust自学】6.4. 简单的控制流-if let
  • 【每日学点鸿蒙知识】指纹识别隐藏背面、数组内部值变化刷新UI、键盘输入类型、跨组件路由、C++20特性支持
  • 智谱BigModel研习社|搭建 AI 搜索引擎 - 使用免费的Web-Search-Pro+脑图Agent智能体
  • Gmsh有限元网格剖分(Python)---点、直线、平面的移动
  • STL 六大组件
  • 私域电商逆袭密码:AI 智能名片小程序与商城系统如何梦幻联动
  • 数据结构--堆的向上调整和向下调整
  • excel中如何筛选一列中重复的内容,相同的内容只保留一次
  • 2、C#基于.net framework的应用开发实战编程 - 设计(二、三) - 编程手把手系列文章...
  • Golang的发展历程
  • MFC/C++学习系列之简单记录11——树控件的使用
  • Java中以某字符串开头且忽略大小写字母如何实现【正则表达式(Regex)】
  • 工厂常用软件系统大全中英文全称对照表及功能介绍应用场景ERP MES WMS SCADA IOT SAP等软件系统介绍