Giter Site home page Giter Site logo

fsksf / harpc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from baifendian/harpc

0.0 0.0 0.0 23.15 MB

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

License: Apache License 2.0

Shell 0.01% Python 2.05% HTML 2.24% JavaScript 64.22% CSS 26.95% CMake 0.06% C++ 0.39% Thrift 0.01% Java 4.06% Batchfile 0.01%

harpc's Introduction

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版本性能测试

harpc's People

Contributors

dsfan avatar matrix2011 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.