You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
在百度内部,常用语言(C++,Java,Go,PHP)的RPC框架都有多种实现,RPC框架这种基础软件不可或缺,但都很难讲出业务or晋升的价值,所以大部分RPC框架都充满了个人色彩,很难坚持到发展成拥有一个团队or社区持续打磨成为一个特别完善的产品,随着主力作者的离职,很多RPC框架也就留在了代码库的角落。即便如此,在百度缺乏组织支持的情况,全凭戈神一己之力也诞生了brpc这样的作品,brpc框架在百度内部成为C++技术栈的事实性标准,实在令人敬佩。
回到Java技术栈,我们在2010年就已经开始自研RPC框架,彼时业界也并没有一款特别能打的选择,但随着时间流逝,Dubbo发展迅速也成为了Java技术栈的首选RPC框架,但遗憾的是时至今日,可能由于某种竞争关系,Dubbo仍然不支持brpc协议,brpc也不支持dubbo协议。因此在百度内部为实现Java系统和C++系统的通讯,于2017年发起了brpc-java项目对标Dubbo,希望成为brpc生态下面的Java框架首选,但正如
戈神所说
,RPC框架如果作为产品其实不应该只侧重性能而应该更侧重效率,真正帮助用户屏蔽底层系统的各种奇妙问题,可以低成本的正确使用。很遗憾主打高性能的brpc-java没能发展成Dubbo这样的项目,受限于资源局限,随着主力作者的离职,brpc-java也注定只能消失在代码库的角落。
受到戈神的启发,在Java技术栈,SpringBoot&SpringCloud才是对业务发展最有效率的应用框架,我们不应该另立门户搞一套类似Dubbo的全栈框架(资源限制也不允许),而应该在Spring生态下寻求解决方案,因此在2019年又发起了一个有全新定位的RPC框架项目,代号为Starlight,Starlight定位是一个兼容SpringBoot&SpringCloud生态的点对点通信框架,Starlight提供
单端口兼容Spring MVC http rest协议和brpc二进制协议的能力
,使用Spring MVC框架的用户可以较为容易的迁移过来,同时也
无需protobuf的编译过程
(当然如果非常需要proto文件来编译也是可以用的)实现对brpc C++ Server&Client的通信能力,其他的服务注册发现、配置管理、负载均衡、熔断限流完全依赖Spring Cloud生态的各种Starter,也可以灵活借助Service Mesh的能力实现服务注册发现过程,无需特别的兼容适配。
在百度商业体系,Starlight已经完成对存量各种Java RPC框架的替换迁移,规模达到2w+容器,日pv达到200亿+。同时由于brpc已经捐赠给Apache基金会,早前的brpc-java无人维护并不适合加入brpc生态,Starlight在百度内部已经是brpc-java替代产品,为了避免商标问题,Starlight顺势开源,brpc-java开源仓库也更名为Starlight,之前的代码保存在
brpc-java-v3分支
,希望外部brpc-java用户有多一种选择。
Starlight 是一套面向云原生的微服务通信框架,兼容Spring生态,基于此可快速构建高效、稳定、可控、可观测的微服务应用,获得研发效率提升、业务稳定性增强等舒适体验。
核心特性如下:
多种协议支持:Starlight单端口支持brpc、stargate、spring mvc rest(http)协议,提供超丰富的使用场景
高性能远程通信:Starlight基于多路复用的NIO框架封装底层通信能力,提供高性能高并发网络通信能力
易于使用:无需处理protobuf编译过程,通过原生Java接口和POJO对象加上类级别的注解,类似Java RMI和Spring MVC使用体验,即可实现brpc二进制协议的Server和Client;支持无损升级、异常实例摘除;规范化的日志可以秒级定位超时问题、序列化失败问题
添加管理员olivaw2077帮忙加群,备注starlight