All Projects → baifendian → Harpc

baifendian / Harpc

Licence: apache-2.0
基于Thrift的跨语言、高可用、高性能、轻量级的RPC框架。

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
java
68154 projects - #9 most used programming language
cpp
1120 projects

Labels

Projects that are alternatives of or similar to Harpc

Hs2client
C++ native client for Impala and Hive, with Python / pandas bindings
Stars: ✭ 69 (-69.87%)
Mutual labels:  thrift
Php Thrift Sql
A PHP library for connecting to Hive or Impala over Thrift
Stars: ✭ 107 (-53.28%)
Mutual labels:  thrift
Finatra
Fast, testable, Scala services built on TwitterServer and Finagle
Stars: ✭ 2,126 (+828.38%)
Mutual labels:  thrift
Sails
Create a Thrift Server use like Rails
Stars: ✭ 72 (-68.56%)
Mutual labels:  thrift
Line Instant Messenger Protocol
It is work of Matti Virkkunen, link to http://altrepo.eu/git/line-protocol.git for latest update.
Stars: ✭ 96 (-58.08%)
Mutual labels:  thrift
Aeraki
Manage any layer 7 traffic in Istio Service Mesh.
Stars: ✭ 119 (-48.03%)
Mutual labels:  thrift
Tchannel
network multiplexing and framing protocol for RPC
Stars: ✭ 1,122 (+389.96%)
Mutual labels:  thrift
Gunicorn thrift
Thrift app and worker for gunicorn!
Stars: ✭ 193 (-15.72%)
Mutual labels:  thrift
Dapeng Soa
A lightweight, high performance micro-service framework
Stars: ✭ 101 (-55.9%)
Mutual labels:  thrift
Spring Thrift Starter
Set of cool annotations that helps you building Thrift applications with Spring Boot
Stars: ✭ 151 (-34.06%)
Mutual labels:  thrift
Thrift connector
Clients of thrift, utilizing connection pools
Stars: ✭ 74 (-67.69%)
Mutual labels:  thrift
Evernote Thrift
Thrift IDL files for the Evernote Cloud API
Stars: ✭ 94 (-58.95%)
Mutual labels:  thrift
Herringbone
Tools for working with parquet, impala, and hive
Stars: ✭ 134 (-41.48%)
Mutual labels:  thrift
Andl
Andl is A New Database Language
Stars: ✭ 71 (-69%)
Mutual labels:  thrift
Elixir Thrift
A Pure Elixir Thrift Implementation
Stars: ✭ 182 (-20.52%)
Mutual labels:  thrift
Thriftpy
Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2
Stars: ✭ 1,156 (+404.8%)
Mutual labels:  thrift
Frugal
Thrift improved
Stars: ✭ 113 (-50.66%)
Mutual labels:  thrift
Go
decode/encode thrift message without IDL
Stars: ✭ 219 (-4.37%)
Mutual labels:  thrift
Thrift Tools
thrift-tools is a library and a set of tools to introspect Apache Thrift traffic.
Stars: ✭ 189 (-17.47%)
Mutual labels:  thrift
Thrift Missing Guide
Thrift: The Missing Guide
Stars: ✭ 148 (-35.37%)
Mutual labels:  thrift

harpc是什么

HARPC(High Availability RPC)是基于Thrift的跨语言、高可用的RPC框架。具备高性能、高可用、轻量级等特点,在百分点科技内部服务中广泛使用。

使用指南:HARPC简介
QQ讨论群:398091913
高可用RPC

功能介绍

  • 跨语言通信
    • 方便的使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生成的源码文件,用于底层通信)

如何使用

测试结论

harpc的Java、Python、C++版本的性能略有差别,由高到低为:C++版本 ≈ Java版本 > Python版本,下面仅给出Java版本的测试数据和结论。

  • Java版本容错性测试 java版本容错性测试

  • Java版本性能测试 java版本性能测试

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].