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();
}
});
}
});
现在就可以测试了。
分享到:
相关推荐
它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...
具体实施中,UC团队通过Thrift框架生成的代码,利用RPC协议将数据清洗任务交给独立的Node.js服务处理,实现了数据和业务逻辑的分离。这一策略使得中间件能够专注于提供稳定的JS渲染环境,而业务逻辑可以根据各自的...
RPC(远程过程调用)是一种通信机制,允许在分布式系统中的一个进程调用另一个进程中...通过了解这个基本的RPC实现原理,我们可以更好地理解和使用其他Node.js RPC库,比如gRPC、thrift等,以构建更复杂的分布式应用。
它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...
它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。...
4. **服务调用**:演示如何在JavaScript中实例化Thrift客户端,连接到服务端,并执行远程过程调用(RPC)。 5. **跨平台通信**:可能涉及如何在Web应用中使用Thrift JSClient与后端服务(可能是Java、Python或其他...
Thrift 是一个开源的软件框架,它用于构建可伸缩的服务和应用程序,通过定义一种中间语言(IDL,Interface Description Language)来跨编程语言生成代码,实现了数据序列化和跨语言的远程过程调用(RPC)。...
它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务 ...
它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。
一组用TypeScript编写的用于在Node.js中构建微服务的库。 顾名思义,这些库使用与RPC进行服务到服务的通信。 所有库都可以通过进行分布式跟踪。 可用的库: :用于将Thrift支持添加到Hapi的插件。 :用于向...
Thrift是个代码生成库,支持的客户端语言包括C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 。它的目标是为了各种流行的语言提供便利的RPC调用机制...
频道 RPC的网络复用和成帧协议 语言: , , , ...Node.js的 TChannel对等库 用于Python的TChannel对等库 Go的TChannel对等库 tchannel-java JVM的TChannel对等库 tcurl TChannel curl程序,用于向TCh
总的来说,ServiceMesh在有赞的实践体现在逐步将服务治理的能力下沉到Sidecar代理,让应用专注于业务逻辑,同时通过持续的技术选型优化,如Java和Node.js的引入,以适应不断变化的业务需求。这个过程展示了Service...
Shiro和Spring Security用于权限管理,Redis、MQ(如RabbitMQ、Kafka)以及RPC框架(如Dubbo、gRPC、Thrift)用于实现服务间通信。中间件如Nginx、Tomcat、Jetty、Undertow等作为应用服务器,提供Web服务。 分布式...
有赞在此过程中使用了Thrift和Protocol Buffer作为IDL(接口描述语言)生成工具,这样可以产生与平台无关的服务接口桩代码。不过也提到了默认使用hessian序列化,不需要写IDL,这对Java生态而言是一种更加友好的跨...
TCC 型事务 node 实现, 该项目为我在项目中需要, 处理商城与应用之间的资金处理所做。 文档: 基础 TCC事务机制简介 Try: 尝试执行业务 完成所有业务检查(一致性) 预留必须业务资源(准隔离性) Confirm: 确认执行...