rpc

RPC框架

∥☆過路亽.° 提交于 2019-12-29 23:53:18
RPC框架原理 RPC(remote procedure call,远程过程调用),一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地资源一样,通过网络传输去访问远端系统资源。 RPC框架实现原理如下图: Client Code:客户端调用方代码实现,负责发起RPC调用,为调用方用户提供使用API。 Seriaization/Deserialization:负责对RPC调用通过网络传输的内容进行序列化和反序列化,不同的RPC框架有不同的实现机制。主要分为文本和二进制两大类。文本类别的序列化机制主要有XML和JSON两种格式,二进制类别的序列化机制常见的有Java原生的序列化机制,以及Hessian、protobuf、Thrift、Avro、Kryo、MessagePack等,不同的序列化方式在可读性、码流大小、支持的数据类型及性能等方面都存在较大差异,需要用户根据自己的实际情况进行甄别与筛选。 Stub Proxy:可以看作一种代理对象,屏蔽RPC调用过程中复杂的网络处理逻辑,使RPC调用透明化,能够保持与本地调用一样的代码风格。 Transport:作为RPC框架底层的通信传输模块,一般通过Socket在客户端与服务器之间传递请求与应答消息。 Server Code:服务端服务业务逻辑具体的实现。 RMI 什么是RMI Java RMI(Remote

Registering a 32 bit DLL with 64 bit regsvr32

坚强是说给别人听的谎言 提交于 2019-12-29 05:59:42
问题 Considering the following Understanding A 32 bit Process cannot load a 64 bit dll or vice versa. For registering/unregistering a DLL regsvr32 calls the entry point DllRegisterServer / DllUnregisterServer after loading the target DLL into its address space through LoadLIbrary . On a 64 bit System, 32 bit version of regsvr32 is present in C:\Windows\SysWOW64 But then on my 2008 R2 Box, I was able to register a 32 bit dll by the 64 bit regsvr32. How was that possible? Am I missing something? 回答1

Registering a 32 bit DLL with 64 bit regsvr32

对着背影说爱祢 提交于 2019-12-29 05:59:10
问题 Considering the following Understanding A 32 bit Process cannot load a 64 bit dll or vice versa. For registering/unregistering a DLL regsvr32 calls the entry point DllRegisterServer / DllUnregisterServer after loading the target DLL into its address space through LoadLIbrary . On a 64 bit System, 32 bit version of regsvr32 is present in C:\Windows\SysWOW64 But then on my 2008 R2 Box, I was able to register a 32 bit dll by the 64 bit regsvr32. How was that possible? Am I missing something? 回答1

Dubbo基本讲解

帅比萌擦擦* 提交于 2019-12-28 15:09:14
Dubbo(开源分布式服务框架) Dubbo由阿里巴巴开源的一个高性能优秀的服务框架,使得应用可通过高新能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现 工作原理 Provider:暴露服务方称之为“服务提供者” Consumer:调用远程服务方称之为“服务消费者” Registry:服务注册与发现的中心目录服务称之为“服务注册中心” Monitor:统计服务的调用次数和调用时间的日志服务称之为“服务监控中心” 调用关系说明: 0.服务容器负责启动,加载,运行服务提供者 1.服务提供者在启动时,向注册中心注册自己提供的服务 2.服务消费者在启动时,向注册中心订阅自己所需的服务 3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者 4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用 5.服务消费者和提供者,在内存中累计调用次数二号调用时间,定时每分钟后发送一次统计数据到监控中心 特性 dubbo架构具有连通性、健壮性、伸缩性以及向未来架构的升级性 来源: CSDN 作者: 十四期-曹轩 链接: https://blog.csdn

Java EE启示录

喜欢而已 提交于 2019-12-28 12:15:04
前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓“启示录”,就是这个意思。 一.Java EE是什么? Java EE(Java Enterprise Edition)是一种 企业级应用的软件架构,同时是一种思想,一套规范。 二.Java EE的发展史 Java Enterprise Edition的发展不知不觉已经12年了,不知道大家有没留意,一开始,Java Enterprise Edition简称“J2EE”,直到版本5才改名为Java EE,而现在最新的版本则是Java EE 6。 到这里,或许有人会问,为什么会有这么多套Java EE规范?这些版本的差别是什么? 1.J2EE1.2的出现,主要是将之前各个单独的规范绑定到一起。 2.J2EE1.3,则是继续完善J2EE体系结构。 3.J2EE1.4,主要是加入了一个重要主题:Web Service 4.而Java EE 5,主题则是“简化”,简化之前复杂的J2EE思想,改善开发体验。 三.Java EE到底要解决什么问题? 1.Java EE解决什么问题? 从Java EE发展背景看,它与“分布式应用”以及“互联网应用”的关系密不可分,而这两者也正是Java EE要解决的问题! 其实

Python Twisted JSON RPC

放肆的年华 提交于 2019-12-28 10:07:39
问题 Can anyone recommend some simple code to set up a simple JSON RPC client and server using twisted? I found txJSON-RPC, but I was wondering if someone had some experience using some of these anc could recommend something. 回答1: txJSONRPC is great. I use it and it works. I suggest you give it a try. SERVER: from txjsonrpc.web import jsonrpc from twisted.web import server from twisted.internet import reactor class Math(jsonrpc.JSONRPC): """ An example object to be published. """ def jsonrpc_add

Python Twisted JSON RPC

半世苍凉 提交于 2019-12-28 10:07:10
问题 Can anyone recommend some simple code to set up a simple JSON RPC client and server using twisted? I found txJSON-RPC, but I was wondering if someone had some experience using some of these anc could recommend something. 回答1: txJSONRPC is great. I use it and it works. I suggest you give it a try. SERVER: from txjsonrpc.web import jsonrpc from twisted.web import server from twisted.internet import reactor class Math(jsonrpc.JSONRPC): """ An example object to be published. """ def jsonrpc_add

手写rpc框架

夙愿已清 提交于 2019-12-27 16:29:56
https://www.jianshu.com/p/096dbda7d528 常用的rpc框架: https://blog.csdn.net/u013952133/article/details/79256799 前言 在微服务当道的今天,分布式系统越来越重要,实现服务化首先就要考虑服务之间的通信问题。这里面涉及序列化、反序列化、寻址、连接等等问题。不过,有了 RPC 框架,我们就无需苦恼。 一、什么是 RPC? RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的程序,而程序员无需额外地为这个交互作用编程。 值得注意是,两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样。 RPC框架有很多,比较知名的如阿里的 Dubbo、google 的 gRPC、Go 语言的 rpcx、Apache 的 thrift。当然了,还有Spring Cloud,不过对于 Spring Cloud 来说,RPC 只是它的一个功能模块。 如果要实现一个基本功能、简单的 RPC,要涉及哪些东西呢? 动态代理 反射 序列化、反序列化 网络通信 编解码 服务发现与注册 心跳与链路检测 ...... 下面,我们一起通过代码来分析,怎么把技术点串到一起,实现我们自己的 RPC。 二、环境准备

RPC框架实现细节-阿里产出

心不动则不痛 提交于 2019-12-27 07:14:36
   在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。   而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其它团队要使用我们的新服务,我们的服务该怎么发布以便他人调用?下文将对这两个问题展开探讨。 1 public interface HelloWorldService { 2 String sayHello(String msg); 3 } 1 public class HelloWorldServiceImpl implements HelloWorldService { 2 @Override 3 public String sayHello(String msg) { 4 String result = "hello world " + msg; 5 System.out.println(result); 6 return result; 7 } 8 } 1 public class Test { 2 public static void main(String[] args) { 3

WebService 之 WSDL文件 讲解

有些话、适合烂在心里 提交于 2019-12-27 03:00:59
原文地址:http://blog.csdn.net/tropica/archive/2008/11/02/3203892.aspx 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯: 一、WSDL概述 WebServices Description Language (WSDL Web服务语言)是一个用于精确描述Web Service的文档格式。 WSDL非常适合于用作代码生成器,它能够读取WSDL文档,并且可以为访问Web服务生成一个程序化的接口,大多数软件供应商和主要的标准机构(包括 W3C、WS-I和OASIS)都支持WSDL。例如:JAX-RPC provider(例如:BEA Weblogic)通过API用WSDL生成相应的占位程序;IBM WebSphere、Microsoft.NET以及Apache Axis都有自己的工具生成相关的代码。下图是一个例子: 上面的例子JAX-RPC通过读取WSDL文档,创建JAX-RPC RMI接口(endpoint接口)和实现此接口的网络占位程序(stub)。客户端程序通过RMI接口,Stub和Web Service服务端交换SAOP消息。 二