异数OS 织梦师-纤手(二)– LPC RPC篇


本文来自异数OS社区


github: https://github.com/yds086/HereticOS

异数OS社区QQ群: 652455784

异数OS-织梦师(消息中间件 RPC技术)群: 476260389


织梦师-纤手 LPC RPC简介


纤手主要用于异数OS 之上性能级应用系统设计,他并不支持序列化等需要CPU密集型功能,因此他也不支持其他非C++语言平台,要求CPU同构(大端,小端),相比传统RPC 技术,提供10-100倍的调用性能提升,多样化的方案选择也使他可以面向不同性能级应用场合,方案原型都是最小化轻量级,开发者可以改造定义自己的RPC平台。


与众不同的特性


  1. 简单靠谱的框架,使用阻塞线程模型,因此并发设计更加简单实用,不需要考虑异步并发带来的算法复杂度以及错误处理等问题。
  2. 海量并发调用特性,由于异数OS的线程开销很低,1亿线程仅需4G内存,因此可以更加随意的使用LPC RPC技术,而不需要考虑其成本代价,传统LPC RPC技术往往被宿主平台的CPU数量线程数量等限制,而只能选择集群扩充并发RPC容量,RPC并发容量保守测试提升1000倍。
  3. 10-100倍 LPC RPC调用性能

LPC 方案说明


LPC主要用于相同CPU核内线程的过程调用,依赖异数OS 本地event组件,实现本地CPU核线程间快速调用,相比RPC,拥有最快的过程调用性能(IO密集型),每CPU核最大20M左右线程间调用性能,不能用于跨CPU核跨网络的过程调用。


RPC方案说明


1. RPC 跨核交换机模式

RPC 跨核交换机模式,此模式弥补LPC 不能支持跨CPU核调用模式,多路并发RPC(8代理,8存根)最大800W左右RPC调用性能,单路RPC 200W左右RPC调用性能,适用于混合计算密集型的IO应用,适用于多核分载计算压力,但IO性能不如LPC.

2.TCP直连模式

此模式为网络分布式环境提供RPC服务,由异数OS TCP协议栈来提供跨网络的RPC调用,最大每核400W调用性能左右。

3.TCP经纪人代理模式

经济人模式使用 织梦师-水母消息队列作为框架内核,相比TCP直连模式,优势是通过经纪人可以解耦Client Server的调用依赖,通过多消费者存根可以大大提高系统的可用性稳定性,消费者存根崩溃时并不会对生产者代理造成连带影响,劣势是,IO规模比直连模式大一倍,单broker最大RPC 调用性能在200W,具体架构原理图参见织梦师-水母消息队列。


相关RPC产品性能对比


数据来自网络,环境目标不同,选取目标产品最大性能值,成绩仅供参考。

引用的其他产品测试成绩

http://colobu.com/2018/01/31/benchmark-2018-spring-of-popular-rpc-frameworks/

https://blog.csdn.net/quuqu/article/details/79304614

测试特性 纤手 5000W LPC 纤手 5000W RPC跨核 纤手 600W-RPC TCP直连 纤手 600W RPC TCP中间人 go+stdrpc thrift dubbo
RPC最大调用性能 20M 8M 4M 2M 30W 7W 20W
平均延迟 调用性能/链接数量 调用性能/链接数量 调用性能/链接数量 调用性能/链接数量 10ms+调用性能/链接数量 10ms+调用性能/链接数量 10ms+调用性能/链接数量
最小延迟 <1us 10us 10us 10us 10ms 10ms 10ms

异数OS 织梦师-纤手(二)-- LPC RPC篇的更多相关文章

  1. 异数OS 织梦师-云(五)-- 容器服务化,绿色拯救未来。

    . 异数OS 织梦师-云(五)– 容器服务化,绿色拯救未来. 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652 ...

  2. 异数OS 织梦师-水桶(三)-- RAM共享存储方案

    . 异数OS 织梦师-水桶(三)– RAM共享存储方案 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455 ...

  3. 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡

    . 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...

  4. 异数OS 织梦师-水母(一)--消息队列篇

    异数OS 织梦师-水母(一)–消息队列篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异数O ...

  5. 异数OS TCP协议栈测试(二)--短连接篇

    异数OS TCP协议栈测试(二)--短连接篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 TCP 短链接IO性能测试,Client Se ...

  6. 异数OS TCP协议栈测试(一)--数据传输篇

    异数OS TCP协议栈测试(一)--数据传输篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 数据传输IO性能测试,主要是建立连接后测试收 ...

  7. 异数OS国产CPU平台移植项目需求分析

    异数OS国产CPU平台移植项目需求分析 目录 异数OS国产CPU平台移植项目需求分析 项目立项背景 项目需求分析 异数OS性能指标简介 1.TCP协议栈性能测试 2.异数OS-织梦师-水母 消息队列性 ...

  8. 异数OS-星星之火(二)--远程实验室注册开放

    异数OS-星星之火(二) 远程实验室注册开放 异数os-织梦师云 未来操作系统技术远程实验室预计9月中旬开放,提供异数os用户学习研究测试服务,目前在做容器化多租户环境改造,先开放会员预注册通道,有需 ...

  9. 异数OS 星星之火(三)--异数OS-织梦师云 微服务编写入门

    . 异数OS 星星之火(三)–异数OS-织梦师云 微服务编写入门 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...

随机推荐

  1. dotnet core 输出调试信息到 DebugView 软件

    本文告诉大家如何在 dotnet core 输出调试信息到 DebugView 软件 在之前告诉小伙伴,如何在 WPF 输出调试信息到 DebugView 软件,请看文章 WPF 调试 获得追踪输出 ...

  2. vue依赖

    ajax:vue-resource moke数据:body-parser

  3. presto,dremio,spark-sql与ranger的整合记录

    dremio,spark-sql,presto和ranger的整合 当前,ranger没有现成的插件来管理dremio,spark-sql,presto. 暂时使用的方法是新建一个用户,如presto ...

  4. Java 学习笔记(8)——匿名对象与内部类

    一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和 ...

  5. Python3 collections模块的使用

    collections 介绍 collections是Python内建的一个集合模块,提供了许多有用的集合类和方法. 可以把它理解为一个容器,里面提供Python标准内建容器 dict , list  ...

  6. 洛谷$P$1402 酒店之王 网络流

    正解:网络流 解题报告: 传送门! 一看就很网络流昂,,,于是现在的问题就变成怎么建图了$QwQ$ 首先如果只有一个要求,那就直接按要求建图然后跑个最大流就好. 现在变成,有两个要求,必须同时满足,考 ...

  7. Python数据分析:手把手教你用Pandas生成可视化图表

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  8. 关于Mac VMFusion Centos7虚拟机网络的配置

    1.环境配置: 创建完快照后启动虚拟机,使用root用户和root密码登录系统 1.1 停止防火墙 #停止防火墙 [root@localhost ~]#systemctl stop firewalld ...

  9. 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举

    题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k& ...

  10. 1026 程序运行时间 (15 分)C语言

    题目描述 要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间.这个时间单位是clock tic ...