万字长文揭穿你,根本就不懂云原生!( 五 )


4.OrchestrationManagement
这一层主要负责容器平台的编排和调度 , 包括服务的发现和治理 , 远程调用 , 服务代理 , 微服务治理等组件 , 包括:计划与编排:在这个领域 , Kubernetes是当仁不让的头号玩家 , 目前基于Kubernetes的容器生态得到了迅速发展 。其它的编排工具还包括Mesos和DockerSwarm等 。协调与服务发现:分布式计算中很重要的一点就是各个服务之间的协同以及服务发现(或节点发现的问题) , 从老牌的ZooKeeper到近年来在很多互联网厂商和应用中流行的Consul(DockerSwarm默认使用) , 都可以用于分布式服务的发现和配置 , Kubernetes默认使用的则是CoreOS旗下的etcd 。远程过程调用:微服务间进行通信 , 通常有两种方式 , 一种是HTTPREST-JSON的方式 , 另一种为RPC方式 , 两者相比 , RPC方式效率更高 。常用的包括Google开源的GRPC、Apache旗下的Thrift框架、Netflix开源的自带负载均衡的Ribbon和Avra数据序列化框架 。
5.AppDefinitionandDevelopment
这一层就是容器平台上运行的具体应用和工具了 , 可以理解为容器平台的应用商店 。根据应用的不同作用的使用场景 , 可以大致分为以下几种类型:数据库(例如MySQL、MariaDB、MongoDB、PostgreSQL、Cassandra等)、流处理和消息队列(例如Spark、Storm、RocketMQ、Kafka、RabbitMQ等)、应用和镜像制作(用于将应用封装成标准镜像 , 使应用能在标准的容器平台上运行 , 例如Helm、DockerComposer、Packer等)、CI/CD(最常见的Jenkins、Atlassian公司开发的Bamboo等) 。
6.Platform
从横向上看 , 整个云原生还包括众多的经过认证的平台供应商 。
7.ObservabilityandAnalysis
这个部分包含了大量用于对平台进行监控(Prometheus、Nagios、Grafana、Zabbix等)、日志(Fluentd、ElasticSearch、Logstash)、以及追踪(Jaeger)的工具 。
综上所述 , CNCFLandscape全景图中包含了CNCF社区成熟或使用范围较广、具有最佳实践的产品和方案供用户在实际应用中选择 , 而且该生态还在快速发展中 。
六、云原生实施路径
关于如何实现云原生应用 , CNCF给出了比较详细的利用开源软件和云原生技术的参考路线图 , 如下图所示:
万字长文揭穿你,根本就不懂云原生!
文章图片

文章图片
图5:CNCF云原生技术路线图
整个路线图分成了十个步骤 , 每个步骤都是用户或平台开发云原生技术在实际环境中落地时 , 需要循序渐进思考和处理的问题:
1.容器化
目前最流行的容器化技术是Docker , 你可以将任意大小的应用程序和依赖项 , 甚至在模拟器上运行的一些程序 , 都进行容器化 。随着时间的推移 , 你还可以对应用程序进行分割 , 并将未来的功能编写为微服务 。
2.CI/CD(持续集成和持续发布)
创建CI/CD环境 , 从而使源代码上的任意修改 , 都能够自动通过容器进行编译和测试 , 并被部署到预生产甚至生产环境中 。
3.应用编排
Kubernetes是目前市场上应用编排领域被最广泛应用的工具 , HelmCharts可以用来帮助应用开发和发布者用于升级Kubernetes上运行的应用 。
4.监控和分析
在这一步中 , 用户需要为平台选择监控、日志以及跟踪的相关工具 , 例如将Prometheus用于监控、Fluentd用于日志、Jaeger用于整个应用调用链的跟踪 。
5.服务代理、发现和治理
CoreDNS、Envoy和LInkerd可以分别用于服务发现和服务治理 , 提供服务的健康检查、请求路由、和负载均衡等功能 。
6.网络
Calico、Flannel以及WeaveNet等软件用于提供更灵活的网络功能 。
7.分布式数据库和存储