百亿级企业级 RPC 框架开源了!

  • 时间:
  • 浏览:0
  • 来源:大发快3_快3手机客户端_大发快3手机客户端

今天给当当.我 儿儿介绍给一款性能卓越的 RPC 开源框架,其作者就是我我推荐每个 Java 多多程序 员都应该看的《Java 生态核心知识点采集》的原作者张玉龙。

说实话我第一次就看这个资料的随后,就感觉作者是一位真正的技术爱好者,随后通过当当.我 儿介绍终于认识了他。交谈之中得知他在美团工作,最初和当当.我 儿共同采集这份资料的初衷是为了面试,估计每天需用面试太少的应聘者,这份资料成了助手。强烈建议没办法 看这份资料的同类学习下,作为 Java 生态知识体系构建也是一份不错的资源。

随后得知业余时间他在研发一款开源的 RPC 开源框架,或者 经过测试可支持百亿级别的调用,或者 于近期终于完成推出 1.0 版本。这款开源软件名字叫做 Koalas,源代码地址:koalas-rpc,下面对这款开源软件做删剪介绍,内容来源于 Koalas 。

Koalas 介绍

企业生产级百亿日 PV 高可用可拓展的 RPC 框架。理论上并发数量接近服务器速率,客户端采用 thrift 协议,服务端支持 netty 和 thrift 的 TThreadedSelectorServer 半同步半异步多程序 模型,支持动态扩容,服务上下线,权重动态,可用性配置,页面流量统计,支持 trace 跟踪等,纯天然接入 cat 支持数据大盘展示等,持续为此人 以及中小型公司提供可靠的 RPC 框架技术方案。

Thrift 是这个接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作另有一两个远程过程调用(RPC)框架来使用,是由 Facebook 为“大规模跨语言服务开发”而开发的。

为有哪些叫 koalas

树袋熊英文翻译,希望考拉 RPC 给有有哪些不太喜欢动手此人 去造轮子的人提供可靠的 RPC 使用环境。

为有哪些要写这个 RPC

市面上常见的 RPC 框架就是我,grpc,motan,dubbo 等,或者 随着太少的元素加入,复杂性的采集等因素似使得有有哪些框架和 spring 一样,着实号称是轻量级,或者 用起来却是或者 当当.我 儿儿很蹩脚,多量的配置,复杂性的 API 设计,着实,当当.我 儿儿根本用不上有有哪些东西!!!

我也算得上是在就是我个互联网企业厮杀过,见过就是我就是我的內部 RPC 框架,这个优秀的设计我想非常赞赏,有一天我一个劲想着,为有哪些不对有有哪些设计原型进行聚合归类,于是此人 搞一套【轻量级】 RPC 框架呢,于是利用业余时间开发此项目,希望源码对当当.我 儿儿对认识 RPC 框架起到推进的作用。

技术栈

  • thrift 0.8.0
  • spring-core-4.2.5,spring-context-4.2.5,spring-beans-4.2.5
  • log4j,slf4j
  • org.apache.commons(v2.0+)
  • io.netty4
  • fastJson
  • zookeeper
  • 点评cat(V3.0.0+ 做数据大盘统计上报等使用,可不配置)
  • AOP,反射代理等

技术架构

Koalas 架构图

序列化

考察了就是我个序列化组件,其中包括jdk原生,kryo、hessian、protoStuff,thrift,json等,最终选则了Thrift,由于着如下:原生JDK序列化反序列化速率堪忧,其序列化内容太过全面kryo和hessian,json相对来说比原生JDK强这个,或者 对跨语言支持一般,就是我舍弃了,最终想在protoBuf和Thrift协议顶端选则一套框架,这个框架很相通,支持跨语言,需用静态编译等等。或者 protoBuf不带RPC服务,本着提供多套服务端模式(thrift rpc,netty)的情况汇报下,最终选则了Thrift协议。

IO多程序 模型

原生socket需用模拟出简单的RPC框架,或者 对于大规模并发,要求吞吐量的系统来说,也就算得上是另有一两个demo级别的,就是我BIO肯定是不考虑了,NIO的模型在序列化技术选型的随后将会说了,Thrift这个支持就是我个io多程序 模型,同步,异步,半同步异步等(SimpleServer,TNonblockingServer,THsHaServer,TThreadedSelectorServer,TThreadPoolServer),其中吞吐量最高的肯定是半同步半异步的IO模TThreadedSelectorServer了,具体由于着当当.我 儿儿可自行google,这次不做多的阐述,选则好了模型随后,发现thrift你造就是我神器一样的位于,再一想,对于服务端来说,IO模型为什么在能少得了Netty啊,就是我下决心也要支持Netty,或者 很遗憾Netty目前没办法 对Thrift的序列化解析,拆包粘包的正确处理,或者 有protoBuf,和http协议的封装,为什么在办,此人 在netty上写对thrift的支持呗,着实工作量大了这个,或者 一想netty不就是我干这个事儿的嘛- -!

服务发现

支持集群的RPC框架顶端,像dubbo,将会是这个三方框架,对服务发现都进行的封装,没办法 自研RPC一段话,服务发现就要此人 来写了,没办法 简单小巧容易上手的zookeeper肯定是首选了。

内容展示

实际性能压测

8C 16G mac 开发本,单机 100000 次请求耗时截图

10w 次请求,为宜耗时 12s,平均 qps 在100000左右,在集群环境下会有不错的性能表现

数据大盘展示

koalas2.0 将会接入了 cat 服务,cat 服务支持 qps 统计,可用率,tp90line,tp99line,充沛自定义监控报警等,接入效果图

充沛的可视参数,流量统计,日,周,月报表展示等。

链路跟踪

对 RPC 服务来说,系统间的调用和排查异常接口,选则耗时代码是非常重要的,我希望接入了 cat,koalsa-rpc 纯天然的支持链路跟踪,一切尽在肩头!

最后

作者非常具有技术情怀,在聊天中说就剩这点爱好了,要坚持下去。听了这句话啥总要 说了,点击下方链接,先 Star 为敬。

https://gitee.com/a1234567891/koalas-rpc