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

相关文章

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联