我所在的公司使用Thrift作为基础通信组件,相当一部分的RPC服务基于Thrift框架。公司的日UV在千万级别,Thrift很好地支持了高并发访问,并且Thrift相对简单地编程模型也提高了服务地开发效率。

Thrift源于Facebook, 目前已经作为开源项目提交给了Apahce。Thrift解决了Facebook各系统的大数据量传输通信和内部不同语言环境的跨平台调用。

Thrift的官方网站: http://thrift.apache.org/

作为一个高性能的RPC框架,Thrift的主要特点有

1. 基于二进制的高性能的编解码框架

2. 基于NIO的底层通信

3. 相对简单的服务调用模型

4. 使用IDL支持跨平台调用

这张图来自《深入浅出RPC - 深入篇》 描述了一个RPC框架的基本组件,包括服务器端发布和调用服务组件,NIO组件,协议和编解码组件,客户端调用组件,客户端代理组件等等

对照这个模型,Thrift的核心组件有:

TProtocol 协议和编解码组件

TTransport 传输组件

TProcessor 服务调用组件

TServer,Client 服务器和客户端组件

IDL 服务描述组件,负责生产跨平台客户端

这个系列会结合源码,深入分析Thrfit的RPC调用模型和核心组件

Thrift源码分析(一)-- 基本概念的更多相关文章

  1. Redux源码分析之基本概念

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

  2. thrift源码分析

    1 前言 学习thrift源码主要为了弄清楚几个问题 thrift客户端和服务端的通信流程是如何的 thrift的IDL中给属性加上编号的作用是什么 thrift中require.optional和默 ...

  3. golang thrift 源码分析,服务器和客户端究竟是如何工作的

    首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码 namespace go rpc service RpcS ...

  4. Thrift源码分析(二)-- 协议和编解码

    协议和编解码是一个网络应用程序的核心问题之一,客户端和服务器通过约定的协议来传输消息(数据),通过特定的格式来编解码字节流,并转化成业务消息,提供给上层框架调用. Thrift的协议比较简单,它把协议 ...

  5. Redux源码分析之createStore

    接着前面的,我们继续,打开createStore.js, 直接看最后, createStore返回的就是一个带着5个方法的对象. return { dispatch, subscribe, getSt ...

  6. Redux源码分析之applyMiddleware

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

  7. Redux源码分析之bindActionCreators

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

  8. Redux源码分析之combineReducers

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

  9. Redux源码分析之compose

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

随机推荐

  1. 转:PLL 锁相环

    原地址:http://fangjian0518.blog.163.com/blog/static/559196562011210103455430/  PLL的作用? 答:LPC2000系列ARM内部 ...

  2. JSP四大域对象与九大内置对象

    什么是内置对象? 在jsp开发中会频繁使用到一些对象,如 ServletContext.HttpSession.PageContext 等: 如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手 ...

  3. MySQL系列(五)--二进制日志对主从复制的影响

    MySQL复制是基于主库上的二进制日志来完成,复制是异步的,可能存在延迟 MySQL日志分为: 1.服务层日志:二进制日志.通用日志.慢查日志 2.存储引擎层日志:innodb中重做日志和回滚日志 二 ...

  4. MySQL用命令行复制表,查看表结构

    一.mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 1 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; 或 1 CREATE TA ...

  5. 通过ajax从jsp页面传输数据到web层,并从web层返回数据给jsp页面

    jsp中ajax代码: 1 $.ajax({ var id = $("#studentid").val();//获取标签中的学生id url:'${pageContext.requ ...

  6. vue打包之部署在非根路径下的三两事

    首先,感叹一下,2019年已经过去一半,想想自己做了些什么,好像也没做什么. 今天试着配一个nginx,以前的nginx都是指向的/根路径,今天的nginx指向的非/根路径,遇到许多问题的,总结总结. ...

  7. nslookup查不到数据

    ch查不到数据 换一个ip就可以了,什么原理?

  8. CSS:你真的懂margin吗?

    你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并? margin在块元素.内联元素中的区别?什么时候该用padding而不是margin?你知道负margin吗?你 ...

  9. Spring事务_注解_特性

    Spring 是一个 IOC 和 AOP 容器框架. ## 控制反转(IOC) ## 传统的 java 开发模式中,当需要一个对象时,我们会自己使用 new 或者 getInstance 等直接或者间 ...

  10. win10 下安装 neo4j

    1.neo4j介绍 neo4j是基于Java语言编写图形数据库.图是一组节点和连接这些节点的关系.图形数据库也被称为图形数据库管理系统或GDBMS.详细介绍可看Neo4j 教程 2.安装Java jd ...