长连接

Socket的半包,粘包与分包的问题

杀马特。学长 韩版系。学妹 提交于 2020-02-29 08:05:31
首先看两个概念: 短连接: 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 长连接: 连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。 之所以出现粘包和半包现象,是因为TCP当中,只有流的概念,没有包的概念. 半包 指接受方没有接受到一个完整的包,只接受了部分,这种情况主要是由于TCP为提高传输效率,将一个包分配的足够大,导致接受方并不能一次接受完。( 在长连接和短连接中都会出现 )。 粘包与分包 指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据。接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包现象。这是因为接收方先把收到的数据放在系统接收缓冲区,用户进程从该缓冲区取数据

初识Dubbo

感情迁移 提交于 2020-02-27 14:06:17
一、dubbo是什么 dubbo是一个分布式服务框架,提供高性能和透明化对rpc远程服务调用方案,以及SOA服务治理方案。 核心部分包括: 1、远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2、集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 3、自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 二、dubbo能做什么 1、透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 3、服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 三、dubbo调用原理图 节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container : 服务运行容器。 调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者。 1.

HTTP的长连接和短链接

我只是一个虾纸丫 提交于 2020-02-26 21:34:54
这个表在说什么? a) http是应用层协议,它的长连接和短连接其实就是TCP的长连接和短连接; b) Http1.0和Http1.1的区别是:前者默认短连接,后者默认长连接,长连接的标识是:connection:keep-alive(这个抓过包的都见过吧) c) TCP是传输层协议,作用是保证数据包可靠传递:数量对,顺序对,使用TCP协议要进行三/四次握手(别问我这是啥) d) IP是网络层协议,作用是解决网络路由和寻址问题。 e) 长连接应用:数据库;短连接应用:网页,html里面包含的Web资源,如图片,css文件,一人一个http短连接; f) 短连接方便管理,长连接要持续发探测报文保活,谁更合适,得看应用环境。 来源: https://www.cnblogs.com/miracle2015126/p/5023589.html

HTTP 的长连接/短链接

ⅰ亾dé卋堺 提交于 2020-02-26 21:32:57
HTTP 协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2. 如何理解HTTP协议是无状态的 HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。 3. 什么是长连接、短连接? 在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。 但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码: Connection:keep-alive

HTTP长连接与短链接

情到浓时终转凉″ 提交于 2020-02-26 21:31:59
想要充分了解HTTP长连接,需要首先知道一些基本概念: TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的。 经典的三次握手示意图: 经典的四次握手关闭图: TCP短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作。短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。 TCP长连接 接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。 首先说一下TCP

sql执行过程

拈花ヽ惹草 提交于 2020-02-25 11:42:51
作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行、程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑处理。但是,你知道这条 SQL 语句是咋执行的吗?我打赌你并不是很清楚,读完全文,你会有完全不同的感受。 我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 今天我们就把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直击本质,更为快速地定位并解决问题。 下面我给出的是MySQL的基本架构示意图,从中你可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。 MySQL的逻辑架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器

MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-25 11:42:07
原文链接: 当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务。 就算重启成功了,对于问题的原因仍不知所以。 本文开始,记录学习《MySQL实战45讲》专栏的过程。 也许有人会问,你记录有什么意义?直接看专栏不就行了吗?你这不是啃别人的剩骨头吗? 是的,这个系列,我只是基于专栏学习,但是我会尽量从我的角度搞懂每一个知识点,遇到不懂得也会将知识点进行拆分。 我知道关注公众号的小伙伴也有很多购买了这个专栏的,我希望大家都能够利用好这个机会,把 MySQL 吃透! 看大家的反馈情况吧,若有需要,可以建个小群,大家互相讨论学习! 下面开始正文。 大家或多或少都用过 MySQL,起码 select 还是会用的吧,但是 select 执行后,MySQL 内部到底发生了什么,你知道吗? 比如,我们有个简单的表 T,它有个 ID 字段,那么我们可以执行下面的语句: mysql> select * from T where ID=10; 语句执行很简单,但是具体到 MySQL 内部,其实是一个完整的执行流程。 MySQL 的基本架构 从下图就可以清楚地看出 MySQL 的命令执行流程: 从该图可以看出,MySQL 主要分为 server 层和存储引擎层。 server

MySQL基础架构

回眸只為那壹抹淺笑 提交于 2020-02-25 11:41:00
前段时间订阅了《Mysql实战45讲》(从原理到实战),新的一年为自己充充电。对于这部分内容,我所知道的只来源于我大学里学习的课程《数据库原理》,在大学里学习的只是简单的查询,增加,删除,索引,锁,触发器,视图等内容。几乎没有基础的架构知识。因此在这里巩固一下原理,学习一下数据库Mysql在原理上究竟是怎样的。 首先我们一起看一个Mysql的基本架构示意图: 1、Mysql可以分为Server层和存储引擎层两部分。 2、Server层:包含连接器,查询缓存,分析器,优化器,执行器等,涵盖了MySQL的大多数核心功能区以及所有的内置函数。 ①内置函数:日期,时间,数学和加密函数等; ②所有跨存储引擎的功能都在这一层实现,例如存储过程,触发器,视图等; 3、存储引擎层:负责数据的存储和提取。 ①架构模式:插件式的,支持InnoDB(目前也是最常用的,MySQL5.5后默认存储引擎)、MyISAM、Memory等多个存储引擎。 ②create table 时不指定引擎类型,默认使用的就是InnoDB.如果使用其他类型,可以利用create table语句中使用engine=memory,等来指定使用内存引擎来创建表。不同的存储引擎数据存储方式不同,支持的功能也不同。 4、不同的存储引擎共用一个server层,结合一个例子我们从总体上了解一下各部件的功能。 mysql> select *

网络:tcp/ip

旧街凉风 提交于 2020-02-22 17:17:16
面试题: 长连接与短连接的区别? 访问服务器端多条数据文件时,短连接每次都要建立连接,长连接只需要建立一次连接; 长连接能推送信息给客户端;浏览器是长连接; 什么是三次握手和四次挥手? 浏览器每次TCP/IP网络连接都要发生三次握手和四次挥手 syn 网络是如何通信的,什么是tcp/ip协议? 用户发送请求,通过应用层http协议产生数据包,再通过传输层的tcp协议进行封装端口等信息,再到网络层通过ip协议封装ip地址,最终通过网络接口层发送给服务器 服务器接收到数据包,进行逐步拆分,进而程序处理,最终得到结果数据,进行封装,再发送给客户端;数据包里面有请求头和请求体; 来源: https://www.cnblogs.com/yunianzeng/p/12345944.html

消息推送平台高可用实践(上)

末鹿安然 提交于 2020-02-17 06:40:54
本文来自 网易云社区 作者:李弈远 消息推送平台为公司内部和第三方应用提供统一消息推送服务,支持广播、私信、组播、附件等多种消息推送方式,覆盖IOS、Android、PC、Web等多种终端,并根据应用特定需求制定各种解决方案。 平台支持水平扩展,支持C5000K高并发下的实时消息推送,通过动态负载均衡、隔离部署、LXC虚拟化和监控报警等多种机制确保系统 的高可用,通过高可用消息队列、自动重连和ACK等机制实现消息可靠性(QoS1),并提供SDK方便产品和应用接入。 本文将在介绍消息推送服务相关功能/非功能特性的基础上,就系统为实现高可用进行的架构设计及部署方案进行探讨。 一、系统特性 1.1 功能特性 提供服务端SDK和各类终端SDK简化产品接入 对接入的产品服务端和终端进行安全认证 支持跨产品消息推送 支持广播、私信、组播、附件推送等多种消息推送方式 根据自定义条件筛选终端用户进行推送 支持IOS、Android、Web、PC、智能设备等多种终端 针对典型应用场景的各种解决方案 对接入的各产品进行统一配置管理 对推送效果进行统计 系统运行时监控及异常报警 1.2 非功能特性 消息可靠性满足QoS1 各种消息推送方式互不阻塞 具备快速水平扩展能力 系统高可用,无单点故障 异常隔离不扩散 消息推送路径跟踪及快速故障诊断 服务质量实时监测 易运维 支持C5000K高并发