一文搞定微服务测试本质

开发 架构
最近几年微服务架构越来越火爆,逐渐被企业所采用。随着软件架构的变化,对应的软件测试策略需要作何调整呢?在这里我来先介绍一下微服务的相关概念以及微服务的主流框架.

 最近几年微服务架构越来越火爆,逐渐被企业所采用。随着软件架构的变化,对应的软件测试策略需要作何调整呢?在这里我来先介绍一下微服务的相关概念以及微服务的主流框架SpringCloud,让大家对微服务有一个整体的认识,然后我再对如何进行微服务测试进行概要讲解。相信大家认真阅读本文后,对服微务一定会有从0到1的突破!

 

[[349156]]

 

微服务概念

微服务英文名称Microservice,微服务架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。

要点

  • 微服务的基本思想在于考虑围绕着业务领域组件来创建应用;
  • 微服务主要框架包括:Dubbo、Spring Cloud、 Istio ;
  • 对于互联网谈到微服务架构一定会谈到Devops即开发测试和部署运维的一体化;
  • 微服务简化了开发,它将创建复杂系统的任务切分为数十乃至上百个小服务,这些小服务易于被小型的软件工程师团队所理解和修改。但是微服务并未真正地消除复杂性,而是将复杂性迁移到对大量服务的连接、管理和监控上;
  • 微服务与SOA,微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式;

传统服务与微服务的区别

 

一文搞定微服务测试本质

 

大家可以看到,传统服务是所有的功能都部署在一台机器上(上图左),通过增加服务器数量来扩容!而微服务是以业务为单位进行部署,不同的业务部署在不同的服务器上,业务使用频繁的还可以使用更多的资源进行部署(上图右侧,橘黄色部署了5个单元,而玫红色只部署了一个单元),这样就可以更合理的利用资源了!

传统设计与微服务在数据库方面设计的区别

 

一文搞定微服务测试本质

 

大家可以看到传统服务的所有功能对应一个DB (上图左),而微服务可以根据不同的业务设计不同的DB (上图右,可以一个业务对应一个独立的DB)

微服务架构设计核心

1:我们把整个系统根据业务拆分成几个子系统。

2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。

3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。

5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

7:还需要一个监控功能,监控每个服务调用花费的时间等

SpringCloud

Spring Cloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。

官网:https://springcloud.cc/

特点:

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • service - to - service调用
  • 负载均衡
  • 断路器
  • 分布式消息传递

SpringCloud包括的主要组件如下图:

 

一文搞定微服务测试本质

 

一个Spring Cloud 工程的pom配置文件如下,大家可以简单的理解为在SpringCloud

工程的pom.xml中,你需要什么功能,把它直接引入工程就可以了

 

一文搞定微服务测试本质

 

在这里由于我们主要介绍微服务概念,所以就不过多解释springcloud相关的开发内容了。

微服务测试

  • 前端UI

与传统测试没有区别,因为你只做功能那么你感受不到架构的变化!

  • 服务端

微服务通常使用通过HTTP的REST来暴露,因此微服务的测试等价于接口测试。对微服务提供的接口进行功能、性能、安全测试,具体测试方法如下:

1.通过构建请求调用各个微服务接口,可以通过编码或者工具模拟的方式完成。

编码:python(unittest+requests);Java(junit4+httpclient)

工具模拟:jMeter、soupUI、postman等

2.请求的验证:除了验证接口的返回值外,还要关注负载均衡(请求是否分发到多点应用)

3.监控:通过工具 SpringCloud Sleuth、 Turbine、Prometheus进行监控

4.日志:通过ELK( ElasticStack )来集中化管理日志

  • 重点:

微服务架构下,既需要保障各服务内部每个模块的完整性,又需要关注模块间、服务间的交互。

  • 难点:

1.关联性:微服务通常情况下会与多个微服务进行交互。当某服务发生变化时,会直接影响到依赖的其他服务。

2.可靠性:为了尽可能降低微服务间通信对网络情况的高度依赖,降低因网络不稳定引起的故障率,设计微服务架构时会设计隔离机制。

3.数据一致性:微服务是基于分布式系统设计的,这就需要考虑分布式系统数据一致性的问题。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2022-09-21 16:56:16

设计模式微服务架构

2023-11-21 08:37:09

2023-09-02 21:27:09

2022-11-09 09:15:31

ProtoBufGo语言

2024-01-09 08:24:47

JMM核心线程

2021-08-13 05:50:01

ContainerdDockerKubernetes

2021-10-25 16:01:01

Linux设备树字符串

2021-03-28 18:40:02

LinuxWindowsJava

2020-03-26 09:18:54

高薪本质因素

2019-09-23 10:51:14

JavaJava虚拟机Linux

2019-10-12 08:59:36

软件DevOps技术

2021-08-31 07:02:20

Diff算法DOM

2022-08-17 18:25:37

Java分布式搜索引擎

2021-10-06 20:23:08

Linux共享内存

2021-10-29 11:30:31

补码二进制反码

2024-06-27 10:50:01

2022-10-21 17:24:34

契约测试定位

2018-09-14 09:23:03

微服务服务集成

2021-04-19 17:32:34

Java内存模型

2022-04-15 08:03:41

SaaS应用管理市场
点赞
收藏

51CTO技术栈公众号