soul从入门到进阶06——运行soul-examples-dubbo

2024-01-22 12:18

本文主要是介绍soul从入门到进阶06——运行soul-examples-dubbo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面我们初步尝试了soul网关的http协议相关的功能。这篇我们来看一下 dubbo协议的功能。

1. 启动soul-admin 和 soul-bootstrap

省略 可参考 soul从入门到进阶01——soul网关初体验

2. 启动 soul-example-dubbo
  1. 打开命令行
  2. cd soul-examples
  3. cd soul-examples-dubbo

可以看到分别是apache dubboe的example和 alibaba dubbo的example

  1. 进入 soul-examples-apache-dubbo-service 这个模块
  2. 运行 TestApacheDubboApplication
  3. 发现报错了,显示zookeeper 没有连接
  4. 下载一个zookeeper ,注意 如果是初次使用,需要将conf文件夹下的zoo_sample.cfg 复制为名为zoo.cfg的文件,否则会报以下错误。
pache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg: No such file or directory
  1. 此时再次启动 TestApacheDubboApplication
3 查看soul-admin
  1. 如下图所示,dubbo这个插件里多了一个选择器。选择器里面有很多规则。

在这里插入图片描述

4. 通过http访问dubbo
  1. 在 postman 请求http://localhost:9195/dubbo/findAll
{"code": 200,"message": "Access to success!","data": {"name": "hello world Soul Apache, findAll","id": "-275502741"}
}
  1. 发现bootstrap 打印了如下日志
2021-01-21 00:13:35.517  INFO 23633 --- [-work-threads-1] o.d.soul.plugin.base.AbstractSoulPlugin  : dubbo selector success match , selector name :/dubbo
2021-01-21 00:13:35.518  INFO 23633 --- [-work-threads-1] o.d.soul.plugin.base.AbstractSoulPlugin  : dubbo selector success match , selector name :/dubbo/findAll
5. 修改规则
  1. 在soul-admin 将 【dubbo插件】——【dubbo选择器】——【/dubbo/findAll 规则】关闭。
  2. 再次请求 http://localhost:9195/dubbo/findAll
  3. 响应结果如下 ,没有这条规则,就不能访问
{"code": -102,"message": "Rule not found!","data": null
}
6. 压测一下
wrk -t16 -c200 -d30s  http://localhost:9195/dubbo/findAll
Running 30s test @ http://localhost:9195/dubbo/findAll16 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    17.82ms   24.68ms 498.22ms   93.66%Req/Sec   829.79    268.27     1.51k    69.90%379644 requests in 30.09s, 66.61MB readSocket errors: connect 0, read 157, write 0, timeout 0
Requests/sec:  12616.85
Transfer/sec:      2.21MB
Running 30s test @ http://localhost:9195/dubbo/findAll16 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    13.00ms   11.01ms 121.05ms   74.91%Req/Sec     1.05k   142.75     1.52k    74.88%500028 requests in 30.03s, 87.73MB readSocket errors: connect 0, read 34, write 0, timeout 0
Requests/sec:  16653.62
Transfer/sec:      2.92MB
Running 30s test @ http://localhost:9195/dubbo/findAll16 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    29.02ms   38.88ms 245.86ms   87.01%Req/Sec   710.10    181.88     1.43k    72.27%339633 requests in 30.06s, 59.59MB readSocket errors: connect 0, read 44, write 0, timeout 0
Requests/sec:  11298.65
Transfer/sec:      1.98MB

发现qps在1.2w左右。
采用 压测soul网关 中的办法 将soul-bootstrap 的日志级别调整为warn再次压测

结果如下

Running 30s test @ http://localhost:9195/dubbo/findAll16 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    15.63ms   21.21ms 391.96ms   91.58%Req/Sec     0.96k   275.19     1.86k    72.45%453131 requests in 30.04s, 79.51MB readSocket errors: connect 0, read 167, write 0, timeout 0
Requests/sec:  15082.54
Transfer/sec:      2.65MB
Running 30s test @ http://localhost:9195/dubbo/findAll16 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    13.16ms   14.72ms  81.69ms   84.26%Req/Sec     1.34k   185.92     2.12k    69.48%641716 requests in 30.02s, 112.59MB readSocket errors: connect 0, read 53, write 0, timeout 0
Requests/sec:  21376.63
Transfer/sec:      3.75MB
Running 30s test @ http://localhost:9195/dubbo/findAll16 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    20.25ms   27.69ms 136.29ms   83.67%Req/Sec     1.32k   263.94     2.43k    69.90%630119 requests in 30.02s, 110.56MB readSocket errors: connect 0, read 51, write 0, timeout 0
Requests/sec:  20987.25
Transfer/sec:      3.68MB

性能明显提升了,可以达到2w的qps

这篇关于soul从入门到进阶06——运行soul-examples-dubbo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632937

相关文章

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati