分布式架构:Dubbo 协议如何做接口测试
传统单体架构是一个应用程序进程内处理完所有的逻辑:一个系统糅合了多个功能,如注册 --登录–充值–余额管理–用户积分等,所有的功能模块都是在一个应用程度里处理完的;一个请求过来–> 到应用程序系统–>数据库处理–>返回结果,这种就是单一架构的系统;这样实现的缺陷耦合性太高,一个大型而又全面的系统,如果修改其中某个模块的代码和bug,很容易造成其他模块的bug,牵一发而动全身。所以,我们想要分而治之。
分布式系统就是一种方法: 一个请求处理有多个系统协同完成。比如上面的案例:注册 --登录 放在一个系统里实现;充值–余额管理放在一个系统里实现;用户积分用一个系统实现。修复某个功能bug可以单独修改这个系统的代码,而不会影响其他的功能模块;子系统之间独立部分,资源隔离,避免相互影响,可以相互远程调用;目的是可以提高系统的可维护性和拓展性。Dubbo分布式体系是分布式的一种典型代表。
RPC技术
在分布式架构中有一个核心的技术叫做RPC,用来做远程接口调用。系统独立拆分为多个子系统之后,子系统之间的数据交互需简要进行远程调用。
1)RPC: remote produced call,远程过程调用。
- RPC技术:
泛指所有能够实现远程数据交互的接口实现技术。http本质也是一种RPC技术实现之一。另外还有GRPC,dubbo-RPC【dubbo协议】都是属于RPC技术实现方式,不同的rpc实现的区别在于使用的协议不一样。 - 服务提供者: 提供可访问的rpc的接口服务
- 服务调用者:在程序运行过程中,需要调用其他子系统提供的rpc服务,本质就是接口调用
服务发现机制
消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与 IP 地址的情况下实现通信;服务提供者的rpc的接口需要的地址+端口等信息,开发人员不能在代码里指定和写死,因为部署的环境是变量。
那么怎么去调用这些接口呢?
分布式技术框架里实现了一个服务发现功能:
- 当系统需要对外提供一个RPC的接口调用服务的时候,系统启动后自动讲自身的IP+端口+接口地址等信息提交到“注册中心”保存。
注册中心
注册中心是一个独立程序,提供的服务:
1)各个子系统启动后会调用注册中心的接口,把子系统的服务信息提交过去;
2)注册中心保存子系统的服务信息;
3)服务调用者调用接口之前需要在注册中心进行查询具体的服务提供者的信息,如IP+端口+接口地址等信息;
4)调用才能实现接口调用。
注册中心有很多技术可以实现,但是每种技术的核心目的和工作原理是一样的,所以掌握其中一种就可以了:
- nacos:阿里巴巴提供的开源注册中心技术
- zookeeper:独立的一个服务,目前国内广泛使用
- eureka: 由springcloud老版本提供,用的相对较少。
Jmeter进行Dubbo接口测试
Jmeter测试dubbo结果:
1、插件: 把工具安装包里的插件放到Jmeter的/lib/etc目录下, 重启Jmeter即可。
2、添加线程组,选择dubbo 取样器:里面内容需要根据你的项目具体来填写:
3、运行后查看结果树里查看接口运行结果即可完成接口测试。