基于thrift的跨语言高可用高性能轻量级的rpc框架

掉进书洞里的猫 掉进书洞里的猫     2022-07-31     176

关键词:

功能介绍

  • 跨语言通信
    • 方便的使Java、Python、C++三种程序可以相互通信
  • 负载均衡和容灾处理
    • 方便的实现任务的分布式处理
    • 支持服务的水平扩展,自动发现新的服务节点
    • 能够兼容各种异常情况,如节点的异常down机
  • 可视化管理
    • 通过服务管理系统可以方便查看服务状态和统计信息
  • 与原生thrift通信
    • 支持与原生thrift服务进行通信

与业内方案的对比

  • 与thrift、avro、hessian相比,harpc支持了高可用,并且更加易用
  • 与dubbo相比,harpc支持了跨语言,并且更轻量级
  • 与ice相比,harpc性能更高,并且更轻量级

设计思路

HARPC的核心思想是高可用,那么在保证高可用的基础上,还需要具备跨语言、高性能、可视化及轻量级等特性。于是,我们在设计之初就选择了基于thrift开发的方案,底层通信使用thrift来保证高性能和跨语言,然后HARPC来保证高可用和可视化,并且尽量保持简单,来达到轻量级的需求。

  • 整体结构

* 说明
    * 四个部分:client(客户端)、server(服务端)、registry(注册中心,目前为zookeeper集群)、admin(服务管理系统)
    * client和server又包括: your code(用户代码)、harpc(核心框架,包含Java、Python、C++三个版本)、thrift gen(thrift生成的源码文件,用于底层通信)


项目地址:https://github.com/baifendian/harpc

rpc框架之thrift分析(转)

一、简介1、Thrift是Facebook开发的跨语言的RPC服务框架。随后贡献给Apache开源组织。成为RPC服务的主流框架。 2、特点: 优点:     跨语言,支持java、c/c++、python等多种编程语言     IDL... 查看详情

rpc原理及实现

...RemoteMethodProtocol)和java的原生序列化。(2)Hessian,是一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能。基于HTTP协议,采用二进制编解码。(3)THRIFT是一种可伸缩的跨语言服务的软件框架。thrift允许你定义一个描... 查看详情

微博轻量级rpc框架motan正式开源:支撑千亿调用

支撑微博千亿调用的轻量级RPC框架Motan正式开源了,项目地址为https://github.com/weibocom/motan。微博轻量级RPC框架Motan正式开源  Motan是微博技术团队研发的基于Java的轻量级RPC框架,已在微博内部大规模应用多年,每天稳定支撑微... 查看详情

rpc框架:thrift和protobuf有啥区别?

...尝试...都差不多.参考技术Afastrpcprotobuf的一个全部开源的高性能rpc实现,支持客户端跨平台中国人写的 查看详情

轻量级分布式rpc框架

...方面会直接影响RPC的性能,一是传输方式,二是序列化。轻量级分布式RPC框架的具体过程,该框架基于TCP协议Spring: 查看详情

高可用的池化thriftclient实现(源码分享)

本文将分享一个高可用的池化ThriftClient及其源码实现,欢迎阅读源码(Github)并使用,同时欢迎提出宝贵的意见和建议,本人将持续完善。本文的主要目标读者是对Thrift有一定了解并使用的童鞋,如对Thrift的基础知识了解不多或... 查看详情

rpc接口与rest对比

参考技术ARPC,可以基于TCP协议,也可以基于HTTP协议REST,基于HTTP协议(在TCP协议之上进行封装)RPC,使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率。REST,如... 查看详情

grpc

 GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf3.x,基于Netty4.x+。GRPC与thrift、avro-rpc等其实在总体原理上并没有太大的区别,简而言之GRPC并没有太多突破性的创新。(如下描述,均基于JAVA语言的... 查看详情

轻量级高性能rpc框架hrpc

HRPCHRPC是一款基于Netty和Zookeeper设计的轻量级高性能RPC框架。特性采用Protostuff序列化;高性能,负载均衡;支持服务的注册和订阅;支持同步及异步2种调用方式;长连接,自动重连;采用cglib动态代理;代码简答,易上手;支持S... 查看详情

分布式文件系统fastdfs如何做到高可用

...冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服 查看详情

分布式文件系统fastdfs如何做到高可用

...冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服 查看详情

轻量级分布式rpc框架

RPC,即RemoteProcedureCall(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC可基于HTTP或TCP协议,WebService就是基于HTTP协议的RPC,它具有良好的跨平台性,但其性能却不如基于TCP协议的RPC... 查看详情

rpc框架性能基本比较测试

...iew/open1426302068107.html gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。我们可以设 查看详情

json-rpc轻量级远程调用协议介绍及使用

参考技术Ajson-rpc是基于json的跨语言远程调用协议。比xml-rpc、webservice等基于文本的协议数据传输格小;相对hessian、java-rpc等二进制协议便于调试、实现、扩展,是很优秀的一种远程调用协议。眼下主流语言都已有json-rpc的实现框... 查看详情

thrift代码分析(代码片段)

...层四个层设计,上层只依赖下层,方便扩展和维护。2、基于接口编程和多用抽象工厂设计,每层之间都有一个核心的接口,各个实体初始化基本是使用工厂设计模式,降低耦合。3、基于BIO和NIO,满足不同情景,便于性能调优。... 查看详情

技术名词

...方案,高可用(HighAvalilability,HA)。6、NginxNginx(enginex)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开... 查看详情

grpcgolangtest

gRPC是Google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf3.x,基于Netty4.x+。gRPC与thrift、avro-rpc、WCF等其实在总体原理上并没有太大的区别,简而言之GRPC并没有太多突破性的创新。protobuf相对于用Json方式传输,效... 查看详情

thrift设计与实现

...出了原有LAMP架构的处理能力,对系统服务的可伸缩性和高性能提出了技术挑战。Facebook的工程师文化趋向于选择可用的最好的工具和实现手段解决软件开发中的问题,确保简洁和高效,需要面对多语言协作的难题。然而,当时行... 查看详情