当前位置: 首页>>搜索引擎>> 阅读正文

Thrift使用指南

Category: 搜索引擎 View: 127,050 Author: Dong
,

  • 评论 (26)
  • 引用通告 (7)
发表评论 发起引用

  • 1楼guest 回复

    Post: 2012-02-13 06:16

    3.2 Protoal -> Protocol
    拼写错训误.

    [回复]

    Dong 回复:

    已经改正,谢谢!

    [回复]

  • 2楼小武哥 回复

    Post: 2012-02-17 12:27

    protobuf也是提供了rpc server框架的,只是没有提供具体的实现

    [回复]

    Dong 回复:

    protobuf提供的那个框架基本没用,整个RPC需要自己实现。

    [回复]

  • 3楼菲尼克斯 回复

    Post: 2012-02-22 05:07

    请教博主一个问题?
    thrift的service之间能否互相调用?

    [回复]

    Dong 回复:

    你举个例子,我没看明白。

    [回复]

  • 4楼菲尼克斯 回复

    Post: 2012-03-02 05:39

    service A {
    void dosa();
    }

    service B {
    void dosb();
    }
    生成代码
    class B {
    void dosb()
    {
    A::dosa();
    }
    }
    这是我刚开始了解thrift时一个问题,我把service看成类,就想象多个service对象之间的关系,
    现在明白thrift不支持这种机制。

    [回复]

  • 5楼e35go 回复

    Post: 2012-04-12 06:46

    很全面的教程。
    我创建一个demo.thrift

    service HelloWorld {
    string say(),
    string hello(1:string name)
    }

    thrift –gen php:server demo.thrift

    不过不会HelloWorldHandler这个类啊。是不是要手动创建了?

    [回复]

    Dong 回复:

    是自动生成的,你看看是不是其他名字。

    [回复]

  • 6楼dengqs 回复

    Post: 2012-04-25 16:15

    真不错的文章。好好向董专家学习。人才。

    [回复]

  • 7楼qiner 回复

    Post: 2012-07-18 09:44

    请问字节数组怎么定义?

    [回复]

    Dong 回复:

    什么字节数组,类似于java中的byte[]吗或者C++中的char[]吗?

    [回复]

  • 8楼yefeng 回复

    Post: 2012-07-30 09:56

    你好 请教个问题哈 我在thrift服务器用的是TThreadedSelectorServer 这个异步的server selectorThreads=16 acceptQueueSizePerThread=6 workerThreads=1024 在做压测的时候cpu能跑到100% 后来我用.thrift文件又增加了几个方法 重新对之前的逻辑做压测的时候 cpu就跑不上去了 您知道可能是哪导致的吗

    [回复]

    yefeng 回复:

    找到问题了 原来是代码合并的时候 把客户端对象池的配置不小心删掉了,不过测试不理想,thrift通信每秒才处理三千多四千请求,以前能到七千多每秒,您有推荐配置吗 比如服务器端线程池一类的

    [回复]

    匿名 回复:

    你压力测试是自己写的脚本,还是利用开源工具?

    [回复]

  • 9楼yjd 回复

    Post: 2012-10-10 05:37

    牛,向专家学习!!

    [回复]

  • 10楼东方 回复

    Post: 2012-10-22 10:12

    thrift 是否可以实现服务器端推送 的功能呀

    [回复]

  • 11楼Dong 回复

    Post: 2012-10-23 01:06

    thrift是典型的client/server架构,因此不支持。 如果想支持,只能是将通信双方设定为既是client,又是server,或者,你可以自己修改thrift,参考:http://joelpm.com/2009/04/03/thrift-bidirectional-async-rpc.html

    [回复]

  • 12楼东方 回复

    Post: 2012-10-23 07:33

    嗯,了解了一下,谢谢了,呵呵

    [回复]

  • 13楼quan 回复

    Post: 2012-12-13 02:23

    good

    [回复]

  • 14楼Nice 回复

    Post: 2013-03-19 09:03

    请问如何将Thrift修改成支持多接口?

    [回复]

  • 15楼Dong 回复

    Post: 2013-03-19 10:51

    什么叫多接口,现在thrift的每个service里就可以有多个接口啊。

    [回复]

  • 16楼ibelieveu 回复

    Post: 2013-03-20 00:49

    每个service都必须独占一个端口?

    [回复]

    Dong 回复:

    不一定啊,如果一个service对应一个thrift server,则一个占一个端口,如果多个service对应一个thrift server,那这些service只用一个端口。

    [回复]

    ibelieveu 回复:

    前几天我写了个demo,php通过thrift调用java,我发现共用一个端口,传输数据有问题。你确定1个端口传输数据没有问题?

    [回复]

  • 17楼Dong 回复

    Post: 2013-03-21 00:31

    什么叫公用端口?你的php是client,java端是server,端口只在server端需要啊,client通过server端的ip和端口号连接server。你这种情况叫公用端口吗?

    [回复]

    ibelieveu 回复:

    service1 有 个方法 ping();
    service2 有个方法 ping();

    如果服务端 开一个端口 a , 客户端 service1 和service2都去连端口a,会有问题。
    如果服务端 开2个端口a,b ,service1连接a service2连接b 。木有任何问题。

    [回复]

  • 18楼Dong 回复

    Post: 2013-03-22 03:47

    你是一个service一个server,一个server必须有一个端口。 你可以把这两个service合并成一个service。

    [回复]

    ibelieveu 回复:

    按照规范来讲,不同业务肯定要分不同service啦。 都揉进一个service里面,那serviceimple这个实现类得多庞大。你说呢?

    [回复]

    Dong 回复:

    这个看你从哪方面看了,每个业务一个service,那么公司会有几十个service,用户用起来就困难,我一个程序需要访问10个service,需要创建10个client,很烦。 所以,这是一个折中,可适当将业务合并。

    [回复]

  • 19楼秒大刀 回复

    Post: 2013-04-03 02:34

    我无法在Chrome浏览器上进行复制,或许是个bug

    [回复]

    simlegate 回复:

    就是不允许你复制啊。

    [回复]

  • 20楼moxing 回复

    Post: 2013-04-27 07:20

    我在centos 5.6上安装thrift 0.9.0,用的是python 2.7.4,configure一直失败啊,说是 version >= 2.4, error: too old. 请问博主遇到过类似情况么?

    [回复]

  • 21楼simlegate 回复

    Post: 2013-08-28 08:26

    楼主不允许复制,大概是因为保护版权
    chrome下输入: view-source:http://dongxicheng.org/search-engine/thrift-guide/
    这样也可以复制文字,应该不允许查看源代码

    [回复]

  • 22楼xsank 回复

    Post: 2013-12-15 03:29

    这个比自己定义的序列化/反序列化优势在哪呢?

    [回复]

  • 23楼Voxyvia 回复

    Post: 2014-02-20 01:47

    请问,Thrift在写声明IDL时候如果需要引入外部的类应该怎么办?比如说有一个函数参数是Date类型的,谢谢。

    [回复]

    Sorra 回复:

    Date的值其实是个long,可定义成long,代码里跟Date互相转换。其他的类就自己定义结构体呗。

    [回复]

  • 24楼Voxyvia 回复

    Post: 2014-02-20 02:26

    还有一点,Thrift在写声明IDL时候Service里面的函数声明不能实现函数重载,这个有比较好的解决方案吗?谢谢

    [回复]

  • 25楼nathan 回复

    Post: 2014-08-19 03:51

    想问下, 在多线程情况下 transport 或 client 对象能复用么?还是每次请求都要重新创建一个transport 或 client 呢? 谢谢

    [回复]

  • 26楼阿利 回复

    Post: 2014-11-22 15:17

    请教下,我们有一个服务端总是出现cant identify protocol的句柄泄露。不知道为啥?不知道各位专家是否遇到类似问题,可否支招下。感谢。

    [回复]

发表评论