系统架构之微服务架构

微服务架构

  • 一.传统的单体架构与微服务架构的区别
    • 1.1 单体架构
      • 1.1.1 优点
      • 1.1.2 缺点
    • 1.2 微服务架构
      • 1.2.1 优点
      • 1.2.2 面临的问题与挑战
  • 二. 微服务架构模式方案
    • 2.1 聚合器微服务
    • 2.2 链式微服务
    • 2.3 数据共享微服务
    • 2.4 异步消息传递微服务
  • 三. SOA与微服务的区别

微服务:顾名思义就是很小的服务,所以它是面向服务架构的一种。传统的单体架构与微服务架构的区别类似于雕版印刷VS活字印刷。

一.传统的单体架构与微服务架构的区别

1.1 单体架构

1.1.1 优点

①开发简单,集中式管理

②基本不会重复开发

③功能都在本地,没有分布式的管理和调用消耗

1.1.2 缺点

1、效率低:开发都在同一个项目改代码,相互等待,冲突不断

2、维护难:代码功能耦合在一起,新人不知道何从下手

3、不灵活:构建时间长,任何小修改都要重构整个项目,耗时

4、稳定性差:一个微小的问题,都可能导致整个应用挂掉

5、扩展性不够:无法满足高并发下的业务需求

1.2 微服务架构

目的:有效的拆分应用,实现敏捷开发和部署
在这里插入图片描述

1.2.1 优点

复杂应用解耦

 小服务(且专注于做一件事),化整为零,易于小团队开发。

独立性强

 独立开发、独立部署、独立测试、独立运行(每个服务在其独立进程中)

技术选型灵活

 支持异构(如:每个服务使用不同的数据库)

容错能力强

 故障被隔离在单个服务中,通过重试、平稳退化等机制实现应用层容错。

松耦合、易扩展

 可根据需求独立扩展。

1.2.2 面临的问题与挑战

  • 分布式环境下的数据一致性

  • 测试的复杂性【服务间依赖测试】

  • 运维的复杂性

二. 微服务架构模式方案

2.1 聚合器微服务

在这里插入图片描述

2.2 链式微服务

在这里插入图片描述

2.3 数据共享微服务

在这里插入图片描述

2.4 异步消息传递微服务

在这里插入图片描述

三. SOA与微服务的区别

微服务SOA
能拆分的就拆分整体的,服务能放一起的都放一起
纵向业务划分是水平分多层
由单一组织负责按层级划分不同部门的组织负责
细粒度粗粒度
两句话可以解释明白几百字只相当于SOA的目录
独立的子公司类似大公司里面划分了一些业务单元(BU)
组件小存在较复杂的组件
业务逻辑存在于每一个服务中业务逻辑横跨多个业务领域
使用轻量级的通信方式,如HTTP企业服务总线(ESB)充当了服务之间通信的角色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 中setup的特性

特性四&#xff1a;父传子组件传参【defineProps】&#xff1a; 父组件&#xff08;传递数据&#xff09;&#xff1a;利用自定义属性传递数据。 <template><h3>我是父组件</h3><hr /><Child :name"info.name" :age"info.age"…

vue图表引用使用

如果你选择Vue作为你的前端框架&#xff0c;并且需要使用图表插件&#xff0c;那么可以考虑以下几种方式&#xff1a; 使用Vue插件&#xff1a;Vue有许多专门为图表设计的插件&#xff0c;如Vue-chartjs、Vue-echarts等。这些插件提供了一些已经封装好的组件并支持常见的图表库…

前端渲染后端返回的HTML格式的数据

在日常开发中&#xff0c;经常有需要前端渲染后端返回页面的需求&#xff0c;对于不同数据结构&#xff0c;前端的渲染方式也不尽相同&#xff0c;本文旨在对各种情况进行总结。 后端返回纯html文件格式 数据包含html标签等元素&#xff0c;数据类型如下图&#xff1a; 前端通…

“编辑微信小程序与后台数据交互与微信小程序wxs的使用“

引言 在现代移动应用开发中&#xff0c;微信小程序已经成为了一个非常流行和广泛使用的平台。为了使小程序能够展示丰富的内容和实现复杂的功能&#xff0c;与后台数据的交互是至关重要的。同时&#xff0c;微信小程序还提供了一种特殊的脚本语言——wxs&#xff0c;用于增强小…

图论03-【无权无向】-图的深度优先遍历-路径问题/检测环/二分图

文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 路径问题的优化-提前结束递归4.1 思路4.2 主要代码 5. 检测环5.1 思路5.2 主要代码 6. 二分图6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 递归判断相邻两点的颜色是否一致…

【手写数据库toadb】语言解析器,编程语言是这样被解析理解,解析器利器flex和bison,解析树与逆波兰式

flex与bsion使用介绍 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方…

安装插件失败,getaddrinfo ENOENT raw.githubusercontent.com 报错

报错如图 解决方法&#xff1a; 查看raw.githubusercontent.com的真实IP地址 点开网址 https://www.ipaddress.com/ &#xff0c;输入raw.githubusercontent.com&#xff0c;点击查询&#xff1a; 复制以下的ip 修改hosts文件 找到这个文件夹&#xff1a; C:\Windows\System32\…

MIPS指令集摘要

目录 MIPS指令R I J三种格式 MIPS五种寻址方式 立即数寻址 寄存器寻址 基址寻址 PC相对寻址 伪直接寻址 WinMIPS64汇编指令 助记 从内存中加载数据 lb lbu lh lhu lw lwu ld l.d lui 存储数据到内存 sb sh sw sd s.d 算术运算 daddi daddui dadd…

Java中静态常量和枚举类的区别

在项目中我们有时候会使用常量、静态常量以及枚举&#xff0c;那么他们有什么区别呢&#xff1f;我们先看几个例子&#xff1a; 若依框架中使用的常量&#xff1a; /** 正常状态 */public static final String NORMAL "0";/** 异常状态 */public static final Stri…

绿盾控制台如何给未授权终端分配相应权限

环境&#xff1a; 绿盾控制台7.0 问题描述&#xff1a; 绿盾控制台如何给未授权终端分配相应权限 解决方案&#xff1a; 1.进入桌面管理系统 2.通过终端号&#xff0c;找到未授权终端下面&#xff0c;选择相应的未授权终端 3.点击鼠标右键&#xff0c;选择分配授权模块 4.下…

01认识微服务

一、微服务架构演变 1.单体架构 将所有的功能集中在一个项目开发&#xff0c;打成一个包部署。优点架构简单&#xff0c;部署成本低。缺点耦合度高&#xff0c;不利于大型项目的开发和维护 2.分布式架构 根据业务功能对系统进行拆分&#xff0c;每个业务模块作为独立的项目…

修改ConsoleApplication17_2项目实现oss上线

首先创建号oss&#xff0c;上传文件&#xff0c;复制临时链接 木马内写 可以看到能成功上线但是有个问题就是占用cpu大小为9%左右&#xff0c;这里我用的是腾讯云oss实现的&#xff0c;用阿里云oss实现也是9%左右 我再次进行url的aes加密 还是百分之9左右&#xff0c; 这里…

npm publish发布到在线仓库时,提示:Scope not found

当npm publish发布时&#xff0c;控制台提示&#xff1a;Scope not found&#xff0c;具体错误信息如下&#xff1a; npm notice npm ERR! code E404 npm ERR! 404 Not Found - PUT https://registry.npmjs.org/xxx%2fxxx - Scope not found npm ERR! 404 npm ERR! 404 xxx/xx…

Spring源码解析——事务的回滚和提交

正文 上一篇文章讲解了获取事务&#xff0c;并且通过获取的connection设置只读、隔离级别等&#xff0c;这篇文章讲解剩下的事务的回滚和提交。最全面的Java面试网站 回滚处理 之前已经完成了目标方法运行前的事务准备工作&#xff0c;而这些准备工作最大的目的无非是对于程…

[计算机提升] 快捷方式与硬链接

1.7 快捷方式与硬链接 1.7.1 快捷方式(符号链接) 在Windows系统中&#xff0c;快捷方式是指一个特殊的文件或图标&#xff0c;它提供了方便的访问其他文件、文件夹、应用程序或网站的方式。快捷方式可以视为一个指向其他位置的链接或引用。 快捷方式被创建时&#xff0c;会关…

Rust 中的String与所有权机制

文章目录 一、string二、所有权2.1 所有权与作用域2.2 对所有权的操作2.2.1 转移2.2.3 拷贝2.2.3 传递 2.3 引用2.3.1 借用2.3.2 可变引用 一、string 之前学习过 Rust 只有几种基础的数据类型&#xff0c;但是没有常用的字符串也就是String&#xff0c;今天来学习一下 String…

【单元测试】--单元测试最佳实践

一、单元测试代码风格 编写单元测试代码时&#xff0c;遵循一致的风格和最佳实践是非常重要的&#xff0c;因为它有助于提高代码的可读性、可维护性和可靠性。以下是一些常见的单元测试代码风格和最佳实践&#xff1a; 命名约定&#xff1a; 测试方法的名称应当清晰、描述性&…

C++初阶(五)类和对象

文章目录 一、C两大类型二、类的6个默认成员函数三、构造函数1、概念2、特性1、构造函数自动调用特性演示2、无参有参调用两种情况演示3、函数重载演示4、默认构造函数组成及演示5、内置类型成员不初始化的补丁演示 3、析构函数1、概念2、特性1、代码演示2、析构两种情况 4、构…

使用vscode调试ffmpeg源码

ffmpeg的编译配置 # --enable-debug 设置为调试级别 # --disable-stripping 如果不加此选项&#xff0c;会strip去掉符号信息 ./configure --prefix{output_path} --enable-debug --disable-stripping make -j10VSCode的配置 将以下文件对比替换工程.vscode目录下的相同文件 …

vsCode git 修改、清空、重置、保存账号名密码

1、保存账号名密码&#xff0c;之后拉取代码都不用重新输入&#xff1a; git config --global credential.helper store 2、查看git用户名&#xff1a; git config user.name 3、清空所有的用户名和密码&#xff1a; git config --system --unset credential.helper 4、清…