云原生的主要特征

进一年我们都在使用云原生框架
SpringCloud微服务开发项目,敏捷快速
部署在容器中,解决部署环境差异
使用DevOps自动部署,减少运维压力

微服务

  • 业务功能单一但完整
  • 只对外提供必要的服务接口
  • 轻量服务编排,灵活调度
  • 弹性扩缩
  • 便于开发以及快速更新

容器

  • 资源使用效率高
  • 启动快,沙箱机制,容器集
  • 群编排调度
  • 容器集群的服务注册发现
  • 镜像分层和打包
  • 镜像仓库分发,队开发人员友好

DevOps

  • 持续集成
  • 持续交付
  • 解决部署环境差异问题

云原生的发展

传统

  • 单节点
  • 手工部署

标准

  • 虚拟化
  • 规范化

成熟

  • 位置无关
  • 自动部署

云高效

  • 容器化
    镜像小、启动速度快、资源浪费少
    更快的故障恢复、应用迁移、弹性扩展、应用版本升级回滚
  • 双活部署
    实现应用的快速安装部署

云高级

  • 应用自描述
    基于标准应用建模,可跨云平台部署运行,不影响服务等级
  • 应用自维护
    故障自愈、自主负载均衡等
    实现基础设施无关的应用健壮性

云原生(Cloud Native)

  • 微服务化
    各服务独立升级维护
    各服务分别设置策略,控制粒度更精细,有利于把资源分配到特定的任务上,提高效率
  • 编排调度
    通过对多个微服务灵活编排,组装成不同的应用

云原生高级

  • 云原生开发平台
    应用开发平台自动生成微服务架构,代码自动生成,自动创建微服务编排信息
  • 标准化框架、服务、控件
    风格统一,便于操作
  • 代码自动化生成
    自动对接DevOps系统,完成从应用微服务化、代码自动生成、到应用上架全程自动化

云原生高级规划

  • 应用开发基于标准规范的开发平台
  • 使用标准框架、服务、UI控件、基础服务仓库
  • 应用引擎根据开发人员配置,自动生成所需微服务、微服务镜像定义文件、创建微服务编排信息
  • 开发人员只需要在微服务代码架构中做业务逻辑实现
  • 提交代码、编排信息到平台版本仓库,触发DevOps平台完成镜像创建、CI/CD、镜像上传和应用上架

容器

本质是一个与宿主机系统共享内核,但与系统中的其他进程资源相隔离的执行环境。
Docker容器,是当前认可度高、社区和生态最活跃的开源容器技术。

优势

  • 占用资源少,镜像小,启动快
  • 灵活的容器运行调度机制
  • 镜像机制,与运行环境无关,易于迁移复制
  • 沙箱机制,仅开放必要的端口提供访问
  • 允许实例简单、快速的创建、扩展、销毁

调度策略

  • 默认选择最空闲的节点运行
  • 在指定的节点或标签节点运行
  • 亲和性(反亲和性)所有特定标签在同一节点运行
  • 每个节点运行单一实例

故障恢复策略

  • 设置探测时间间隔
  • 设定故障检测方式:端口检测(TCP、HTTP)、进程检测
  • 设定容器数量限制,低于限值,则微服务对应容器重新创建

弹性扩缩策略

  • 基于资源的弹性扩缩
    基于容器内存/CPU占用大小,如果持续超过指定时长,容器数量增加或减少。
  • 基于时间段的弹性扩缩
    基于时间段,在高峰/低峰调整容器数量,自动增加或减少

运维

DevOps
Development + Operations 及 开发+操作
核心理念就是消除开发和操作之间的隔阂,提高软件迭代和交付上线的速度和质量

技术

  • git
    统一代码管理
  • Harbor
    镜像仓库+日志管理(Docker+k8s)
    harbor搭建与使用
  • Junit
    自动单元测试
  • sonar Qube
    自动漏洞扫描
  • Jenkins
    自动化部署

生命周期

源码管理(git)=》单元测试(Junit)=》漏洞扫描(sonar Qube)=》镜像仓库(Harbor)=》自动化部署(Jenkins)=》日志管理(k8s)

学习参考

Docker 进阶之路

更多推荐