美文网首页
rpc-quickstart

rpc-quickstart

作者: chenfh5 | 来源:发表于2018-09-02 21:36 被阅读22次

    记录一下个人对rpc的理解,目录如下,

    0. Overview
    1. Thrift Intro.
    2. Grizzly Intro.
    3. QuickStart
    4. Reference
    

    Overview

    • 两个不同应用之间的一问一答。A应用是一个进程(java -cp),B应用是一个进程(java -cp)
    • 为什么要在两个应用之间切换,所有逻辑都在A做不可以吗?可以。但是这样A可能就是一个很庞大的进程了,受限于单机的cpu,disk,mem和GC,太庞大肯定是不行的。所以这里就需要拆分,那么就跟MapReduce很像
    • MR里面,一系列低成本的机器就可以handle庞大的请求量和数据量。当然还有很多其他原因,保密、数据互通等等。

    Thrift Intro.

    先来看看它的架构

    Thrift Architecture
    • 顶层黄色是用户根据thrift-IDL来定义的HelloWord.thrift文件
    • 橙色和红色是运行thrift-0.11.0.exe -gen java Hello.thrift命令自动编译的server-client读写代码框架(HelloWord.java)
    • 紫色Protocol是传输协议(TBinaryProtocol二进制型,TCompactProtocol压缩型,稠密型,json型,简化json型,debug型,6类),定义了消息是怎样序列化和反序列化的
    • 蓝红色Transport是传输方式(TSocket阻塞,TFramedTransport非阻塞,TFileTransport写文件落盘,TMemoryTransport缓存型,TZlibTransport等),定义了消息是怎样在客户端和服务器端之间读写通信的
    • 底层黑白是I/O具体通信

    另外还有2个具体Component,

    • processor处理器,具体实现类,定义了数据输入,处理,数据输出的全过程
    • server服务器,监听本机ip的某端口,接收数据输入请求,并转发到processor去(TSimpleServer单线程阻塞,TThreadPoolServer多线程阻塞,TNonblockingServer多线程非阻塞NIO与TFramedTransport配套使用)

    Grizzly Intro.

    Grizzly是一个基于Java NIO的应用程序框架,旨在帮助程序员更好地利用Java NIO API,其中http-server框架有取代tomcat之意,即不用部署tomcat,jetty这样的servlet容器,皆因其自带了内嵌服务器。这样一个jar包就能跑天下,至于负载均衡的事还是交给Nginx来take。

    Grizzly Architecture

    从右侧底部开启,整体是一个HTTP Services,核心功能是左侧,主要有内存管理I/O策略


    QuickStart

    根据网上的示例,用Scala实现了一些example,希望能够对着example来快速学习,快速上手,

    1. thrift-rpc
    2. grizzly-http

    Reference

    相关文章

      网友评论

          本文标题:rpc-quickstart

          本文链接:https://www.haomeiwen.com/subject/mfvmwftx.html