分布式微服务架构体系测试注意事项
一、互联网体系的发展体系
V1.0单体应用:程序+数据库
V2.0 应用集群:负载均衡技术,如nginx。出发点-->由于用户量的增加导致应用服务器的压力变大
V3.0 数据库集群:分库分表处理。出发点-->数据增加带来的数据操作更加频繁,数据库处理压力变大
V4.0 缓存架构:业界高并发压力,比较多的查询场景,催生了如redis之类的缓存架构体系
V5.0 MQ消息队列:较多的数据库写入场景
V6.0 分布式架构:由于互联网发展,系统功能繁多,如果糅合在一个系统里,更新维护时,容易牵一发动全身。为了提高系统的可维护性、可拓展性,出现了把一个大的系统,拆分为多个小的子系统的架构
二、分布式微服务架构
1、概念
分布式:一个请求处理由多个系统协同完成,而传统的单体架构是一个应用程序进程内处理完所有逻辑
微服务:是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。简单来说,是将大的应用拆分为N个小服务,本质也是分布式架构
2、RPC技术
因为 系统独立拆分之后, 相互之间数据交互,需要进行远程的调用
RPC是远程过程调用(Remote Procedure Call)的缩写形式,是一种实现远程数据交互的 接口实现技术
服务调用者:在程序运行过程中,需要调用其他子系统的 RPC接口
服务提供者:提供了 可访问的 rpc 接口服务
3、注册中心
当服务提供者需要对外提供一个 RPC接口调用服务的时候, 启动之后,自动的将自身的IP信息、端口信息、接口信息,提交到一个叫做 ”注册中心“去保存起来。服务调用者通过注册中心,进行服务信息查询,如下图示意:
三、Dubbo&SpringCloud
1、Dubbo分布式体系
官网:https://dubbo.apache.org/zh/overview/
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
测试点1:看日志, 关注多个服务器的节点日志
测试点2:因为服务独立部署, 针对用户量比较大的服务,做单独的性能测试
测试点3:若公司 要求对单独的子系统服务进行接口测试,掌握微服务内部rpc接口测试技术。如,使用Jmeter进行Dubbo接口的测试
首先需要下载jmeter-plugins-dubbo-2.7.8-jar-with-dependencies.jar包,放在jmeter的bin目录下面
然后添加取样器--dubbo请求,参数填写内容如下
2、 SpringCloud微服务体系
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量
Springcloud 目前最广泛的一种RPC实现 ,是采用http;针对 springcloud 服务的单独测试, 它和普通的http接口测试类似的
3、SpringCloud和Dubbo的区别
Dubbo 最初只专注 RPC调用这个小领域,需要依赖额外的注册中心
而SpringCloud大而全,开箱即用。Springcloud体系会集成各种注册中心,自己实现了注册中心
四、性能测试角度 注意事项
1. 微服务/分布式系统架构,不是为了解决高性能,相反的, 分布式微服务系统架构,因为程序链路跨服务器,可能导致性能下降
2. 分布式系统之间的 网络交互次数很多,所以 不同的RPC方式会有不同的性能表现。http 是目前所有实现中性能比较差的(因为http 要考虑通用性,实现很复杂。但是 服务之间的调用, 有些东西都不需要例如 cookie),除了http,还有dubbo协议, grpc协议等
3. 分布式微服务架构, 引入很多中间件(组件)、 导致 架构复杂。性能测试 过程-- 分析的瓶颈点变多了,难度增加
4.负载均衡
高并发的场景中(性能测试的过程中),要关注:负载均衡 是否生效,关注 服务集群的 不同的服务器之间 资源占用是否均衡