java技术圈 为您找到相关结果 11

长连接/websocket/SSE等主流服务器推送技术比较

最近做的某个项目有个需求,需要实时提醒client端有线上订单消息。所以保持客户端和服务器端的信息同步是关键要素,对此我们了解了可实现的方式。本文将介绍web常用的几种方式,希望给需要服务器端推送消息的同学在选型上有一点启发。一、推送技术常用的集中实现的实现方式1.1 短连接轮询:前端用定时器,每间隔一段时间发送请求来获取数据是否更新,这种方式可兼容ie和支持高级浏览器。通常采取setInterval或者setTimeout实现。(轮询示意图)通过递归的方法,在获取到数据后每隔一定时间再次发送请求,这样虽然无法保证两次请求间隔为指定时间,但是获取的数据顺序得到保证。 缺点:1、页面会出现‘假死’setTimeout在等到每次EventLoop时,都要判断是否到指定时间,直到时间到再执行函数,...阅读全文

博文 2020-05-15 07:26:05 知乎

SSE和WebSocket的用法和比较 - like2372

在我们日常开发中,会遇到服务端和客户端的通讯,今天我们就来比较一下HTML5新特性SSE和WebSocket的用法。 一,SSE 简介 SSE(Server-Sent Events,服务器发送事件)是围绕只读Comet 交互推出的API 或者模式。 SSE API允许网页获得来自服务器的更新(HTML5),用于创建到服务器的单向连接,服务器通过这个连接可以发送任意数量的数据。服务器响应的MIME类型必须是text/event-stream,而且是浏览器中的JavaScript API 能解析格式输出。SSE 支持短轮询、长轮询和HTTP 流,而且能在断开连接时自动确定何时重新连接。 客户端 //判断是否支持SSE if('EventSource' in window){ //初始化SSE v...阅读全文

Golang - 调度剖析【第二部分】 - Golang 攻略

回顾本系列的第一部分,重点讲述了操作系统调度器的各个方面,这些知识对于理解和分析 Go 调度器的语义是非常重要的。在本文中,我将从语义层面解析 Go 调度器是如何工作的,并重点介绍其高级特性。Go 调度器是一个非常复杂的系统,我们不会过分关注一些细节,而是侧重于剖析它的设计模型和工作方式。我们通过学习它的优点以便够做出更好的工程决策。 开始 当 Go 程序启动时,它会为主机上标识的每个虚拟核心提供一个逻辑处理器(P)。如果处理器每个物理核心可以提供多个硬件线程(超线程),那么每个硬件线程都将作为虚拟核心呈现给 Go 程序。为了更好地理解这一点,下面实验都基于如下配置的 MacBook Pro 的系统。 可以看到它是一个 4 核 8 线程的处理器。这将告诉 Go 程序有 8 个虚拟核心可用于并...阅读全文

博文 2019-06-18 07:15:00 SegmentFault 思否

如何理解BIO、NIO、AIO的区别?

很多文章在谈论到BIO、NIO、AIO的时候仅仅是抛出一堆定义,以及一些生动的例子。看似很好理解。但是并没有将最基础的本质原理显现出来,如果没有没有从IO的原理出发的话是很难理解这三者之间的区别的。所以本篇文章从Java是如何进行IO操作为开头进行分析。 Java中的IO原理 首先Java中的IO都是依赖操作系统内核进行的,我们程序中的IO读写其实调用的是操作系统内核中的read&write两大系统调用。 那内核是如何进行IO交互的呢? 网卡收到经过网线传来的网络数据,并将网络数据写到内存中。 当网卡把数据写入到内存后,网卡向cpu发出一个中断信号,操作系统便能得知有新数据到来,再通过网卡中断程序去处理数据。 将内存中的网络数据写入到对应socket的接收缓冲区中。 当接收缓冲区的数据写好之...阅读全文

博文 2021-08-16 03:05:31 juejin.cn

Netty 权威指南笔记(二):Java NIO 和 Netty 对比_albon arith

Netty 权威指南笔记二Java NIO 和 Netty 对比 Java NIO 开发Netty 开发 示例程序 Netty 权威指南笔记(二):Java NIO 和 Netty 对比 Netty 是业界流行的 NIO 框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都说首屈一指的,也已经得到了成百上千商用项目的验证。Netty 框架都有什么优点呢? API 使用简单,开发门槛低。功能强大,预置多种编解码功能,支持多种主流协议。定制能力强,可以通过 ChannelHandler 对通信框架灵活扩展。性能高。成熟稳定,社区活跃,已经修复了 Java NIO 所有的 Bug。经历了大规模商业应用的考验,质量有保证。 Java NIO 开发 我们看一看在 笔记(一)里面的 Jav...阅读全文

博文 2021-08-27 08:12:00 CSDN博客

【博客555】prometheus的step,durations,rate interval,scrape interval对数据查询结果的影响_promql.lookbackdelta_lulu的云原生笔记的博客

prometheus的step,durations,rate interval,scrape interval对数据查询结果的影响 1、场景:在查询prometheus数据时出现很多诡异的现象 1、为什么同样的查询语句在不同的时间点查询,对过去某一时刻的数据展示却不一样 2、为什么有时候峰值在使用不同step,不同duration查询时,会不一样,甚至消失 3、为什么scrape interval变化了,会使某些规则的结果不准确 等等疑问 2、原理剖析:rate与irate,step,datapoint,scape_internal,instant vector selector,range vector selector 2-1、rate与irate的查询原理见之前博文:【博客486】pr...阅读全文

博文 2023-09-13 16:22:27 CSDN博客

负载均衡详解

本文分享自天翼云开发者社区《负载均衡详解》,作者:杨锦负载均衡(Load Balancing)是一种将网络流量或请求分发到多个服务器或资源的技术,以确保这些服务器或资源能够更均匀地处理负载,提高系统的性能、可用性和可伸缩性。负载均衡通常应用于Web服务、应用程序服务器、数据库服务器以及其他网络应用中。负载均衡的目标:均衡负载:主要目标是分配流量或请求,确保各个服务器或资源之间负载均匀,避免某一台服务器负载过高,而其他服务器处于低负载状态。提高性能:通过将流量分散到多个服务器上,可以提高整体性能。每个服务器只需处理一部分请求,从而降低了每台服务器的响应时间。提高可用性:如果一个服务器出现故障或不可用,负载均衡器可以将流量重定向到其他正常运行的服务器上,从而提高系统的可用性和容错性。实现扩展性:...阅读全文

天翼云CDN全站加速产品对websocket协议的支持

本文分享自天翼云开发者社区《天翼云CDN全站加速产品对websocket协议的支持》,作者:郭****迎1、背景介绍HTTP 协议有一个缺陷:通信只能由客户端发起。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就只能使用轮询的方案。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,显而易见,轮询不仅效率特别低,且特别浪费带宽资源,因为HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多带宽资源。因此,工程师们一直在思考,有没有更好的方法。websocket 就是这样发明的。websocket 协议诞生于2...阅读全文

博文 2023-05-19 09:40:06 Tianyiyun

提升网站性能的秘诀:为什么Nginx是高效服务器的代名词?

在这个信息爆炸的时代,每当你在浏览器中输入一个网址,背后都有一个强大的服务器在默默地工作。而在这些服务器中,有一个名字你可能听说过无数次——Nginx。今天,就让我们一起探索这个神奇的工具。 ### 一、Nginx是什么 Nginx(发音为“enginex”)是一个开源的高性能HTTP和反向代理服务器。它由伊戈尔·赛索耶夫(IgorSysoev)于2002年创建,自那时起,Nginx因其稳定性、丰富的功能集、简单的配置文件以及低资源消耗而受到广大开发者和企业的喜爱。 ![image.png](http://static.itsharecircle.com/240204/fe11b55476b02484be1a2cdfee81fbc4.png) Nginx是一款轻量级的Web服务器/反向代理服...阅读全文

博文 2024-02-04 10:46:10 YDYXCODE

DPDK简介和原理

本文分享自天翼云开发者社区《DPDK简介和原理》,作者:s****nDPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。什么是中断了解DPDK之前,首先需要先了解什么是中断,其实中断就是电信号,中断分两种:硬中断和软中断。什么是硬中断?硬中断是由与系统相连的外设(比如网卡、硬盘)自动产生的,主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。什么是软中断?软中断为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。硬中断和软中断有...阅读全文

博文 2024-08-23 10:14:22 Tianyiyun

Java实现负载均衡算法--轮询和加权轮询 - 渊渟岳

Java实现负载均衡算法--轮询和加权轮询 1.普通轮询算法 轮询(Round Robin,RR)是依次将用户的访问请求,按循环顺序分配到web服务节点上,从1开始到最后一台服务器节点结束,然后再开始新一轮的循环。这种算法简单,但是没有考虑到每台节点服务器的具体性能,请求分发往往不均衡。 代码实现: /** * 普通轮询算法 */ public class RoundRobin { private static Integer index = 0; private static List nodes = new ArrayList<>(); // 记录轮询输出结果 private static StringBuffer stringBuffer = new StringBuf...阅读全文

博文 2024-08-21 17:57:27 博客园