一、业界对于云原生的定义
总结下来,业界对于云原生涉及的范围大致会定义在 4 个方面:
- 方法论和设计原则
- 12 factor +3
- 微服务架构模式
- 声明式 API
- 不可变基础设施
- 技术和架构
- 微服务架构
- 服务网格
- Serverless
- 容器和容器编排
- 流程规范
- 基础设施和工具
- 云服务:如RDS、S3
- 以容器技术为基础的云原生基础设施
- Kubernetes、Docker、Helm
- Etcd
- OPA、Hydra
- Prometheus
- Istio
下面看看一些具有代表性的公司和组织对于「云原生」相关的定义。
Gartner
18 February 2020,《Hype Cycle for Cloud Computing, 2019》
如果某事物是为利用云特征而创建的,则它被认为是云原生的。
这些云特征是云计算最初定义的一部分,并且包括作为服务交付的功能,这些功能具有可伸缩性和弹性,通过使用进行计量,基于服务,在互联网技术中无处不在并共享。
术语“云原生”主要用作形容词。 例如,您可以拥有云原生架构,基础架构,应用程序或操作。
整理定义并明确目标是利用云原生的关键。普遍使用三种相互矛盾的定义:
- 第一含义是最常见的。 基本上,将云原生解释为原生使用云平台功能。 因此,例如它可以是平台即服务,可用性区域或无服务器。 因此,如果您使用的是 Amazon,那么您将使用 AWS 的本机功能,例如RDS,Lambda 和 Beanstalk。
- 第二个含义是关注特定技术,例如容器和Kubernetes。 这由名为 Cloud Native Computing Foundation(CNCF)的组织推动,该组织推广了这些技术。
- 第三种含义是本质上具有架构意义的含义。 其中一个来源是 GTP 的 LIFESPAR 缩写。 另一个示例是 12因子应用程序。 这种方法在那些非常了解架构方法的人中很流行,但绝不是该术语的最常见用法。
二、云原生技术解决的问题
云原生架构解决应用的核心技术问题是:可移植性、可扩展性、可靠性和可维护性(易用性)。
云原生让云计算标准化、降低大规模自动化运维门槛:
- 通过「容器」技术标准化应用分发和应用交付,解耦应用与底层运行环境
- 通过「Kubernetes」标准化资源调度和资源编排,屏蔽底层架构差异
- 通过「微服务架构」标准化应用架构抽象,解耦业务与技术
- 通过「服务网格」标准化服务通信和服务治理

- 为了解决单体架构应对业务的「复杂度问题」,使用微服务架构,标准化应用架构抽象、解耦业务与技术。
- 为了解决微服务间「通讯管理和异常处理问题」,使用服务治理框架 + 日志、监控、链路跟踪。
- 为了解决微服务架构下大量应用「部署问题」,使用容器,标准化应用分发与交付、解耦微服务与底层运行环境。
- 为了解决容器的「编排和调度问题」,使用 Kubernetes,标准化资源调度与编排、屏蔽底层架构差异。
- 为了解决微服务框架的「侵入性问题」,使用 Service Mesh,标准化服务通信与治理。
- 为了让 Service Mesh 有「更好的底层支撑」,将 Service Mesh 运行在 k8s 上。
- 为了解决应用「持续交付问题」,引入了 Devops。
三、云原生的价值
面向产品和研发:
- 降低开发复杂度:架构能力由基础设施提供,包括可移植性、可扩展性、可靠性、安全性、可维护性等,基础能力开箱即用,研发团队在研发过程中能够更专注于业务
- 降低研发依赖:通过微服务架构降低微服务间开发依赖;通过微服务治理的基础设施降低微服务开发与部署 (运维) 间依赖
- 提升问题处理效率:容器化部署保证环境一致,标准化应用的分发与交付,能够在一定程度规避环境问题对于排错的影响;链路跟踪、指标监控、日志分析等技术提升系统可观测性,使得更容易全面分析和定位系统问题
面向客户 (云服务的价值):
- 降低拥有成本,更快地实现价值:客户能够按需采购,以及快速地、平滑地进行业务能力扩展
- 降低风险:服务无故障、用户业务不中断,客户无需担心和关注服务的可靠性以及考虑相关的故障应对
- 易维护:客户/用户无需关注服务的维护,可以专注在服务使用和业务价值实现
四、AnyShare Family 7 云原生架构
AnyShare Family 7 云原生业务架构
1. 所有的服务将对于其他服务的访问信息,通过配置文件,配置化;部署阶段由部署子系统根据环境进行配置
2. 基于原有的主机 Nginx 来实现对外的连通性
3. 基于容器的服务基于 Proton 负载均衡来实现容器之间的连通性
4. 通过 Nginx 来代理 Proton 负载均衡服务暴露的地址与基于主机的应用服务暴露的地址
1)基于主机的应用服务之间基于 Nginx 来实现连通性
2)基于主机的应用服务与基于容器的应用服务之间基于 Nginx 来实现连通性
服务模块化架构

• 每个模块独立部署
• 部署控制台负责通过整个Proton Runtime 云原生架构来进行资源分配
• Proton Runtime 云原生可以指定资源对每个模块进行部署
• Proton Runtime 云原生提供高可靠的高可用服务。
• 应用层通过Proton容器服务扩展软件层。
• 扩展方式: 容器根据配置创建对应硬件资源的服务,能提高硬件资源最大利用率。
• 基础应用层,每个数据存储的服务对硬件的利用率不同,对应资源池不足,只需要扩展对应的资源池。