斗鱼开源首秀——基于 Go 的微任事框架 Jupiter

发布时间: 2024-03-29 04:35:30  来源:天博app 

  6 月 1 日,斗鱼将基于 Go 发言的微任职框架Jupiter开源。行动国内著名的互联网直播公司,这也是斗鱼初次以公司的表面正式推出开源项目。

  近年来,得益于日渐伸长的高并发交易需求,微任职架构起先正在国内渐渐普及。同时,专为高并发而生的 Go 发言及其相干生态正在国内的兴盛也突飞大进。目前,市情上主流的微任职架构囊括Spring cloud、Dubbo等,而且都有团队为之特意推出了对应的 Go 版本,以充盈表现 Go 正在微任职架构中的高并发上风。

  而搜集直播恰是一项高并发的交易,斗鱼的分散式交易模子不断让咱们颇为好奇。为进一步清楚斗鱼的 Jupiter 与其他主流微任职框架的区别,以及斗鱼内部技巧栈的兴盛,咱们第偶然间邀请到了斗鱼 Go 团队研发工程师吕超,一同回首了 Jupiter 的开源经过,以及斗鱼近几年的技巧栈变更。

  据悉,Jupiter 脱胎于斗鱼内部的 Golang 微任职框架,进程三年打磨、几百个任职的线上验证,并历经多机房树立、云化、容器化等多次根底架构演进。目前,Jupiter 宣告了 0.5.0 版本,根基涵盖了内部框架的要紧效用。但由于内部框架含有很多定造的性格以及极少史册包袱,很多效用并没有完美开释出来。“ 咱们也正在摒挡,尽速把这局限效用开释出来。”

  那么斗鱼正在搭修微任职架构的历程中,为什么不采用现成的微任职框架,而是采取自身“造轮子”,从新缔造了 Jupiter 呢?吕超告诉咱们,斗鱼是正在 2016 年尾起先启用微任职架构的,也是正在当时引入了 Go 技巧栈。Jupiter 也不是一起先就构想好的。“ 刚起先,咱们大宗行使开源的类库来攒行使。开源类库的效用亏空,bug 没法实时修复,咱们就二开。为了知足内部多技巧栈通讯的需求,咱们起先编写同一的 RPC 框架,渐渐变成了早期的 Jupiter。” 跟着任职范围的伸长,根底架构的演进,Jupiter 也正在不竭滋长为赞成多行使场景、合切开荒功用和处理功用,并能从容应对根底架构演进的微任职框架。

  行动一个滋长中的开源项目, Jupiter 与市情上的 Spring Cloud、Dubbo 这类成熟的框架比拟,并不算完善。“ 正在效用上, Jupiter 另有很多亏空。但 Jupiter 是 Go 原生的,采用的很多计划也都是 Go 生态里行家喜闻笑见的,例如 gRPC、ETCD、Prometheus、Jaeger 等。同时,Jupiter 是面向任职处理的框架,对极少模块的处置比拟盛开,例如 echo、gin 这些都很容易集成进来,当然也囊括各公司自研的 RPC 框架。” 吕超吐露,固然目前的 Jupiter 还不是最完善的框架,但却是基于斗鱼多年的现实交易体验堆集起来的,是目前最适合斗鱼的微任职架构。

  Go 发言是由谷歌于 2009 年推出的一门相比较较新的编程发言,因其原生赞成高并发的性格,被誉为云原生期间的容器发言。但 Go 正在国内的起步较晚,目前 Go 相干的生态正在国内还并不完备,乃至另有良多开荒者仍对这门所谓的云原生期间新发言持犹豫立场。正在与吕超的交换中咱们得知,创造于 2014 年的斗鱼最起先行使的也不是 Go 。

  “ 斗鱼 Web 部分一起先行使的是 PHP,不断到 2016 年尾,为应对交易范围的疾速伸长,慢慢引入 Go、Java 从而变成了多技巧栈的面子。” 吕超先容说,“ 引入 Go 也是看中了 Go 正在高并刊行使开荒和容器化上的上风,真相上正在随后两年的任职化工程中,Golang 确实也浮现了这种上风。”

  然而迁徙到 Go 的历程并谢绝易。前端微服务据吕超记忆,“ 由弱类型发言转向强类型发言,类库的匮乏,以及 Go 正在包束缚效用上的杂沓都给咱们形成了不少的穷苦。但 Go 发言机造比拟轻易和直观,没有那么多花里胡哨的东西,这也带来一个潜正在上风即是 Go 行使的重构和迭代本钱口舌常低的,这必定水平上低浸了迁徙的难度。”

  也恰是为了抬高 Go 行使的开荒功用,斗鱼的团队开荒了 Jupiter 。“ 跟着行使范围的增大,Jupiter 也格表合切处理功用。任职化做的差不多的时辰,也起先继承多机房树立、云化、容器化、混沌工程等根底树立的极少处事,以保护交易逻辑与这些基修的无缝对接。当然这里更多的是必要处理平台和运维的 PaaS 平台的赞成,庆幸的是,咱们的任职处理平台 Juno 也开源了。通过 Jupiter 和 Juno,能够杀青比拟完美的任职处理体验。”

  因为 Go 发言赞成高并发性格,极少依然比拟成熟的微任职架构也正在近期推出了 Golang 重构版。