Jupiter是什么

Jupiter 斗鱼开源是一套微服务治理架构,提供丰富的后台功能,管理应用资源、设备、应用性能、设备等可视化 。

Jupiter是什么

文章插图
Jupiter 服务治理是一种服务治理 Golang 微服务框架以开发效率和治理效率为核心目标,从统一开发规范、完善监管埋点、降低开发难度等维度协助 Gopher 开发高性能、高可靠性的微服务框架 。
架构图
Jupiter是什么

文章插图
Jupiter 它是罗马神话的众神之神,在仙界执掌众神,在网络上执掌全部微服务!
目标致力于将 Go 规范微服务框架,统一错误码、日志、监管、注册、流量控制 Schema 。对微服务的每一个模块进行观测、整改,管理微服务研发侧的全套生命期 。
功能点gRPC:根据官方 gRPC 开发、集成流量控制和多数据中心方法服务注册,支持多种服务注册,支持多种方式 roundrobin,p2c 等负荷平衡策略;配备:应用: toml、yaml 方法管理设备,标准化关键设备,集成远程配置中心,完成版本管理和更新,查看配置依赖关系;日志:根据 zap 日志类库,完成高性能日志库,对于不同的环境和条件,完成日志库的自动降权,并根据配备标准完成服务端和客户端的所有慢日志连接;监管:根据 prometheus go sdk 类库,完成服务端、客户端的数据监控,以及和 prometheus、cond、etcd 数据打通,完成自动数据采集;数据库:根据数据库: gorm 封装,将数据库 trace,慢日志,监管开始收集;缓存:根据缓存情况:根据缓存情况:根据缓存情况; go-redis 封装,将数据库 trace,慢日志,监管收集,单独完成 redis、多从库 redis,客户端 redis 分块,服务端 redis 分块的 api;系统错误码:区分框架和业务错误码,一键生成架构错误码文档,自动化错误码 SRE 分析工具;工程化:根据服务标准、建立、开发、运营、整改等生命周期,实现了 Jupiter 项目工程化;服务治理:根据监督,etcd,配置中心,对服务完成更好的可观测性、可控性;快速开始规定 Go version>=1.13 and MODULEGO11=on
组装go get -u github.com/douyu/jupiter/tools/jupitercd /path/to/workspacejupiter new jupiter-demo理念工程化目前,大多数架构侧重于协议和解码,过于关注关键技术 。架构在生产过程中会造成很多工程问题 。
因而 Jupiter 针对公司级工程方案,以服务要求、建立、开发、运营、整改为全生命期 Jupiter 部分以工程效率、工程质量、工程稳定性为指标,克服了大量的工程问题,降低了研发人员的项目成本 。
制定标准:建立服务配置、链接、监管、header 一等规范;脚手架:可通过cmd完成服务的建立、更新等服务;服务设施:完成程序研发,ci,运行、整改,提高工程效率、质量、稳定性;工程监督促进了工程开发的质量,这是当今行业所缺乏的 。
服务治理除了提供高性能外,还要考虑一个框架的优缺点 RPC 除通信外,还包括提供全方位服务治理水平 。
Jupiter 经过多个版本的迭代,目前的服务治理水平在行业内非常出色 。
更完善的服务监控,从服务指标上看,根据服务指标,根据服务指标,Google SRE 文档制定了监控指标(延迟、流量、错误和对比),并对每个指标进行了服务监控;从应用维度上,我们可以看到应用实例监督、应用市场监督、所有应用市场监督、各种不同指标 top 列表,实时检测服务水平 。更有价值的错误报告 。错误收敛服务,规范系统错误代码和业务错误代码,一键生成相应的错误代码文档 。当错误发生时,可以根据文档准确找到错误的位置,提高错误检查的速度 。更全面的服务操纵 。使用配置中心和 etcd,保证服务的可控性 。更全面的 SOP 。根据全环节压力测试、混乱工程等形式,提前解决系统中可能出现的严重问题,做好工作 SOP 指南,这样当问题真正来临时,才能平静地解决 。拥抱变化Web 随着运维技术的不断发展,短短几年就出现了相当多的计算形状,包括许多计算、边缘计算、容器化、网格化、Serverless 等等 。在服务保障技术方面,异地多活,混沌工程也在不断发展 。
在语言栈层面,很多企业还处于单一的初期阶段 。PHP、Java 栈扩展到多语言栈并存的局面,尤其是近年来,Golang 由于其在容器化和运维效率方面的优势,越来越多地应用于其中 Web 服务开发 。但每一次技术迭代,在享受效率提高的同时,也在不断经历应用转型和转移的痛苦 。
以斗鱼为例,从 2022 年底,基础设施逐步改造,运营业务系统化建设 。短短三年,我就经历了公共云、异地多活、容器化布局等环节 。目前,我还在一些业务中探索边缘计算和 Serverless 等待新的计算形状 。2022 从年初开始,语言栈将从单一的语言栈开始 PHP 拓展为以 Golang、Java、PHP 以多语言栈为主,随之而来的是多语言栈 RPC 协议大战,http1.1、dubbo、gRPC、私 RPC 协议复杂繁杂,联调效率极低 。经过一段时间的迭代,已经基本统一为外界启用 。http1.1 主要是内部调用 gRPC 优先考虑,减少自定 RPC 协议的应用 。
从 Golang 从应用的角度来看,它面临着不断变化的软件环境和不断丰富的外部环境,这将不断形成新的问题,如:
容器化有 IP 飘移问题是传统的基础 IP 必须改变服务注册和运维方式 。Serverless 如何兼容服务监控问题、指标收集及其链路跟踪?Service Mesh 与传统的部署方式相比,服务注册和发现的方式发生了很大的变化 。在多机房布局中,跨机房使用了这种“弱网环境” 对服务加班、再试、融断、负载均衡等易用性对策要求较高 。不同于传统 RPC 框架和微服务治理架构,Jupiter 从一开始就以应用为核心,定位为微服务应用的运行 。以往的技术架构,如:
多机房建设公有化容器化中,Jupiter 它有效地降低了应用程序迁移和优化的成本,并在此期间积累了大量的架构经验 。未来也将在未来 。
Service MeshServerless等待形状的计算,起着重要的作用 。
提高开发效率【Jupiter是什么】开发效率是基础框架和类库的关键重点之一,Jupiter 从一开始就选择和使用了很多开源类库,但也因此增加了很多问题:
开源库质量参差不齐 。如果不加管束地引入开源类库,类库的不足将不受组织内传输的限制,修复成本非常高 。许多类库不遵循版本标准,会产生兼容性问题,危害开发效率 。许多功能都有多种类型的库供选择,无管束会增加维护和沟通的成本,也会带来一定的风险 。不同类库的代码风格差异很大,有一定的沟通成本 。不同类库使用的错误处理和错误代码、日志、指标收集、 Debug 不同方法的应用不同,不仅危害开发效率,而且影响服务治理 。根据上述原因,在基本框架和类库中,对关键应用领域的常见类库进行了一层包装,尽量避免直接使用第三方类库 。包装方法如下:
运用 Golang 一些语言层面的系统进行简单的包装:type alias: type T = package2.Tvariable binding: var Func = package2.Func统一 New 简化建立过程,根据配备驱动的效果,达到配备驱动的效果 type embedding 扩展类库的作用是动态设备、指标收集、链路跟踪、统一日志、统一错误码等第三方库扩展的治理能力 。根据 interface 抽象限制启用行为 。根据 interface 抽象限制使用行为 。对于不稳定的类库,可以采用这种方法限制用户的使用行为,方便未来的改进和更换 。基于上述方法,Jupiter 它不仅提高了开发效率,而且有效地降低了开发风险 。
同时,Jupiter 为第三方类库和自主开发类库带来统一的治理能力,包括:
统一指标收集链路跟踪日志埋点统一错误处理动态设置安全设置Debug设置 方式 等等,可以大大提高应用开发效率 。汇总Web 后台技术在规划、开发、部署、运维等不同阶段发展迅速,微服务应用架构、软件环境和治理环境也随时发生变化 。作为沟通领域的模型、软件环境和治理环境的媒体,基本框架是稳定业务的重要途径 。