[置顶]我理解的Linux IO模式及select,poll,epoll

前言 本文是在本人查阅部分资料,并综合了众多博客分析后,于此阐述的个人理解。若有错误,欢迎指正。 基本概念 用户空间和内核空间 操作系统核心-内核负责处理用户程序和硬件之间的驱动交互。内核是在用户程序(进程)和硬件之间一个中枢。目地:专门负责用户进程和硬件之间的交互,用户程序必须使用内核才能和计算机底层硬件进行交流。为了保证内核的安全,于是将内存划分开,比如针对linux 4G的内存空间,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低...阅读全文

www.allocmem.com 2018-04-21 13:30 www.allocmem.co 等

[置顶]nginx搭配frp进行端口和服务转发

###引言:   java接入三方运营商服务接口,需要可供回调的公网接口,并在本地两台(及以上)调试接口服务,于是使用开源frp进行穿透,nginx搭配负责分发请求到不同机器。 ###安装环境: 1. ubuntu 16.04 LTS 一台服务器 两台客户机 2. 已安装好nginx ###frp配置过程: 参考我之前博文[http://blog.csdn.net/yan_chou/article/details/53406095](http://blog.csdn.net/yan_chou/a...阅读全文

www.allocmem.com 2017-02-20 16:06 www.allocmem.co 等

高性能无锁并发框架Disruptor,太强了

Disruptor是一个开源框架,研发的初衷是为了解决高并发下队列锁的问题,最早由LMAX提出并使用,能够在无锁的情况下实现队列的并发操作,并号称能够在一个线程里每秒处理6百万笔订单官网:http://lmax-exchange.github.io/disruptor/目前,包括Apache Storm、Camel、Log4j2在内的很多知名项目都应用了Disruptor以获取高性能为什么会产生Disruptor框架「目前Java内置队列保证线程安全的方式:」ArrayBlockingQueue...阅读全文

知乎 2020-09-10 01:13 知乎

Actor模型是解决高并发的终极解决方案

写在开始一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递。使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争。处理各种锁的问题是让人十分头痛的一件事。   传统多数流行的语言并发是基于多线程之间的共享内存,使用同步方法防止写争夺,Actors使用消息模型,每个Actor在同一时间处理最多一个消息,可以发送消息给其他Actor,保证了单独写原则。从而巧妙避免了多线程写争夺。和共享数据方式相比,消息传递机制最大的优点就是不会产生数据竞争状态。实现消息传递有两种常见的类型:基...阅读全文

知乎 2019-10-13 19:15 知乎

IO设计模式:Actor、Reactor、Proactor - _raindrop

先看看io模型   先介绍两种高性能服务器模型Reactor、Proactor Reactor模型: 1 向事件分发器注册事件回调 2 事件发生 4 事件分发器调用之前注册的函数 4 在回调函数中读取数据,对数据进行后续处理 Reactor模型实例:libevent,Redis、ACE Proactor模型: 1 向事件分发器注册事件回调 2 事件发生 3 操作系统读取数据,并放入应用缓冲区,然后通知事件分发器 4 事件分发器调用之前注册的函数 5 在回调函数中对数据进行后续处理 Preacto...阅读全文

博客园 2018-06-20 11:11 博客园

Linux高性能IO网络模型对比分析:Reactor vs Proactor - 腾讯云开发者社区

1、前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力。本文旨在为大家提供有用的高性能网络编程的I/O模型概览以及网络服务进程模型的比较,以揭开设计和实现高性能网络架构的神秘面纱。 2、关于作者 陈彩华(caison):主要从事服务端开发、需求分析、系统设计、优化重构工作,主要开发语言是 Java。 3、线程模型 上篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》介绍完服务器如何基于 I/O 模型管理连接,获取输入数据,下面将介绍基于进程/线...阅读全文

腾讯云 2021-01-06 18:26 腾讯云

深入理解Akka actor模型

Carl Hewitt 在1973年对Actor模型进行了如下定义:"Actor模型是一个把'Actor'作为并发计算的通用原语". Actor是异步驱动,可以并行和分布式部署及运行的最小颗粒。也就是说,它可以被分配,分布,调度到不同的CPU,不同的节点,乃至不同的时间片上运行,而不影响最终的结果。因此Actor在空间(分布式)和时间(异步驱动)上解耦的。而Akka是Lightbend(前身是Typesafe)公司在JVM上的Actor模型的实现。我们在了解actor模型之前,首先来了解acto...阅读全文

知乎 2021-08-29 21:16 知乎

云数据库 MongoDB 基于 CVM 连接 MongoDB 进行数据导入导出的方法-最佳实践-文档中心

通过云服务器 CVM 连接云数据库 MongoDB 可以进行数据导入和导出,请注意使用最新版本的 MongoDB 客户端套件,具体操作可参见 连接实例。注意local 数据库主要存储副本集的配置信息、oplog 等元数据;admin 数据库则主要存储用户、角色等信息。为了防止数据错乱、鉴权失败等现象发生,云数据库 MongoDB 禁止将 local 和 admin 数据库导入实例。导出导入命令MongoDB 官方提供了两套数据导入导出工具:mongodump 和 mongorestore mon...阅读全文

腾讯云 2022-05-27 16:40 腾讯云

IDEA启动项目:java: java.lang.IllegalArgumentException_liangsheng_g的博客

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、现象二、解决方法1.问题进一步描述2. 解决方法 总结 一、现象 IDEA启动springboot项目,提示java: java.lang.IllegalArgumentException,没有多余的信息,百度之后都是让修改idea的Java compiler,但是我全都设置的Java8,所以没头绪。 二、解决方法 1.问题进一步描述 谷歌搜了一下,发现Jetbrains的官网有人提这个问题,大致浏览了下,描述和我的...阅读全文

CSDN博客 2022-07-12 16:47 CSDN博客

Esper教程 —— Esper 入门介绍(1) - Java开发

当前位置:首页 > Java开发 > Esper教程 —— Esper 入门介绍(1) 大屏阅读 Esper教程 —— Esper 入门介绍(1) 2年前 (2020-09-25) 分类:Java开发 阅读(2461) 评论(0) 一、规则引擎是什么Esper的官网:http://esper.codehaus.org/ 参考文档:https://www.cnblogs.com/yudar/tag/esper/小明历险记:规则引擎Drools教程:http://www.ibloger.net/ar...阅读全文

程序喵 2001-02-09 00:00 程序喵

Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别_Hugo Lei的博客

目录   1 背景 2 何为Counter类型? 2.1 Counter定义 3 何为Gauge类型? 3.1 Gauge定义 4 Counter和Gauge的对比 1 背景 Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。 这里要明确一个概念:数据指标类型只是Client端的一个概念,用于维护Metric的生产,以方便在业务上有所区分。 而Server端是不区分数据类型的,因为所有的数据都是一种格式,也即时间...阅读全文

CSDN博客_prometheus gauge 2021-02-02 21:01 CSDN博客_promethe 等

饿了么异地多活技术实现(一)总体介绍

饿了么技术团队花了1年多的时间,实现了业务的整体异地多活,能够灵活的在多个异地机房之间调度用户,实现了自由扩容和多机房容灾的目标。本文介绍这个项目的整体结构,还简要介绍实现多活的5大核心基础组件,为读者建立基本的概念模型,后续会有系列文章陆续介绍每个组件的实现细节。读者能够从中了解到做异地多活的大方向,为实现自己的异地多活,或者是容灾备份提供参考。背景:为什么要做异地多活?饿了么要做多活,是受业务发展的驱动,经过几年的高速发展,我们的业务已经扩大到单个数据中心撑不住了,主要机房已经不能再加机器,...阅读全文

几款符合 OpenTracing 规范的分布式链路追踪组件介绍与选型 - 腾讯云开发者社区

分布式链路追踪组件是在分布式架构中很重要的组件,用于排查分布式系统所遇到的问题。市面上有多款流行的分布式链路追踪组件,包括 Zipkin、Jaeger、Pinpoint 和 Skywalking 等,我们来了解下这几款组件的相关特性,以帮助我们选型。 分布式链路追踪规范:OpenTracingTracing 是在上世纪 90 年代就已出现的技术,但真正让该领域流行起来的还是源于 Google 的一篇 Dapper 论文。分布式追踪系统发展很快,种类繁多,但无论哪种组件,其核心步骤一般有 3 步:...阅读全文

腾讯云 2021-01-24 00:00 腾讯云

CEP引擎Esper在入侵检测系统中的实践

目录 1、名词2、CEP引擎离线引擎实时引擎Esper:Fink CEP:Siddhi:3、逻辑架构图4、数据流图5、关于Storm中的数据分组6、实时Sigma引擎7、Esper规则模板8、Case Study9、结尾 1、名词 CEP(Complex Event Processing):复杂事件处理、复合事件处理 EPL(Event Processing Language):SQL-LIKE的事件处理语言,用于描述CEP任务 2、CEP引擎 离线引擎 待补充。 实时引擎 Esper: 优点:...阅读全文

Wayne's Blog 2020-12-11 00:00 Wayne's Blog

CSP和Actor两种并发模型分析 - _Eternity味道

背景 在多核CPU机器下,为了充分利用多核计算机的资源,我们需要进行并发编程,提高对CPU的利用率, # 提示:如你已了解或无意了解并行和并发,可以跳过本段,直达标题 ”传统并发和基于消息传递的并发“ 并行(parallel): 物理上同一时间处理不同任务 并发(concurrent): 逻辑上处理同时的任务的能力 通常所说的并发编程,也就是说它允许多个任务同时执行,但实际上并不一定在同一时刻被执行。 在单核处理器上,通过多线程共享CPU时间片串行执行(并发非并行)。 而并行则依赖于多核处理器等...阅读全文

博客园 2022-07-07 17:34 博客园

Seata 分布式事务 XA 与 AT 全面解析

Seata 分布式事务 XA 与 AT 全面解析 2021-04-23 FUNKYE Seata Seata 目录 1.XA模式是什么? 1.1什么是XA 1.2什么是Seata的事务模式? 2那么什么是Seata XA 模式? 2.1什么是Seata AT(TXC) 模式? 2.2AT 模式如何做到对业务的无侵入 ? AT模式一阶段 2.3 AT 模式如何保证隔离性 AT 模式二阶段提交 AT 模式二阶段回滚 3.为什么支持XA? 4.为什么Seata要支持XA模式? AT与XA的关系 Sea...阅读全文

objcoding.com 2021-04-23 00:00 objcoding.com

SSL/TLS协议运行机制的概述

west 说: 好文。全面而易懂 2014年2月 5日 20:09 | # | 引用 李狗蛋 说: 坏蛋总不放过任何一丝做恶的机会,太多不要脸的运营商在链路劫持强插广告,直接修改用户的HTTP数据包,再就是NSA之流肆无忌惮的窃听 发现一个HTTPS有意思的地方,只要53端口数据被转发,不管域名对应的DNS解析IP是不是域名真实IP,只要最后都是53端口转发到真实IP之上,就不会弹HTTPS证书错误 比如 https://a.com 对应 ipa 不通 那么劫持DNS解析 https://a.c...阅读全文

阮一峰的网络日志 2022-06-29 00:00 阮一峰的网络日志

虚拟IP技术 ip地址漂移技术 - myseries

1.虚拟IP   在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。   虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机。   虚拟IP一般用作达到HA(High Availability)的目的,比如让所有项目中数据库链接一项配置的都...阅读全文

Linux系统top命令中的iowait究竟是什么意思?

最近在做连续数据流的缓冲系统,C语言代码实现后,粗略测试了下,功能上应该没有问题。那么,接下来就该测试性能了。输入 top 命令,的确可以看到一系列 cpu 使用率,其中一个值得注意的子项就是 io 使用率了,如下图: 上图中 io 前面的数字是什么意思呢?是指 CPU 有 63% 的时间花费在 io 上了吗?在 Linux 中输入 man 命令查看相关手册,发现 io(wait) 被解释为“等待 I/O 完成的时间”。 如果按照手册对 iowait 字面上的解释,是很容易陷入误区的。因为就上例...阅读全文

刘冲的博客 2019-08-08 21:08 刘冲的博客

再聊 TCP backlog

这篇文章我们以 backlog 参数来深入研究一下建连的过程。通过阅读这篇文章,你会了解到下面这些知识: backlog、半连接队列、全连接队列是什么 linux 内核是如何计算半连接队列、全连接队列的 为什么只修改系统的 somaxconn 和 tcp_max_syn_backlog 对最终的队列大小不起作用 如何使用 systemtap 探针获取当前系统的半连接、全连接队列信息 iprouter 库中的 ss 工具的原理是什么 如何快速模拟半连接队列溢出,全连接队列溢出 注:本文中的代码和测...阅读全文

HeapDump性能社区 2022-11-02 17:14 HeapDump性能社区