跳到主要内容

概述

Taurus是硕望团队从事软件开发多年来,一路践行云原生理念过程中,沉淀下来的一组包含规范,容器基础设施,DevOps工具链,微服务架构基础设施,开发框架、API,以及基础功能组件等云原生软件生命周期要素的集合。

Taurus中,既包含工作方法、开发框架,也包括就绪的基础设施,工具链,以及开箱即用的基础能力组件等。

硕望团队在多年的软件开发中,深刻体会到云原生理念对软件开发带来的颠覆性变革,较早投身于微服务架构的云原生开发领域,从最早的阻塞式Spring Cloud微服务架构,到后来引入响应式开发,提升架构性能和稳定性,到现在的基于RSocket Broker Cluster的全栈非阻塞的响应式微服务架构,Taurus历经三次较大规模的迭代,日臻稳定和成熟。

云原生概述​

云原生已成为现代企业构建面向未来的应用的技术基础,关于云原生在CNCF中的定义请参考:https://github.com/cncf/toc/blob/main/DEFINITION.md

❝云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。 ❞

Taurus的目标​

Taurus本身就是云原生各项目标的落地实践,因此其目标与云原生的目标一致:

  • 帮助企业快速开发出具有下列特征的云原生应用
    • 可弹性扩展 - Taurus的云原生开发框架可在代码级确保应用具备可扩展的能力,结合成熟的容器化编排工具,可按实际运行状况自动或手工扩容、缩容
    • 高性能 - 响应式开发结合RSocket进程间通讯协议,使应用具有良好的吞吐量和延时指标
    • 可靠稳定 - Taurus应用通过响应式和RSocket的背压机制,使其自身具备持续稳定运行,故障自处理能力;同时Taurus服务网格提供完备的断路,限流,隔离,重试以及超时机制,确保整个集群的持久稳定
    • 易管理 - 易于进行部署、启动、停止、移除等生命周期管理操作
    • 可观察 - 可按度量指标、日志、追踪数据等维度,对应用的健康和运行状况进行观察和评估
    • 松耦合 - 应用与应用,应用与环境、基础设施不相互绑定,以松耦合方式相互依赖
  • 应用可灵活部署运行在公有云、私有云和混合云等新型动态环境中
  • 通过敏捷迭代开发来实现持续的功能更新
  • 结合全链路的自动化DevOps,可对应用进行频繁和可预测的重大变更,对不断变化的业务需求做出快速响应

云原生技术的落地实践​

Taurus采用以下几个方面的技术落地方案,来确保上述目标的达成:

  • 容器
    • 容器和容器编排技术对于云原生的意义巨大,容器为云原生应用提供了一个轻量级的运行平台;易于移植,一次构建,随处部署;容器编排技术可以将容器部署到一个很大的集群的同时,还能为应用提供弹性伸缩,故障转移的能力,实现了容器上应用的高可用。提升应用部署的自动化能力和快速部署的能力。
    • Taurus采用Kubernetes及其携带的容器运行时作为容器化基础设施
  • 服务网格
    • 服务网格(Service Mesh)是处理服务间通信的基础设施层。它负责构成现代云原生应用程序的复杂服务拓扑来可靠地交付请求
    • Taurus采用基于RSocket协议和Broker集群为核心的协议级Service Mesh(与Istio的平台级有所区别)
  • 微服务
    • 相对于传统单体应用,微服务将应用拆分为小的独立部署的服务的方式,和容器存在着天然的契合,在设计要求上,使应用具备故障转移,弹性伸缩和快速启停的能力
    • Taurus通过微服务开发框架和开发规范,使应用符合微服务设计要求,天然具备容器化云部署特性
  • 不可变基础设施
    • 传统运维的基础设施通常是申请一台或一组服务器,这些服务器承载的应用和参数是可以改变的,所以是可变基础设施(雪花服务器);不可变基础设施不同于传统的运维,服务器在部署后永远不会被修改。如果需要以任何方式更新,如版本升级或是参数配置,需要构建新服务器以替换旧服务器。在不可变基础设施中,服务器的构建通常是以镜像(Image)的方式提供的,任何一个更改都对应一个镜像(凤凰服务器)。
    • Taurus将应用最终的发布形式使用Docker构造为容器镜像,每次迭代更新都自动生成全新的镜像,在镜像级别进行发布,更新和回滚
  • 声明式API
    • 声明式API是自动化运维的核心,与命令式API不同的是,声明式API提交的是一组“声明”所期望的状态,而不是类似“停止服务”,“加载更新”,“启动服务”这样的命令序列。声明式API忽略了达成目标的过程细节,而由运维工具自行协调达成目标所需何种操作,这对自动化运维至关重要
    • Taurus在声明式API基础上进一步封装和简化,通过可视化交互即可提交状态声明

Taurus包括什么​

  • 规范
    • 团队搭建和协作规范 - 指导搭建敏捷团队,进行敏捷协作和开发
    • 文档规范 - 编码同时形成文档,可大幅提高沟通效率
    • 开发指南 - 指导开发微服务应用
  • DevOps工具链
    • 代码仓库
    • 自动化构建工具
    • 制品仓库
  • 容器基础设施
    • K8S容器运行时和容器编排
      • 自动扩容缩容
      • 故障处理
    • 镜像仓库
  • 微服务架构基础设施(服务网格)
    • Broker集群
    • 配置中心
    • 网关
    • 日志监控报警
  • 开发框架
    • 基于RSocket的微服务开发框架
    • 基于Ract/Vue的前端开发框架
    • 基于Flutter/React Native的原生App开发框架
  • 基础组件
    • 认证
    • 身份管理
    • 分布式文件管理
    • 组织机构
    • 即时通讯
    • 。。。
  • API
    • RSocket API
    • REST API