什么是CNCF&云原生

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、CNCF简介

CNCF全称Cloud Native Computing Foundation云原生计算基金会成立于2015年12月11日是一个开源软件基金会它致力于云原生Cloud Native技术的普及和可持续发展。

成立CNCF这个组织的初衷或者愿景简单说

  • 推动云原生计算可持续发展
  • 帮助云原生技术开发人员快速地构建出色的产品

CNCF Landscape路线图

CNCF Landscape最重要的产出包括一个路线图和一个全景图。路线图Trail Map是CNCF对云原生用户使用开源项目以及云原生技术的推荐过程。在路线图的每个步骤中用户都可以选择供应商支持的产品或自己动手使用开源项目。

img

整个路线图分成了十个步骤每个步骤都是用户或平台开发者将云原生技术在实际环境中落地时需要循序渐进思考和处理的问题

  1. 容器化。目前最流行的容器化技术是Docker你可以将任意大小的应用程序和依赖项甚至在模拟器上运行的一些程序都进行容器化。随着时间的推移你还可以对应用程序进行分割并将未来的功能编写为微服务。
  2. CI/CD持续集成和持续发布。创建CI/CD环境从而使源代码上的任意修改都能够自动通过容器进行编译、测试并被部署到预生产甚至生产环境中。
  3. 应用编排Kubernetes。Kubernetes是目前市场上应用编排领域被最广泛应用的工具Helm Charts可以用来帮助应用开发和发布者用于升级Kubernetes上运行的应用。
  4. 监控和分析。在这一步中用户需要为平台选择监控、日志以及跟踪的相关工具例如将Prometheus用于监控、Fluentd用于日志、Jaeger用于整个应用调用链的跟踪。
  5. 服务代理、发现和治理。CoreDNS、Envoy和LInkerd可以分别用于服务发现和服务治理提供服务的健康检查、请求路由、和负载均衡等功能。
  6. 网络。Calico、Flannel以及Weave Net等软件用于提供更灵活的网络功能。
  7. 分布式数据库和存储。分布式数据库可以提供更好的弹性和伸缩性能但同时需要专业的容器存储予以支持。
  8. 流和消息处理。当应用需要比JSON-REST这个模式更高的性能时可以考虑使用gRPC或者NATS。gRPC是一个通用的RPC远程调用框架类似各种框架中的RPC调用NATS是一个发布/订阅和负载均衡的消息队列系统。
  9. 容器镜像库和运行环境。Harbor是目前最受欢迎的容器镜像库同时你也可以选择使用不同的容器运行环境用于运行容器程序。
  10. 软件发布。最后可以借助Notary等软件用于软件的安全发布。

CNCF全景图Landscape

CNCF Landscape路线图从实践步骤上帮助用户梳理了整个云原生应用的最佳流程。然而整个实践过程中的每个环节用户都需要了解有哪些具体的软件和产品选择这就是CNCF Landscape全景图发挥作用的地方了(https://landscape.cncf.io/)。

img

这张全景图试图从云原生的层次结构以及不同的功能组成上让用户了解云原生体系的全貌并帮助用户在不同组件层次去选择恰当的软件和工具进行支持。

二、云原生简介

云原生cloud native是一种基于云的基础之上的软件架构思想,以及基于分布部署和统一运管的分布式云以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。

  • 云原生从字面意思上来看可以分成云和原生两个部分。
  • 云是和本地相对的传统的应用必须跑在本地服务器上现在流行的应用都跑在云端云包含了IaaS,、PaaS和SaaS。
  • 原生就是土生土长的意思我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的要充分利用云资源的优点比如️云服务的弹性和分布式优势。

如何开发出适合于在云环境里面部署的程序呢其实主要是需要遵循几个开发原则

img

1容器化(docker+k8s)

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了每个服务都被无差别地封装在容器里可以被无差别地管理和维护现在比较流行的工具是dockerk8s

2微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚与微服务对应的是我们传统的单体应用。微服务还建议使用RESTful API通信。

3无服务Serverless

无服务器架构并不是说未来不再需要服务器而是不再着重关注底层的基础架构更多的注意力可以放在和业务更相关的一些逻辑实现上。例如一些函数的代码片段平台自动根据负载按需部署和启动以及自动伸缩代码逻辑来满足业务处理的需求。

4DevOps

DevOpsDevelopment和Operations的组合词即开发、运维一体化。涉及软件在整个开发生命周期中的持续开发持续测试持续集成持续部署和持续监控。

  • 维基百科对DevOps的定义比较拗口。其实往简化里讲DevOps是提倡开发和IT运维之间的高度协同从而在完成高频率部署的同时提高生产环境的可靠性、稳定性、弹性和安全性。
  • 从另外一个维度广义上来说DevOps不仅需要打通开发运维之间的部门墙我们认为DevOps更多的需要从应用的全生命周期考虑实现全生命周期的工具全链路打通与自动化、跨团队的线上协作能力

5Service Mesh(服务网格)

Service Mesh是近年兴起的一个话题在容器微服务的基础上通过Service Mesh可以让用户更精细、更智能的去管理服务之间的通讯。ServiceMesh社区的旗舰项目Istio当前的热度正在迅速的飙升。

6云Cloud

云是云原生的基础没有云也就没有云原生。没有对云正确地理解也不可能对云原生有正确的打开方式。对于非技术人员来说至少要理解云的多种不同的服务模型比方IaaS、PaaS、SaaS以及各种服务模型的应用场景和价值。

【总结】

因此我们也可以简单地把云原生理解为云原生 = 容器化(docker+k8s) + 微服务Microservices+ 无服务Serverless + DevOps + Service Mesh(服务网格) + 云Cloud

三、总结

  • 我们不难发现云原生是一个很宽泛的概念想要开发一个支持云原生的应用并不难可能就是简单的实现可基于容器部署、使用Kubernetes进行编排与调度集成CI/CD工具以及Prometheus监控工具等
    个支持云原生的应用并不难可能就是简单的实现可基于容器部署、使用Kubernetes进行编排与调度集成CI/CD工具以及Prometheus监控工具等
  • 但是想要构建一个真正云原生的系统要求我们考虑到系统的方方面面我们不仅要掌握简单的开发技能还要在SDN、SDS、分布式调度甚至计算机基础架构等诸多领域有所了解要能够根据场景制定出最合适的架构方案。各方面的综合能力的提升才能在云原生时代构建出云原生就绪的应用或系统
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6