什么是微服务?怎么测试?今天一次性讲清楚...

news2024/12/28 14:29:20

01、什么是微服务

Adrian Cockcroft对微服务的表述:loosely couped service oriented architecture with bounded context。

这里涉及两个微服务的概念:

  • loosely couped松耦合

    松耦合可以引申出其他概念,如各自独立,微服务应该是各自独立的,可以独立开发,独立测试,独立部署,独立运维,如果每个服务都需要同时被更新,那就不是松耦合。服务自理,高度内聚,对外界应该是没有依赖的。

  • bounded context有界上下文

    业务有界,每个微服务有着明确的业务功能,业务场景。数据有界,每个微服务自身数据不对外界暴露,外界只能通过微服务暴露的接口访问内部数据。

02、优点

  • 隔离性好

    部署A服务时,不会影响B服务的运⾏

  • 易于管理:

    ⾃动地服务升降级,不会影响整个系统的运⾏状态。监控每个微服务的运⾏状态,及时发出告警

  • 弹性:

    系统中一个组件不可用,并没有导致级联故障,系统其他部分可以正常运行

  • 简化部署:

    在大型代码仓库中,如果只修改了一小部分,也需要部署整个程序。这样做影响较大,风险也较大。微服务架构中,各服务是彼此独立部署的,如果出问题了,可以快速回滚。便于功能快速发布

03、缺点

  • 多服务运维难度:

    可能需要多个人对多个服务进行维护 

  • 系统部署依赖:

    由于服务间存在调用依赖,因而部署也存在依赖

  • 服务间通信成本:

    直接通常是rpc调用,但仍有调用成本

  • 数据一致性保证:

    需要保证服务正常工作、异常工作下服务间处理一致

  • 系统需要集成测试 :

    除单个服务外,需要服务集成起来,统一测试

04、CAP理论

衡量系统设计的准则。分布式系统不可能同时满足一致性(consistency)、可用性(availability)、分区容错性(partition tolerance),最多只能满足两个。因此,任何分布式系统的设计只是在三者中的不同取舍而已。

  • C:分布式系统所有服务在同一时刻提供同样的业务形态。

  • A:每个服务都必须能在限定时间内响应请求。

  • P:即使服务之间丢失数据,服务仍然响应请求。

CAP理论是分布式系统的设计一个重要准则。

详细介绍:http://blog.csdn.net/chen77716/article/details/30635543

举例:

  • A:业务侧服务和订单平台服务必须都能访问。

  • P:订单状态同步失败,仍能下单,仍能查看业务的订单列表。

  • C:订单状态同步(业务侧订单系统和订单中心,订单平台和业务订单)

05、分布式系统的一种容错机制

分布式系统容错一般有两种机制:

  • 重复尝试:

    适用于能预知到的短期故障。

  • 断路器模式:

    适用于无法预知的突发性故障,无法预估恢复耗时的场景。记录成功和失败请求的数量。如果失效率超过一个阈值,触发断路器使得后续的请求立刻失败。如果大量的请求失败,就可能是这个服务不可用,再发请求也无意义。在一个失效期后,客户端可以再试,如果成功,关闭此断路器。

ps:异常场景应对措施——失败重试,负载均衡,熔断

06、公司级别的服务

具体实现特点:

  • 隔离性一般:

    无法做到所有服务彻底隔离。

    部署A服务时,可能会影响B服务的运⾏

例如:

服务A挂掉,服务B可以正常运行,但可能真正使用B调用了A的某个接口,导致B无法正常使用

  • 易于管理:

    一般公司级别团队专门负责,可以保证监控每个微服务的运⾏状态,及时发出告警

  • 故障预防:

    一般有负载均衡,多台机器同时,一台无法提供服务,流量不会进来

  • 简化部署:

    各服务是彼此独立部署的;但由于服务间可能有依赖,回滚可能需要同时回滚,但具体看服务实现是否进行了100%向前兼容。

  • 服务实现维护:

    不同的服务可能由不同的开发人员维护,需要和多人打交道

07、如何测试?

1、测试要求:

  • 服务独立测试:

    功能、数据检查、性能

  • 服务间一致性测试:

    正常场景、异常场景

  • 系统集成测试:

    功能、数据检查、性能

  • 服务幂等测试:

    一个服务、服务之间

2、 具体测试执行,抛开测试外,大致用过两种测试方案:

间接测试:

在每个服务上,提供虚拟的http接口,这样服务测试转换为http接口测试

直接测试:

针对每个服务,专门写一个client进行访问测试

例如,下面是针对多个thrift服务,采用的两种测试方案思路:


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

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

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

相关文章

坚持软件自主可控,打造国产化公文交换系统

编者按:软件自主可控是什么意思?企业如何对自己使用的软件做到自主可控?本文分析了软件自主可控的概念及意义,并通关相关案例展示了国产化低代码平台是如何助力企业打造公文交换系统的。 软件自主可控的意义 说到软件的自主可控&…

【分享 10 个日常使用的脚本】

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

第十节:继承【java】

目录 📘1.1为什么需要继承 📒1.2 继承概念 📗1.3 继承的语法 📕1.4 父类成员访问 🎱1.4.1 子类中访问父类的成员变量 🎎1.4.2 子类中访问父类的成员方法 📙1.5 super关键字 &#x1f4d…

基于Matlab利用移动目标指示雷达抑制地面杂波(附源码)

目录 一、构建雷达系统 二、定义目标 三、杂波 四、仿真接收到的脉冲和匹配滤波器 五、使用三脉冲消除器执行 六、使用交错PRF模拟接收到的脉冲 七、对交错的 PRF 执行 八、总结 九、程序 本示例显示了移动目标指示 (MTI) 雷达的设计&#xff0…

《Java》private、protected、public区别及解析

我们今天来给大家解析一下Java中四种修饰类型的区别。 那么有的老铁就疑惑了,文章名称不是说三种吗?其实还有一种隐藏的修饰类型(默认类型)英文翻译过来的话是define,这就是我们什么都不修饰,例如&#xff…

【C/C++动态内存 or 柔性数组】——对动态内存分配以及柔性数组的概念进行详细解读(张三 or 李四)

目录前言(栈区、堆区、静态区)动态内存函数malloc与freecalloc与freerealloc与free常见的动态内存错误经典笔试题(再见张三)柔性数组前言(栈区、堆区、静态区) 请耐心看完,看完后就会对内存中的…

天玑9200领跑背后,高端芯片掀起蝴蝶效应

过去一年,天玑9000让联发科在高端旗舰机市场掀起了一场“旋风”。全球知名市场调研机构Counterpoint Research发布的报告显示,联发科在全球和中国智能手机芯片市场份额中连续八个季度保持第一的领先地位,且在高端手机市场的份额有显著增长。另…

PowerShell 美化(谁不想要一个好看的终端呢)

PowerShell 美化安装powershellScoop 安装Oh My Posh安装字体设置应用主题花里胡哨的折腾(bushi 多种主题任君挑选 安装powershell 地址:https://github.com/PowerShell/PowerShell/releases 本文主要使用 Oh My Posh 进行美化 地址:https…

C语言之指针(中)

目录 前言 一、字符指针 1.用法(两种) 2.例子 二、指针数组 三、数组指针 1.数组指针的定义 1.概念 2.例子 2.数组名 3.使用 1.使用的情景 2.例子 四、数组参数、指针参数 1.数组传参 2.指针传参 五、函数指针 1.函数的地址 2.函数指针 3.例子 4.两个特…

【C++】泛型编程之模板初阶

文章目录1. 泛型编程2. 模板2.1 模板的概念3. 函数模板3.1 函数模板概念3.2 函数模板语法3.3 函数模板的原理3.4 函数模板的实例化3.5 模板参数的匹配原则3.6 普通函数与函数模板的区别4. 类模板4.1 类模板语法4.2 类模板的实例化4.3 类模板与函数模板区别4.4 类模板分文件编写…

Word控件Spire.Doc 【文本】教程(17) ;在Word中设置文本方向

Spire.NET的Spire.是MicrosoftDoc人员对Word文档进行操作打印的.NET类库。帮助单独安装Microsoft Word在开发环境下,轻松便捷地创建、编辑、转换和转换Word文档。拥有近10个专业开发经验Spire系列办公文档开发打印工具,专注于创建、编辑、转换和Word/Exc…

C++设计模式---组合模式

文章目录使用场景组合模式的定义安全组合模式使用场景 组合模式和类与类之间的组合是不同的概念。 组合模式主要用来处理树形结构的数据,如果要表达的数据不是树形结构,就不太适合组合模式。 比如我们有一个目录结构: 这个目录我们把它绘…

图解LeetCode——1704. 判断字符串的两半是否相似(难度:简单)

一、题目 给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。 两个字符串 相似 的前提是它们都含有相同数目的元音(a,e,i,o,u,A,E&…

几分钟实现对恶意IP地址进行拦截,腾讯云Web防火墙实在太香了!

一、概述 在平时上网中,我们经常听到“xxx被拉入黑名单”、“把xxx加入白名单”,黑白名单成了禁止访问和允许访问的代名词,黑白名单是一种常见的安全机制,用于隔离流量,然后对隔离的流量采取特定操作。 黑名单代表只…

Redis高可用之持久化

一 Redis高可用 什么是高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常…

Pytorch实战:基于鲸鱼WOA优化1DCNN的轴承故障诊断

目录 0.引言 1.关键点 2.WOA优化1DCNN超参数实战 2.1 数据准备 2.2 1DCNN故障诊断建模 2.3 采用WOA优化1DCNN超参数 0.引言 采用1DCNN进行轴承故障诊断建模,并基于鲸鱼优化算法WOA对1DCNN的超参数进行优化,以实现更高的精度。建立一个两层的1DCNN&a…

【Transformers】第 9 章 :处理很少或没有标签

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

[C]实现能在本地存储的简易通讯录

作者: 华丞臧. 专栏:【C语言】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 文章目录一、文件动态通讯录二、相关代码解析2.1 初始化2.2 销毁通讯录2.3 增加联系人2.4 …

NLP模型(一)——word2vec实现

文章目录1. 整体思路2. 数据处理3. 数据准备4. 创建数据管道5. 构建模型6. 模型训练7. 加载模型得到词向量8. 总结前面我介绍了word2vec算法的两种实现算法,Skip−gramSkip-gramSkip−gram 以及 CBOWCBOWCBOW 算法,我认为理解一个算法最好的方法就是复现…

stft的窗函数设计要求和方法(COLA)

在语音处理进行短时傅里叶变换的时候,对窗函数是有一定要求的,这篇文章将对这方面的问题进行简单的阐述。 一、背景描述 常用的语音处理需要进行这样处理: stft分帧会对信号产生截断,为尽可能避免这种影响,应考虑考虑加合适的窗 …