程序员如何设计一个rpc框架?

Redis服务支持5000万的QPS,有什么好的思路?

论实际项目用阿里云,虽然很贵,但实现简单,假如做技术秀,自行开发x86+fpga或gpu,毕竟redis用处,这是十分简单的数据结构,5000w就是50m,看每条数据大小多少了,一条pcie3.0 16x不够就用两条三条四条,进一步作秀,用fpga处理tcp/ip协议,一个节点做5000w真不是问题,只是为什么说这是作秀?一系列的开发过程,多种平台技术混合使用,没多少企业愿意这么干

5000万QPS的系统是什么概念?我先说一个数字google一天做50亿查询;纽约交易所平均一天20-30M笔交易;全球最大广告交易平台Double Click的QPS为2M。除了面试没有人会真的遇到这样的挑战。

简单地说,5000万QPS以现在技术手段,除非做客户端提前知道数据的分布,知道去哪个节点,数据不会在节点中同步。如果用Redis一个CPU大概可以做到5KQPS,每个节点主从。也就是说牺牲可用性。

虽然知道你问这个问题的时候,其实自己并没有想的太清楚,但是为了涨粉,我还是愿意来评论一下。

我想对redis来说,单机qps 5000w暂时肯定是不能的事情了,所以需要分布式集群来解决这个问题。

但是现实中的分布式方案,其实都是在各种现有条件下的权衡结果,我想现实中5000wqps的应用可能主要会有以下场景。

1.纯读场景(存储量单机可存储)

对于纯读场景,其实是离线写 + 在线读的模式,单纯的加机器就可以完成你的需求。

单机我记得10w没问题,那你可能需要500台机器,如果你是多idc,那么N + 1冗余考虑到的话,可能实际会多点。

这就是面试闲打牙说的。

就像一个20-30人的公司,面试问的都是一天亿级数据量的问题。这个规模的公司,流量有限,数据量一天最高峰能到几百万就不错了,还不是天天如此。本身面试的人也很少有真的处理亿级数据量的问题的人。双方有时纯空对空交流。

不过现实世界真有悲剧,搞微服务,日活高峰也就1000的系统,弄了上千台服务再跑,基本都空跑,一年服务器钱老多了。

程序员如何设计一个rpc框架?

RPC框架全称叫“Remote Procedure Call”-远程过程调用。

在分布式应用大放异彩的今天,软件研发工作(微服务、中台)是一定离不开分布式,既然说到分布式就一定离不开RPC,所以RPC框架也是广大程序员进阶路上必须跨过去的一道坎,也是工作中经常会用到的。因此,了解并掌握RPC框架的底层原理和其设计思想也是每一个程序员的必备技能之一。

各大互联网公司都或多或少实现了自己的RPC框架,其中比较出名且常用的有:

阿里巴巴的dubbo:这个大家应该都用到过吧?GitHub地址:https://github.com/apache/dubbo

基于阿里巴巴fork的当当版dubbox:这个貌似也都用到过?在dubbo不死不活的那几年。GitHub地址:https://github.com/dangdangdotcom/dubbox

谷歌grpc:谷歌版本的rpc,GitHub地址(Java版):https://github.com/grpc/grpc-java

大家可以自己去GitHub上去搜索这三大框架并进行学习。

如果我们自己去实现一个简单的RPC框架要怎么做?这个时候我们应该意识到我们是在写一个框架,写一个框架意味着我们无法再随意的使用第三方依赖包,也就是除了一些工具类包可以使用,其他的都需要我们用Java一行一行的写出来。

下面提供一下如何用Java实现一个简单的RPC功能(谈不上框架):

到此,以上就是小编对于redis 动态修改配置的问题就介绍到这了,希望这2点解答对大家有用。

本文名称:程序员如何设计一个rpc框架?
本文网址:http://www.shufengxianlan.com/qtweb/news30/408930.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联