主页

索引

模块索引

搜索页面

从分布式架构到云原生架构

发展趋势

趋势:

软件改变世界
开源改变软件
云吞噬开源

互联网:

Web 1.0 业务模式
 基于流量点击赢利的单方面信息发布的
 由 All in One 的「单体式」应用架构
Web 2.0 业务模式
 由用户主导而生成内容的
 更加灵活的「分布式应用」架构
移动互联网时代
 智能手机的出现以及 4G 标准的普及
 互联网应用由 PC 端迅速转向更加自由的移动端
 概念:SOA、DevOps、容器、CI/CD、微服务、Service Mesh
 产品:Docker、Kubernetes、Mesos、Spring Cloud、gRPC、Istio
 「云原生」架构

云原生生态圈

应用定义与开发层-Application and Development

  • 数据库:

    1. 关系型DB
     Oracle
     SQL Server
     MySQL
     PostgreSQL
     DB2
     MariaDB
    2. NoSQL
     MongoDB-面向文档
     Couchbase-面向列簇
     Redis-面向k/v
     Cassandra
     HBase
     Neo4j-面向图
    3. NewSQL
     TiDB-PingCAP
     兼容SQL,更擅长分布式处理
    4. 大数据处理方案
     Hadoop
     Spark
     Druid
    
  • 流式处理:

    1. Streaming&Message
    2. 消息中间件
        CloudEvent
        NATS
        RabbitMQ
        Kafka
        OpenMessaging-阿里
    3. 流式实时计算框架
        Storm
        Flink
    

应用定义&镜像构建:

Application Definition & Image Build
应用定义
  Helm

持续集成&持续交付:

Continuous Integration & Delivery
持续交付
 Argo

编排&治理-Orchestration&Management

  • 调度与编排(Scheduling&Orchestration):

    Kubernetes
    MeshOS
    Swarm
    Nomad
    
  • 分布式协调与服务发现(Coordination & Service Discovery):

    CoreDNS-CNCF
    etcd-CNCF
    zookeeper
    Eureka-netflix
    
  • 远程过程调用(Remote Procedure Call):

    gRPC-CNCF
    Thrift-Apache
    SofaRPC
    
  • 服务代理(Service Proxy):

    Envoy-CNCF
    contour-CNCF
    BFE-baidu,CNCF
    Nginx
    Haproxy
    traefik
    f5-硬件
    
  • API网关(Api Gateway):

    apisix
    kong
    
  • 服务网格(Service Mesh):

    Istio
    Linkerd
    

运行时-Runtime

云原生存储(Cloud-Native Storage):

ROOK-CNCF

容器运行时(Container Runtime):

containerd-CNCF
cri-o
gVisor
kata
SmartOS

云原生网络(Cloud-Native Network):

CNI-CNCF
flannel
Calico
weave

供应保障层-Provisioning

自动化&配置(Automation&Configuration):

Ansible
Puppet
Chef
Apollo
KubeEdge

容器仓库(Container Registry):

Harbor-CNCF
Dragonfly-CNCF

安全与规格(Security & Compliance):

TUF-CNCF
falco-CNCF
Notary-CNCF
OpenPolicyAgent-CNCF
Clair
Twistlock

密钥管理(Key Management):

Spiffe-CNCF
Spire-CNCF
Vault

可观察性与分析-Observability and Analysis

监控-Monitoring:

Prometheus-CNCF
Thanos-CNCF
InfluxDB
Grafana
OpenMetrics

日志-Loging:

Fluentd-CNCF
Elastic
logstash

跟踪-Tracing:

Jaeger-CNCF
OpenTracing-CNCF
SkyWalking
OpenTelemetry
zipkin

混沌工程-Chaos Engineering:

ChaosMesh
ChaosToolKit
ChaosKube
ChaosBlade

观察分布式服务

核心概念:

日志(Logging)
 日志描述的是一些不连续的离散事件
指标(Metrics)
 指标可以累加,具有原子性
追踪(Tracing)
 又称分布式追踪

组合:

追踪+日志
 分布式追踪系统的早期形态
 在单次请求范围内处理信息
日志+指标
 日志分析系统的常规架构
 解析现有日志获取相关指标
追踪+指标
 指明基于追踪系统的数据分析指标
 应用间的关系以及数据流向

分布式追踪:

来源
 Google于2010年发布的论文
 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
核心实现方法
 请求上下文中增加span_id和parent_id
 用于记录请求的上下文关系

常见的开源解决方案:

Apache Zipkin
OpenTracing
 Jaeger
 OpenCensus
 OpenTelemetry

云原生基石-Kubernetes

核心组件:

etcd
 协同存储、负责保存整个集群的状态
api-server
 提供资源操作的唯一入口
 提供认证、授权、访问控制、API注册和发现等机制
controller manager
 负责维护集群状态
 执行故障检测、自动扩展、滚动更新等操作
Scheduler
 负责资源调度
 按调度策略将Pod调度到相应的机器
Kubelet
 负责维护容器的生命周期
 负责对容器存储接口(CSI)进行管理
 负责对容器网络接口(CNI)进行管理
容器运行时(Docker)
 镜像管理
 Pod和容器的运行
Proxy
 负责提供集群内部的服务发现和负载均衡

插件:

CoreDNS
 为集群提供DNS服务
Ingress Controller
 为服务提供外网入口
Prometheus
 负责资源监控
Dashboard
 提供GUI
Federation
 提供跨可用区集群

分层架构:

1. 核心层
  对外提供api构建高层应用
  对内插件式应用执行环境
2. 应用层
 负责部署和路由
 可部署的应用包括
    * 无状态应用
    * 有状态应用
    * 批处理任务
    * 集群应用等
 路由类型有
    * 服务发现
    * DNS解析
3. 管理层
 负责自动化
    * 自动扩展
    * 动态部署
 策略
    * RBAC
    * ResourceQuota
    * NetworkPolicy
4. 接口层
 kubectl命令行工具
 客户端SDK
5. 云原生生态系统
 接口层之上
 负责容器集群管理调度
6. Kubernetes内部
 CRI
 CSI
 CNI
 镜像仓库
 云供应商
 身份供应商

设计哲学:

设计模式
 命令式->声明式

ServiceMesh

前期:

Sidecar

ServiceMesh期:

不再将代理视为单独的组件
强调这些代理连接而成的网络
强调服务间通信网络的整体

参考

主页

索引

模块索引

搜索页面