WebFulx和Redis的反应式API性能矩阵
·使用SpringBoot 2.0,WebFlux和Reactive Redis构建一组完全无阻塞的REST API。
·针对传统的非活动API对上述Reactive API进行性能测试
· spring-boot-starter-web
· spring-boot-starter-data-redis
· spring-webflux
· spring-boot-starter-data-redis-reactive
·添加/更新客户
· findById
@RestController@RequestMapping("/customers/rx")public class CustomerControllerRx { @Autowired private ReactiveRedisTemplate<String, Customer> redisTemplate; private ReactiveValueOperations<String, Customer> reactiveValueOps; @PostMapping public Mono<Boolean> add(@RequestBody Customer customer) { reactiveValueOps = redisTemplate.opsForValue(); Mono<Boolean> result = reactiveValueOps.set(customer.getExternalId(), customer);
return result; } @GetMapping("/{id}") public Mono<Customer> findById(@PathVariable("id") String id) { reactiveValueOps = redisTemplate.opsForValue(); Mono<Customer> fetchedAccount = reactiveValueOps.get(id); return fetchedAccount; }}
ReactiveRedisTemplate在RedisConfigRx中配置
@RestController@RequestMapping("/customers")public class CustomerController { @Autowired CustomerRepository repository; @PostMapping public Customer add(@RequestBody Customer customer) { return repository.save(customer); } @GetMapping("/{externalId}") public Customer findById(@PathVariable("externalId") String externalId) { Customer optCustomer = repository.findByExternalId(externalId); if (Optional.ofNullable(optCustomer).isPresent()) return optCustomer; else{ return null; } }}// Code for CustomerRepositorypublic interface CustomerRepository extends CrudRepository<Customer, Long> { Customer findByExternalId(String externalId); List<Customer> findByAccountsId(Long id);}
· Redis不正式支持Windows。但是,在UNIX或Windows启动和运行Redis的最简单方法是使用Docker。
·使用以下步骤从docker hub中提取redis映像,并在分离模式下从端口6379开始。
· $ docker pull redis · $ docker run -d -p 6379:6379 --name redis1 redis· $ docker ps -a //确保redis启动并运行。
·安装Apache JMeter,https://jmeter.apache.org/
·从插件下载站点https://jmeter-plugins.org/安装以下图形插件
o基本图表
o附加图表
jmeter -n -t <TestPLan.jmx> -l <TestPlan.jtl> -e -o <output folder>
-n在非GUI模式下运行
-t提供测试文件的名称
-l输出报告文件的名称
-e jMeter遵循jmx文件中指定的后处理。
-o仪表板文件夹。
·通过连接到Docker上的Redis DB,确保应用程序启动时没有错误。
·为测试计划设置用户(线程)和循环(迭代)。
使用JMeter UI打开TestPlan并更改用户(线程)数并设置循环次数,保存测试计划,退出JMeter UI。
·执行测试计划
转到JMeter \ bin文件夹并执行:
jmeter - n - t < path > \ SaveCustomers。jmx - l < path > \ SaveCustomers.JTL - e - o < path > \ SaveCustomersOutput - 5U sers
本人创业团队产品MadPecker,主要做BUG管理、测试管理、应用分发
网址:www.madpecker.com,有需要的朋友欢迎试用、体验!
本文为MadPecker团队译制,转载请标明出处