`
linmomo02
  • 浏览: 181838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于thrift的node.js rpc服务

阅读更多

1.在node.js 服务下创建node_modules文件,npm install  thrift 下载thrift到该文件下。

2.编写idl文件。user.thrift 内容如下:

    struct User{  

     1: string uid,  

     2: string uname,  

     3: bool usex,  

     4: i16 uage,  

    }  

    service UserService{  

     void add(1: User u),  

     User get(1: string uid),  

    }  

3.生成代码:
运行:thrift   --gen js:node user.thrift
会在当前目录下生成一个gen -nodejs文件夹,里面就是我们需要的js代码,将js代码拷贝到我们的项目中。
4.创建node.js服务段和客户端
服务端:

var thrift = require('thrift');

var UserService = require('./gen-nodejs/UserService.js'),
    ttypes = require('./gen-nodejs/user_types');


var users = {};

var server = thrift.createServer(UserService, {
   add: function(user, callback) {
    console.log("server stored:", user.uname);
    users[user.uid] = user;
    callback();
  }
});

server.listen(7911);
console.log('server start');
 客户端:
var thrift = require('thrift');

var UserStorage = require('./gen-nodejs/UserStorage.js'),
    ttypes = require('./gen-nodejs/user_types');

var connection = thrift.createConnection('localhost', 9090),
    client = thrift.createClient(UserStorage, connection);

var user = new ttypes.UserProfile({uid: 1,
                                   name: "Mark Slee",
                                   blurb: "I'll find something to put here."});

connection.on('error', function(err) {
  console.error(err);
});

client.store(user, function(err, response) {
  if (err) {
    console.error(err);
  } else {
    console.log("client stored:", user.uid);
    client.retrieve(user.uid, function(err, responseUser) {
      if (err) {
        console.error(err);
      } else {
        console.log("client retrieved:", responseUser.uid);
        connection.end();
      }
    });
  }
});

现在就可以测试了。

分享到:
评论

相关推荐

    thrift-0.10.0.exe

    它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...

    藏经阁-Thrift下的Node.js跨语言异构.pdf

    具体实施中,UC团队通过Thrift框架生成的代码,利用RPC协议将数据清洗任务交给独立的Node.js服务处理,实现了数据和业务逻辑的分离。这一策略使得中间件能够专注于提供稳定的JS渲染环境,而业务逻辑可以根据各自的...

    node.js中RPC(远程过程调用)的实现原理介绍

    RPC(远程过程调用)是一种通信机制,允许在分布式系统中的一个进程调用另一个进程中...通过了解这个基本的RPC实现原理,我们可以更好地理解和使用其他Node.js RPC库,比如gRPC、thrift等,以构建更复杂的分布式应用。

    thrift-0.10.0.tar.gz

    它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...

    thrift-0.9.3.exe

    它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...

    Thrift--JSClient

    4. **服务调用**:演示如何在JavaScript中实例化Thrift客户端,连接到服务端,并执行远程过程调用(RPC)。 5. **跨平台通信**:可能涉及如何在Web应用中使用Thrift JSClient与后端服务(可能是Java、Python或其他...

    thrift-0.13.0.zip

    Thrift 是一个开源的软件框架,它用于构建可伸缩的服务和应用程序,通过定义一种中间语言(IDL,Interface Description Language)来跨编程语言生成代码,实现了数据序列化和跨语言的远程过程调用(RPC)。...

    C# Thrift测试

    它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务 ...

    intellij thrift插件

    它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

    thrift-server:TypeScript中的Thrift核心库

    一组用TypeScript编写的用于在Node.js中构建微服务的库。 顾名思义,这些库使用与RPC进行服务到服务的通信。 所有库都可以通过进行分布式跟踪。 可用的库: :用于将Thrift支持添加到Hapi的插件。 :用于向...

    ThriftDemo.rar

    Thrift是个代码生成库,支持的客户端语言包括C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 。它的目标是为了各种流行的语言提供便利的RPC调用机制...

    tchannel:RPC的网络复用和成帧协议

    频道 RPC的网络复用和成帧协议 语言: , , , ...Node.js的 TChannel对等库 用于Python的TChannel对等库 Go的TChannel对等库 tchannel-java JVM的TChannel对等库 tcurl TChannel curl程序,用于向TCh

    ServiceMesh在有赞的实践与发展

    总的来说,ServiceMesh在有赞的实践体现在逐步将服务治理的能力下沉到Sidecar代理,让应用专注于业务逻辑,同时通过持续的技术选型优化,如Java和Node.js的引入,以适应不断变化的业务需求。这个过程展示了Service...

    Java后端学习路线1

    Shiro和Spring Security用于权限管理,Redis、MQ(如RabbitMQ、Kafka)以及RPC框架(如Dubbo、gRPC、Thrift)用于实现服务间通信。中间件如Nginx、Tomcat、Jetty、Undertow等作为应用服务器,提供Web服务。 分布式...

    Service Mesh在有赞的实践与发展25页.pdf

    有赞在此过程中使用了Thrift和Protocol Buffer作为IDL(接口描述语言)生成工具,这样可以产生与平台无关的服务接口桩代码。不过也提到了默认使用hessian序列化,不需要写IDL,这对Java生态而言是一种更加友好的跨...

    tcc-node:node 版本的 tcc 事务服务

    TCC 型事务 node 实现, 该项目为我在项目中需要, 处理商城与应用之间的资金处理所做。 文档: 基础 TCC事务机制简介 Try: 尝试执行业务 完成所有业务检查(一致性) 预留必须业务资源(准隔离性) Confirm: 确认执行...

Global site tag (gtag.js) - Google Analytics