RPC框架知识
文章平均质量分 85
悠然予夏
(考研备战中)纵有疾风起,人生不言弃;风乍起,合当奋意向此生;熬过无人问津的日子,才有诗和远方。
喜欢Java,热爱编程。
展开
-
架构设计基本原则
开闭原则:软件实体应当对扩展开放,对修改关闭,这就是开闭原则的经典定义。项目中划分出的模块类与接口方法开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。单一职责原则又称单一功能原则,这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力;...原创 2022-08-08 16:58:47 · 251 阅读 · 0 评论 -
分布式服务治理
分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。分布式锁也就是我们分布式协调技术实现的核心内容。 分布式锁两种实现方式: 1. 基于缓存(Redis等)实现分布式锁 2. ZooKeeper是一个为分布式应用提供一致性服务的开源组件,它内部是一个分层的文件系统目录树结构,规定同一个目录下只能有一个唯一文件名, 基于ZooKeeper实现分布式锁的步骤如下: 主要是还是来自于互联网的业务场景,例如,春节火车票抢购,大量原创 2022-08-08 14:15:21 · 757 阅读 · 0 评论 -
分布式架构服务调用
Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。HttpClient 是Apache Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。设置响应头允许跨域...原创 2022-08-08 10:26:05 · 1048 阅读 · 0 评论 -
分布式系统设计策略
在高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,两个节点上的HA软件像"裂脑人"一样,"本能"地争抢"共享资源"、争起"应用服务"。...原创 2022-08-08 09:56:05 · 342 阅读 · 0 评论 -
分布式一致性协议 之 Lease机制
Lease机制,翻译过来即是租约机制,是一种在分布式系统常用的协议,是维护分布式系统数据一致性的一种常用工具。Lease是颁发者对一段时间内数据一致性的承诺;颁发者发出Lease后,不管是否被接收,只要Lease不过期,颁发者都会按照协议遵守承诺;Lease的持有者只能在Lease的有效期内使用承诺,一旦Lease超时,持有者需要放弃执行,重新申请Lease。...原创 2022-08-07 17:15:57 · 1056 阅读 · 0 评论 -
分布式一致性协议 之 Paxos协议
Paxos协议其实说的就是Paxos算法, Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。 Paxos由 莱斯利·兰伯特(Leslie Lamport)于1998年在《The Part-Time Parliament》论文中首次公开,最初的描述使用希腊的一个小岛Paxos,描述了Paxos小岛中通过决议的流程,并以此命名这个算法,但是这个描述理解起来比较有挑战性。后来在2001年,莱斯利·兰伯特重新发表了朴实的算法描述版本《Pax原创 2022-08-07 14:08:53 · 6731 阅读 · 1 评论 -
分布式一致性协议 之 NWR协议与Gossip 协议
NWR是一种在分布式存储系统中用于控制一致性级别的一种策略。在亚马逊的云存储系统中,就应用NWR来控制一致性。N:在分布式存储系统中,有多少份备份数据W:代表一次成功的更新操作要求至少有w份数据写入成功R: 代表一次成功的读数据操作要求至少有R份数据成功读取Gossip 协议也叫 Epidemic 协议 (流行病协议)。原本用于分布式数据库中节点同步数据使用,后被广泛用于数据库复制、信息扩散、集群成员身份确认、故障探测等。...原创 2022-08-07 12:39:45 · 771 阅读 · 0 评论 -
分布式一致性协议 之 三阶段提交协议
三阶段提交协议出现背景:一致性协议中设计出了二阶段提交协议(2PC),但是2PC设计中还存在缺陷,于是就有了三阶段提交协议,这便是3PC的诞生背景。原创 2022-08-07 12:11:17 · 348 阅读 · 0 评论 -
分布式一致性协议 之 两阶段提交协议(2PC)
分布式事务: 事务提供一种操作本地数据库的不可分割的一系列操作 “要么什么都不做,要么做全套(All or Nothing)”的机制,而分布式事务就是为了操作不同数据库的不可分割的一系列操作 “要么什么都不做,要么做全套(All or Nothing)”的机制。两阶段提交协议,简称2PC(2 Prepare Commit),是比较常用的解决分布式事务问题的方式,要么所有参与进程都提交事务,要么都取消事务,即实现ACID中的原子性(A)的常用手段。1. 成功执行事务事务提交流程。...原创 2022-08-07 11:54:47 · 3385 阅读 · 0 评论 -
分布式理论
分布式数据一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的。CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点选项具体意义一致性(Consistency)所有节点访问时都是同一份最新的数据副本可用性(Availability)每次请求都能获取到非错的响应,但是不保证获取的数据为最新数据分区容错性(Partition tolerance)...原创 2022-08-06 17:47:53 · 308 阅读 · 0 评论 -
分布式架构介绍
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。...原创 2022-08-06 17:11:29 · 432 阅读 · 0 评论 -
分布式架构网络通信
RPC全称为remote procedure call,即远程过程调用。借助RPC可以做到像本地调用一样调用远程服务,是一种进程间的通信方式比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。RPC架构。...原创 2022-08-06 09:13:43 · 955 阅读 · 0 评论 -
Netty中粘包和拆包的解决方案
粘包和拆包是TCP网络编程中不可避免的,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。TCP是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。...原创 2022-08-04 17:39:25 · 528 阅读 · 0 评论 -
基于Netty的WebSocket开发网页版聊天室
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,客户端和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。社交订阅协同编辑/编程股票基金报价体育实况更新多媒体聊天在线教育。...原创 2022-08-04 16:34:14 · 1044 阅读 · 0 评论 -
基于Netty的Http服务器开发
Netty的HTTP协议栈无论在性能还是可靠性上,都表现优异,非常适合在非Web容器的场景下应用,相比于传统的Tomcat、Jetty等Web容器,它更加轻量和小巧,灵活性和定制性也更好。原创 2022-08-03 11:18:55 · 316 阅读 · 0 评论 -
Netty案例-群聊天室
Netty案例-群聊天室。原创 2022-08-02 15:47:43 · 236 阅读 · 0 评论 -
Netty编解码器
Netty的编(解)码器实现了ChannelHandlerAdapter,也是一种特殊的ChannelHandler,所以依赖于ChannelPipeline,可以将多个编(解)码器链接在一起,以实现复杂的转换逻辑。Java序列化仅仅是Java编解码技术的一种,由于它的种种缺陷,衍生出了多种编解码技术和框架,这些编解码框架实现消息的高效序列化。,它把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作。2.序列化后码流太大。注服务端与之类似,省略。...原创 2022-08-02 10:29:38 · 1088 阅读 · 0 评论 -
Netty入门案例 与 Netty异步模型
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。Netty中的I/O操作是异步的,包括Bind、Write、Connect等操作会简单的返回一个ChannelFuture。调用者并不能立刻获得结果,而是通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果.Netty的异步模型是建立在future和callback的之上的。...原创 2022-08-01 18:47:58 · 291 阅读 · 0 评论 -
Netty核心API介绍
如果客户端和服务器的Handler是一样的,消息从客户端到服务端或者反过来,每个Inbound类型或Outbound类型的Handler只会经过一次,混合类型的Handler(实现了Inbound和Outbound的Handler)会经过两次。表示Channel中异步I/O操作的结果,在Netty中所有的I/O操作都是异步的,I/O的调用会直接返回,调用者并不能立刻获得结果,但是可以通过ChannelFuture来获取I/O操作的处理状态。API关系如下图所示。...原创 2022-08-01 12:27:11 · 510 阅读 · 0 评论 -
Netty 介绍 与 线程模型
Netty是由JBOSS提供的一个Java开源框架。Netty提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序。Netty是一个基于NIO的网络编程框架,使用Netty可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了NIO的开发过程。设计优雅,提供阻塞和非阻塞的Socket;提供灵活可拓展的事件模型;提供高度可定制的线程模型。具备更高的性能和更大的吞吐量,使用零拷贝技术最小化不必要的内存复制,减少资源的消耗。...原创 2022-08-01 10:38:30 · 220 阅读 · 0 评论 -
NIO编程
JavaNIO全称javanon-blockingIO,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即NewIO),是同步非阻塞的.Channel(通道),Buffer(缓冲区),Selector(选择器)NIO是面向缓冲区编程的。数据读取到一个缓冲区中,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。缓冲区(Buffer)Buffer类及其子类/**...原创 2022-07-31 20:26:51 · 725 阅读 · 1 评论 -
Socket回顾与I/0模型
Socket,套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。...原创 2022-07-31 14:01:31 · 218 阅读 · 0 评论