什么是RPCRPC(Remote Procedure Call Protocol)远程过程调用协议。 通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个过程或函数,就像调用本地应用程序中的一样。 正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC主要特质RPC是协议:协议意味着规范。目前典型的RPC实现包括:Dubbo、Thrift
转载
2024-03-03 09:33:10
27阅读
一.简介Zookeeper是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务。Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)。Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务…… 虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:管理(存储,读...
原创
2021-08-31 09:15:54
93阅读
一.简介Zookeeper是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务。Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)。Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务…… 虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:管理(存储,读...
原创
2022-02-10 11:13:21
67阅读
一、什么是RPC?RPC(Remote Procedure Call),即远程过程调用。我们可以直接从字面意思去理解,就是进行对运行在远程的一些服务进行调用。下面我们举例说明:1.单一系统我们传统的系统,整个系统都是运行在单个服务器上,对于服务(如:下订单、支付、查询等)的调用,都是调用本地的(或者说服务是写在本地的)2.RPC远程过程调用,说白了就是不需要将服务写在本地上,转而直接调用在远程服务
转载
2024-02-29 14:47:24
83阅读
一.RPC框架必会的基本知识1.1 什么是RPC?RPC(Remote Procedure Call ——远程过程调用),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术。一次完整的RPC同步调用流程:服务消费方,也就是我们常说的客户端,以本地调用方式调用客户端存根;什么叫客户端存根?就是远程方法在本地的模拟对象,一样的也有方法名,也有方法参数,client stub接收到调
转载
2024-09-16 12:39:28
62阅读
HTTP/1.0无连接,无状态HTTP1.0默认使用 Connection:cloose,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接,服务器不跟踪每个客户端也不记录过去的请求HTTP/1.1格式:header + body头部信息:key-value优点:简单,灵活和易于扩展,应用广泛和跨平台缺点:无状态,明文传输,不安全窃听风险,篡改风险,冒充风险
平常使用的RPC中,例如webservice,使用的习惯类似于下图:如果需要基于netty实现一个我们熟悉的RPC框架。逻辑如下:在上面的框架中,server端存在着一个问题,就是单点问题,也就是说,当服务端“挂了”之后,框架的使用就造成了单点屏障。我们可以通过zookeeper来实现服务端的负载均衡...
原创
2022-03-24 10:29:33
94阅读
平常使用的RPC中,例如webservice,使用的习惯类似于下图:如果需要基于netty实现一个我们熟悉的RPC框架。逻辑如下:在上面的框架中,server端存在着一个问题,就是单点问题,也就是说,当服务端“挂了”之后,框架的使用就造成了单点屏障。我们可以通过zookeeper来实现服务端的负载均衡...
原创
2021-07-08 11:22:24
179阅读
注:下面使用dubbo依赖的是zookeeper注册中心,这里没有详细的介绍。在配置之前,请自行准备好zookeeper环境。 后续如果写zookeeper的配置会补放链接添加Gradle依赖compile group: 'com.alibaba', name: 'dubbo', version: '2.5.10'//dubbo
compile group: 'org.apach
转载
2024-03-08 10:31:48
91阅读
class LockThread implements Runnable {
private DistributedLock lock;
public LockThread(int threadId,CountDownLatch latch) throws Exception {
this.lock = new DistributedLock(threa
三台机器zookeeper的集群环境搭建Zookeeper 集群搭建指的是 ZooKeeper 分布式模式安装。 通常由 2n+1台 servers 组成。 这是因为为了保证 Leader 选举(基于 Paxos 算法的实现) 能过得到多数的支持,所以 ZooKeeper 集群的数量一般为奇数。Zookeeper 运行需要 java 环境, 所以需要提前安装 jdk。 对于安装leader+fol
转载
2024-10-28 08:56:49
49阅读
在分布式系统中,为了提供系统的可用性和稳定性一般都会将服务部署在多台服务器上,为了实现自动注册自动发现远程服务,通过ZK,和ProtocolBuffe 以及Nettyr实现一个简单的分布式RPC框架。 首先简单介绍一下Zookeeper和ProtocalBuffer &nb
转载
2024-01-12 13:50:07
87阅读
Dubbo+Zookeeper实现远程RPC服务调用
原创
2022-11-24 21:01:15
398阅读
一:RMI1、解决什么问题?解决:JVM之间通信问题,让不同JVM之间对象调用的时候,犹如调用本JVM对象一样。RMI是面向对象的JAVA RPC2、如何做?解决:2.1:定义服务端D、定义客户端A(jdk1.5后客户端的stub和服务端的Skeleton都由JVM自动生成,不需要单独定义)D:由接口1和实现类1组成A:由接口1组成2.2:注册服务MyRmiImpl server=new 
翻译
精选
2015-07-21 23:15:16
655阅读
上一次写了一个无注册中心的RPC,今天在前面的基础之上扩展为带注册中心的RPC框架。先把provider整体代码目录自定义一个注解Service,其中有参数interfaceName、version。这个主要是模仿dubbo的Service注解:源码如下注册到zookeeper上,也就是在zookeeper上创建节点。具体注册类,采用Curator来连接和操作zookeeper。常量类常量类链接地
原创
2020-12-14 19:13:11
826阅读
上一次写了一个无注册中心的RPC,今天在前面的基础之上扩展为带注册中心的RPC框架。先把provider整体代码目录自定义一个注解Service,其中有参数interfaceName、version。这个主要是模仿dubbo的Service注解:源码如下注册到zookeeper上,也就是在zookeeper上创建节点。具体注册类,采用Curator来连接和操作zookeeper。常量类常量类链接地
原创
2020-12-14 19:14:29
496阅读
上一次写了一个无注册中心的RPC,今天在前面的基础之上扩展为带注册中心的RPC框架。先把provider整体代码目录自定义一个注解Service,其中有参数interfa...
原创
2023-04-12 21:01:18
112阅读
客户端 安装 1 安装依赖工具和库 2 安装Thrift编译器和程序库 Thrift的接口定义语言IDL 1 基本类型 2 容器类型 协议与传输选择 1 协议 服务器 Thrift 简介 架构 使用方法 gRPC HTTP/2 1 HTTP/1.x gRPC接口类型 1 Unary RPC 2 Server Streaming RPC Protocol Buffers 1 文档结构 2 注释 3 数据类型 5 map映射 6 oneof 7 定义服务 接口案例与代码生成 1 接口案例 服务器与客户端编写 RPC原理与实践 2. 前置知识要求 RPC简介 1. 什么是RPC 2. 背景与用途 RPC消息协议 1. 边界 RPC基本原理 二进制消息协议实现 RPC服务器 多线程服务器 分布式系统基础 2. 需要解决的问题 容灾 服务发现 ZooKeeper Kazoo 2. 使用
RPC Demo(二) 基于 Zookeeper 的服务发现简介 基于上篇的:RPC Demo(一) Netty RPC Demo 实现 第二部分来实现使用Zookeeper作为服务注册中心,去掉在RPC调用中的显示传参 完整项目工程地址:RpcDemoJava改进说明 在客户端调用中,我们需要显示的传入后端服务器的地址,这样显的有些不方便,代码大致如下:UserServi
转载
2021-01-29 21:20:42
193阅读
2评论
在学习RPC的时候发现了一个很不错的项目,以下是我在学习这个项目的过程中遇到的疑问和问题的答案。目录原文项目地址:项目概括:如何把这个项目跑起来?一个RPC请求之后会发生什么?项目的先修知识spring如何去实现依赖注入?spring的注解如何发挥作用,如何自定义注解?Netty 学习ProtostuffZooKeeper其他问题编码和序列化的区别?这个项目和之前写的RPC有什么区别?改进点项目地