作者介绍田兆壮,新炬网络开发工程师。具备扎实的Java、Scala开发经验,熟练使用Python和Shell等脚本语言;具备前后端开发能力,熟练使用关系型数据库和非关系型数据库以及开发中的调优;分布式方面精通RPC框架和消息中间件等开源框架的使用;在大数据领域熟练使用Hadoop生态系统中的开源软件,精读及实践过Spark资源调度算法、shuffle原理、算子调优、数据倾斜的解决等偏底层的原理。目
转载
2023-07-31 10:09:11
46阅读
有了HTTP,为什么还要RPC?区别:RPC主要是基于TCP/IP协议,而Http服务主要是基于Http协议.Http协议是在传输层协议Tcp之上的,RPC协议相对来说比较高点.osi 网络的七层模型 在说RPC和HTTP的区别,我觉得要了解下OSI的七层网络协议第一层:应用层,定义了用于网络中进行通信和传输数据的接口.第二层:表示层,定义不同的系统中数据的传输格式,编码和解码等第三层:会话层:管
dubbo1. 依赖 spring扫描注入 2. 反射3. 动态代理4.Zookeeper5.netty &nbs
转载
2024-04-13 09:56:10
33阅读
几乎所有的主流编程语言都有Redis的客户端,不考虑redis非常流行的原因,如果站在技术的角度看原因还有两个:客户端与服务端之间的通信协议是在TCP协议之上构建的,服务端默认的端口号是6379客户端和服务器发送的命令或者数据一律以\r\n (CRLF)结尾。redis制定了RESP实现了客户端与服务端的正常交互,这种协议简单,既能够被机器解析,又容易被人类识别。RESP是Redis序列化协议(R
转载
2023-08-07 22:21:31
40阅读
RESP(REdis Serialization Protocol )协议:redis客户端和服务端是通过RESP协议来进行交互的,RESP协议是基于TCP协议的,将客户端命令以某种形式传递给服务端,服务端接收后,进行命令的解析,并执行。这里我们先将redis持久化方式设置为AOF模式,准确查看RESP协议是怎么进行传输的。将appendonly.aof文件清空,然后使用set name
转载
2023-08-10 17:11:16
90阅读
简介Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是
转载
2024-04-08 11:30:51
22阅读
简单动态字符串 SDS的应用在redis里,c字符串只会用作字面量,用在不会更改的地方,例如打印日志。需要修改的字符串,用SDS表示 set msg "hello world"redis将创建一个键值对,键是一个字符串对象,对象的底层实现是保存着字符串"msg"的SDS值也是字符串对象,对象的底层实现是保存着字符串"hello world"的SDS rpush fru
转载
2024-09-12 23:46:46
23阅读
前言最近看了相关的Redis设计核心相关的书籍,对Redis有了一些小的认识,然后自己也做一些产出加深映象,我会从几个方面去总结Redis设计的核心内容:Redis底层数据结构总结、Redis高性能由哪些基础支撑、Redis应用场景、那些有趣的功能。概述 本篇主要内容是Redis底层数据结构总结。Redis供用户直接使用的数据结构有String、List、Set、Zset、Hash等结构
转载
2023-09-10 17:12:30
51阅读
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它是Java工程师工作的好帮手,也是企业面试官选拔人才的金钥匙。接下来 小编给大家分享Java就业面试题中有关Redis的问题。1、Redis的通讯协议是什么?Redis 的通讯协议是文本协议,Redis服务器与客户端通过RESP(Redis Serializa
转载
2023-08-08 21:13:56
174阅读
# Redis底层模型协议
Redis(Remote Dictionary Server)是一种基于内存的数据存储系统,常用于缓存、消息队列和实时分析等场景。Redis底层模型协议是Redis与客户端之间进行通信的规范,通过该协议可以实现高效的数据传输和操作。
## Redis协议概述
Redis底层模型协议是一种基于TCP协议的文本协议,它定义了一套客户端与服务器之间的通信规则。Redis
原创
2023-12-11 07:28:49
65阅读
RESP文章开始前,先放出两道面试题 1.Redis底层,使用的什么协议? 2.RESP是什么,在Redis怎么体现的?带着这两个问题,来一探究竟。什么是 RESP?是基于TCP的应用层协议 RESP(REdis Serialization Protocol); RESP底层采用的是TCP的连接方式,通过tcp进行数据传输,然后根据解析规则解析相应信息,Redis 的客户端和服务端之间采取了一种独
转载
2024-03-11 07:28:39
0阅读
由于Dubbo底层采用Socket进行通信,自己对通信理理论也不是很清楚,所以顺便把通信的知识也学习一下。n 通信理论计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。1.一组信息(通常是字节)的各位数据被同时传送的通信方法称为并行通信。并行通信依靠并行I/O接口实现。并行通信速度快,但传输线根数多,只适用于近距离(相距数公尺)的通信。2.一组信息的各位
Redis提供了三种集群策略: 1. 主从模式 这种模式⽐较简单,真实情况下没有公司会单击使用redis,所以出现了主从模式,默认情况下每个redis都是主机,配置后可以变成从机,主机可以读写,从机只能读,并且会和主机器进⾏数据同步(AOF/RDB,redis默认是使用RDB)。 这种模式下,客户端直接连主库或某个从库,但是一旦主库或从库宕机后,客户端需要⼿动修改IP,断开期间内redi
转载
2023-08-15 15:50:48
30阅读
分析源代码,基本原理如下:client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object向专门存放调用信息的全局ConcurrentHashMap里面put(ID, objec
转载
2024-04-11 08:32:21
23阅读
简介: redis客户端与服务端通信,使用RESP(REdis Serialization Protocal,redis序列化协议)协议通信,该协议是专门为redis设计的通信协议,但也可以用于其它客户端-服务器通信的场景。
RESP(REdis Serialization Protocal,redis序列化协议)协议通信,该协议是专门为redis设计的
转载
2023-06-24 22:20:16
468阅读
前言Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数据结构和算法组成。Redis还提供了键过期,发布订阅,事务,Lua脚本,哨兵,Cluster等功能。Redis执行命令的速度非常快,根据官方给的性能可以达到10w+qps。那么本文主要介绍到底Redis
转载
2023-10-10 21:55:59
38阅读
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况,本文参考dubbo官方文档 参考:http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E5%8D%8F%E8%AE%AE%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C dubbo共支持如下几种通信协议:dubbo://rmi://hessian://http:
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。 Dubbo是什
相信通过上三次的文章,基本都了解了dubbo的一些套路,分布式如何做,注册中心,admin怎么玩的。其实对dubbo没有这么深入了解的老铁,也很多会使用dubbo。但是我们仅仅做到使用就完了吗?其实并不是的。我们角度仅仅不能满足使用,深层的意义就是满足底层远离和实现机制。 (一)RPC协议与使用场景在一个典型RPC的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件,其中R
转载
2024-02-16 21:40:54
89阅读
对于不同的对象,Redis会使用不同的类型来存储。对于同一种类型type会有不同的存储形式encoding。对于string类型的字符串,其底层编码方式共有三种,分别为int、embstr和raw。int:当存储的字符串全是数字时,此时使用int方式来存储;embstr:当存储的字符串长度小于44个字符时,此时使用embstr方式来存储;raw:当存储的字符串长度大于44个字符时,此时使用raw方
转载
2023-05-29 10:51:50
47阅读