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

相关文章

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg