Vert.x学习笔记-异步编程和响应式系统

2023-10-29 23:20

本文主要是介绍Vert.x学习笔记-异步编程和响应式系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GPT是指Generative Pre-Trained Transformer (生成式预训练Transformer模型),平时在生活和工作中碰到一些问题的时候会去通过这种方式来解决,一般用的比较多的是百度的文心一言

同步阻塞模式

该模式主要的行为特征就是当我们再执行某项操作时,当我们依赖的其它操作没有准备好之前,我们一直等在这里,直到依赖的其它操作完成为止

优点

  • 实现简单,容易理解

缺点

  • 阻塞操作比较浪费资源,在阻塞过程中CPU无法去处理其它操作
  • 并发处理能力比较弱

实例

  • Java中的BIO相关的操作,如 InputStream 、OutputStream等

异步非阻塞模式

其实在Java中,其实我们大部分的异步IO非阻塞模式都是通过Java底层的NIO来实现的,NIO本质是一个同步非阻塞的操作,通过IO多路复用事件循环线程模型来实现

优点

  • 并发处理能力强,对高并发的操作更加友好

缺点

  • 在处理过程中由于涉及到了多线程、回调等操作,处理过程比较复杂,比较难理解

实例

  • Vert.x

响应式系统的特点

  • 可伸缩性 (Elastic:弹性) :应用程序可以以不同数量的实例来进行工作,可以根据不同数量的实例来负载不同的流量。该特点保证了系统的高承载能力

  • 回弹性(Resilient) : 服务的回弹性是指在服务遇到问题时,能够作出反应并恢复正常运行的能力。该特点保证了系统的稳定性。为了实现回弹性,我们通常会采用负载均衡、容错处理、分布式缓存等手段

  • 即时响应 (Responsive): 稳定一致的响应时间(如果可伸缩的系统依赖了不可伸缩的资源,例如单个数据库,那么即时响应就无法实现,因为随着实例的增多,不可伸缩的资源会影响响应时间)

  • 消息驱动(Message-Driven): 异步的消息传递机制(远程过程调用(RPC)属于是阻塞式机制),消息驱动可以把消息分发到更多的实例,使系统具有更好的可伸缩性

响应式系统 : 具备可伸缩性、回弹性、即时响应、消息驱动这些特征的可靠的应用系统

响应式编程: 一种对变化和事件作出响应的变成模式。例如电子表格,当一个单元格发生了变化,依赖于它的使用了计算公式的其它表格将自动重新计算结果, RxJava是一个流行的Java响应式拓展

响应式流: 当系统间存在连续的数据流交换时,就会出现传统的 生产者-消费者 问题,响应式流是一种费阻塞背压方式处理异步数据流的标准,它提供了一种最小化的接口、方法和协议描述必要的操作和实体。在系统之间高并发的大量数据流交互中,通常采用异步的发布-订阅模式,当生产者产生的数据速度远远大于消费者的消费速度,消费者会承受巨大的资源压力而有可能奔溃,此时,需要一种背压机制,即通过控制数据流的速度以防止快速的数据流压垮目标

这篇关于Vert.x学习笔记-异步编程和响应式系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面