Yandex 开源 userver 框架,用于构建高负载应用程序

Yandex 近日公开了 userver 框架的源代码,它允许开发者创建在异步模式下运行的高负载 C++ 应用程序。该框架已经在 Yandex 内部进行了测试,并被用于 Yandex Go、Lavka、Delivery、Market 等服务。userver 是用 C++ 编写的,并在 GitHub 上以 Apache 2.0 许可发布。

根据官方介绍,userver 适合于开发具有微服务架构的应用程序。一开始它仅仅是为 Yandex Taxi 而开发的,在 userver 的帮助下,团队将 Yandex Taxi 从单体应用转为允许开发各个独立组件(微服务)并在不同应用中使用它们的架构。微服务各自独立,所以这样架构上的应用更容易更新,而且可以添加新的功能。

今天,我们发布了用于构建高负载应用程序的开源用户框架。对我们来说,这是分享我们所积累的开发微服务经验的一个重要途径。GitHub 仓库包含有源代码、文档、示例、创建自己服务的模板(配置了 CI、构建和测试环境),以及动态配置服务。所有这些都是在 Apache 2.0 许可下发布的。

Yandex 表示,单体应用程序有以下的这些缺点:

  • 将所有的代码整合在一个应用程序内,在这样庞大的代码库中,构建和测试可能需要几个小时,而部署可能需要一整天的时间。
  • 不同部分代码的密切关联,你必须在代码审查中投入大量的精力,以使不同部分不会变得混乱。
  • 脆弱性:一个模块的改变会影响另一个模块
  • 模糊的责任区:在开发过程中,谁对产生的模块负责并不清晰

该框架具有可靠和便利这样的特点,里面提供了开发、诊断、监控、调试和实验所需的一切。userver 目前支持 Ubuntu、Debian、Fedora、Arch、Gentoo、macOS 系统;x86、x86_64、AArch64、Arm 架构;GCC 8+ 和 Clang 9+ 编译器;以及 C++ 17、C++ 20、C++ 23。

关于组成,提到了包括与 DBMS 异步工作的驱动(MongoDB、PostgreSQL、Redis、ClickHouse、MySQL),为各种协议异步工作的客户端和服务器(HTTP、HTTPS、GRPC、TCP、UDP、TLS)。管理同步和访问系统能力的低级基元,以及处理缓存、任务、分布式锁、跟踪、指标、统计和JSON/YAML/BSON格式数据的高级组件,此外,它还支持在不停止服务的情况下,即时改变服务配置。

除了 userver,Yandex 在今年还开源了多个项目,以这样的形式公开了多项其开发的关键技术,例如,能够每秒处理数百万个请求的 YDB 分布式数据库管理系统,以及具有千亿参数的语言模型 YaLM 100B。在更早之前,Yandex 还开源了在搜索和其他服务中使用的 CatBoost 机器学习库。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/205008/yandex-open-source-userver

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。