dinstone Java | Golang | Python

真正的高效能 RPC 框架 Focus

2022-11-01
dinstone
RPC

背景

从2010年开始,工作中先后开发了3套RPC框架:Json-RPC、Notify、JRPC。这个期间学习了很多优秀的RPC框架(Dubbo、Motan、Sofa-RPC、gRPC),吸收了很多先进的思想,每一次的框架重构都是对上个框架的思想增强,同时也是对架构的不断学习、否定和再升级的过程。

RPC作为微服务架构不可或缺的一项技术,很多同学不仅想了解其架构设计原理,而且还想了解其实现模式。为了给同学们讲清楚RPC,尤其是优秀的RPC框架(Dubbo、Motan、Sofa-RPC、gRPC)的架构原理和实现模式,将之前看到过、实现过的RPC框架做了一个总结,一不小心就写成了一个高效能的框架Focus。现在分享出来,希望对想学习RPC的同学有所帮助。当然,你也可以把它应用到你的项目中,进一步的感受它的魅力。

概述

通常,评价一个RPC框架是否优秀、高效能,有3个基本标准:

  • 简单易用,无侵入:不需要过多的研究使用文档,查看快速开始或API就能快速用起来,框架代码无需侵入业务代码就能完成调用。
  • 抽象适度,可扩展:框架分层耦合合理、模块职责内聚、实现简洁易懂,能覆盖绝大多数场景,对特殊场景可通过设置或扩展来满足需求。
  • 性能优越,可演进:“高性能”永远是一个绕不开的关注点,框架的实现也是编码能力的体现,保持API不变,但实现可持续迭代改进。

Focus 是下一代跨语言、轻量级RPC框架,不仅满足上述3个标准,而且适用多个编程环境。旨在帮助开发人员快速的开发微服务应用程序,简化多运行环境下的RPC编程,可以很轻松的支持云端编程和移动端编程。

特性

  • 跨语言支持。同时支持多种序列化协议:Jackson和Protobuff。
  • 模块化API。模块化的客户端和服务端API、可扩展的系统架构核心小于1 MB。
  • 分层架构。合理严谨的分层(包括API层、代理层、调用层、协议层、传输层)使得依赖最小化、可控。
  • 可插拔的服务发现机制。使用Clutch支持 Zookeeper,Consul,Nacos、Polaris等注册中心。
  • 可插拔的调用过滤机制。可实现Logging、Tracing、Metrics、熔断等功能。
  • 支持同步调用、异步调用、泛化调用。满足各种场景下的不同诉求。
  • 高效的自定义协议。二进制消息交换协议PhotonFocus的RPC协议。
  • 不同级别的服务控制。全局级别、服务级别的序列化、压缩、超时、重试设置,方法级别的超时、重试设置。
  • Spring boot 集成支持友好。简化Spring应用的集成、开发难度。

总结

Focus 框架在高效能方面做了很多的努力,坚持最小侵入性,坚持面向对象的SOLID原则,追求极简协议。希望对框架学习的同学有帮助!

Focus 框架有了初步的感受,你是否愿意关注它、改进它、并持续应用它呢?是的话请给Focus 点赞吧!


推荐

评论

目录