免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1848 | 回复: 1
打印 上一主题 下一主题

[C++] fastrpc 2.0 发布,高性能 C++ 服务器框架 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 10:16:53
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-09 14:54 |只看该作者 |倒序浏览
   
    fastrpc 2.0 发布,此版本优化业务线程的负载均衡。

    高性能跨平台c++ rpc框架 :FastRpc

    简单易用,几乎和调用本地方法一样使用即可。
    使用protobuf生成代码 支持同时处理pbrpc调用和http请求
    客户端支持 windows linux android使用
    支持同步异步方式调用 支持单向推送
    支持闲时关闭链接 支持自动重连与断开事件处理
    同步压测 4核机子虚拟机
    简单echo(因为nginx是读文件公平竞争 我们也是读文件) 1000并发 6wqps; nginx 4.5wqps
    异步压测1000并发 40+w qps
    另有400多行实现的 python web服务器 原理模型一样的以供参考(通用的多线程reactor模式,用非阻塞模拟异步io)


    例子

首先定义protobuf 协议
       
package echo;
message EchoRequest
{
required string message = 1;
};
message EchoResponse
{
required string response = 1;
};
service EchoService
{
rpc Echo(EchoRequest) returns (EchoResponse);
};
option cc_generic_services = true;

然后客户端调用:

       
RpcClient client(10, "192.168.1.13", 8999, 1000); // 1:并发sock数 2:host 3:ip 4:超时时间
echo::EchoService::Stub stub(&client);
echo::EchoRequest req;
req.set_message("cli hello");
echo::EchoResponse res;
stub.Echo(NULL, &req, &res, NULL); // 同步

服务器调用:

class EchoServiceImpl : public echo::EchoService { // 实现pb生成的接口
    virtual void Echo(::google::protobuf::RpcController* controller,
                      const ::echo::EchoRequest* request,
                      ::echo::EchoResponse* response,
                      ::google::protobuf::Closure* done) {
        response->set_response(request->message()+" server_hello");
        if (done) {
            done->Run();
        }
    }
};
RpcServer server("192.168.1.13", 8999);
RPCREGI_ONEP(server, EchoServiceImpl);
server.start();

服务器http 处理:

class MyHttpHandler : public HttpHandler {
public:
    virtual void Init(CASyncSvr* svr) {}
    virtual void OnRec(HttpRequest* request,
                       ::google::protobuf::Closure *done) {
        CHttpParser* ps = request->ps;
        ps->parse_form_body(); // 解析post数据
        std::string kk = ps->get_param("kk");
        std::string res = kk + " server hello":
        std::string content_type = "text/html";
        std::string add_head = "Connection: keep-alive\r\n";
        CHttpResponseMaker::make_string(kk,
                                        request->response,
                                        content_type,
                                        add_head);
        if (done) {
            done->Run();
        }
    }
    virtual void Finish(CASyncSvr* svr) {}
};
RpcServer server("192.168.1.13", 8999);
RPCREGI(server, EchoServiceImpl);
HTTPREGI(server, MyHttpHandler);
server.start();

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
2 [报告]
发表于 2015-02-24 16:33 |只看该作者
kg假装无所谓 发表于 2015-02-09 14:54
fastrpc 2.0 发布,此版本优化业务线程的负载均衡。

    高性能跨平台c++ rpc框架 :FastRpc
...


鼓励楼主。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP