• 云原生原则及关键技术


    开源和商业的平台软件很多,基本上都是基于容器和Kubernetes的生态实现,涵盖CMDB、自动化运维、CI、CD、GitOPS、DevOps等众多领域。云原生是什么?为什么选择云原生?云原生能为我们带来那些好处?

    1 云原生交互景观

    在这里插入图片描述
    参考地址:
    https://landscape.cncf.io/
    https://landscape.cncf.io/images/landscape.png

    2 云原生架构有特征

    符合12模式(Twelve-Factor App)

    1. 基准代码
      一份基准代码,多份部署
    2. 依赖
      显式声明依赖关系
    3. 配置
      在环境中存储配置
    4. 后端服务
      把后端服务当作附加资源
    5. 构建,发布,运行
      严格分离构建和运行
    6. 进程
      以一个或多个无状态进程运行应用
    7. 端口绑定
      通过端口绑定提供服务
    8. 并发
      通过进程模型进行扩展
    9. 易处理
      快速启动和优雅终止可最大化健壮性
    10. 开发环境与线上环境等价
      尽可能的保持开发,预发布,线上环境相同
    11. 日志
      把日志当作事件流
    12. 管理进程
      后台管理任务当作一次性进程运行

    微服务架构(Microservices):独立部署的服务,一次只做一件事

    自助服务敏捷基础设施(Self-Service Agile Infrastructure):用于快速、可重复和一致地提供应用环境和服务的平台

    面向API接口的通信(API-based Collaboration):服务之间的交互基于接口,而不是本地方法调用

    抗脆弱性(Anti-Fragility):系统能抵御高负载

    3 云原生架构原则

    • DevOps
    • Microservices
    • Containers
    • Security

    4 云计算的四个层次

    4.1 IaaS(基础架构即服务)

    IaaS(Infrastructure as a Service,基础架构即服务)是基础层。在这一层,通过虚拟化、动态化将IT基础资源(计算、网络、存储)聚合形成资源池。资源池即计算能力的集合,终端用户(企业)可以通过网络获得自己需要的计算资源,运行自己的业务系统。这种方式使用户不必自己建设这些基础设施,而是通过付费即可使用这些资源。

    4.2 PaaS(平台即服务)

    在IaaS层之上的是PaaS(Platform as a Service,平台即服务)层。这一层除了提供基础计算能力,还具备了业务的开发运行环境,提供包括应用代码、SDK、操作系统以及API在内的IT组件,供个人开发者和企业将相应功能模块嵌入软件或硬件,以提高开发效率。

    4.3 SaaS(软件即服务)

    最上层是SaaS(Software as a Service,软件即服务)。实际上,SaaS在云计算概念出现之前就已经存在,并随着云计算技术的发展得到了更好的发展。SaaS的软件是“拿来即用”的,不需要用户安装,软件升级与维护也无须终端用户参与。同时,它还是按需使用的软件,与传统软件购买后就无法退货相较具有无可比拟的优势。

    4.4 DaaS(数据即服务)

    越来越多的数据沉淀、抽象形成了新的服务——DaaS(Data as a Service,数据即服务)。数据聚合抽象,把数据转换成通用信息,从而为公众提供公共信息服务。

    5 DevOps常用工具

    Devops 目的是实现快速交付价值且具有持续改进能力,其核心是加快软件交付流程。

    1. 项目管理(PM):tapd、禅道、自研等;
    2. 代码管理:gitlab;
    3. 持续集成CI(Continuous Integration):gitlab ci;
    4. 持续交付CD(Continuous Delivery):gitlab cd;
    5. 镜像仓库:VMware Harbor,私服nexus;
    6. 容器:Docker;
    7. 编排:K8S;
    8. 服务治理:Nacos;
    9. 脚本语言:Python、go;
    10. 日志管理:Cat+Sentry,还有种常用的是ELK、CLS;
    11. 系统监控:Prometheus;
    12. 负载均衡:Nginx;
    13. 网关:Kong,SpringCloud Gateway;
    14. 链路追踪:SkyWalking;
    15. 产品和UI图:Axure、蓝湖、墨刀;
    16. 公司内部文档:Confluence、showdoc。

    6 云原生的关键技术

    在这里插入图片描述

    6.1 容器

    容器雏形最早出现在 1979 年叫 Chroot Jail ,定义于 2008 年 即 LXC(Linux Container),将 Cgroups 的资源管理能力和 Namespace 的视图隔离能力组合在一起,实现进程级别的隔离。

    6.2 Kubernetes

    声明式的 API 与可扩展(CRD + Controller)的编程接口,先进的设计思想使其在容器编排大战中(Kubernetes、Swarm、Mesos)处于王者地位,成为容器编排系统的事实标准。

    6.3 微服务(Microservices)

    每个功能都被称为一个独立的服务,可以单独构建和部署,其中某个服务出现故障也不会影响其他的功能模块,这句体现了其针对特定服务发布,影响小,风险小等特点。

    6.4 无服务(Serverless)

    每个功能都被称为一个独立的服务,可以单独构建和部署,其中某个服务出现故障也不会影响其他的功能模块,这句体现了其针对特定服务发布,影响小,风险小等特点。

    6.5 DevOps

    提高交付的质量和效率。

    6.6 ServiceMesh

    ServiceMesh 核心是业务逻辑与非业务逻辑解耦,实现开发只需关注业务逻辑的伟大目标。将一大堆和业务逻辑无关的客户端 SDK(如服务发现,路由,负载均衡,限流降级等)从业务应用中剥离出来,放到单独的 Proxy(Sidecar) 进程中,之后下沉到基础设施中间件 Mesh(类似 TDDL 到 DRDS 的模式)。

    6.7 基础设施即代码(IaC)

    将基础设施及其完整的生命周期(创建、销毁、扩容、替换)以代码的方式进行描述、通过相应的工具(terraform、ROS、CloudFormation等)编排执行和管理。比如应用用到的所有基础资源(如:ECS、VPC、RDS、SLB、Redis 等),无需在控制台不停的切换页面申请购买,只需定义相应代码,一键创建。

    6.8 Cloud IDE

    云端 IDE 深入研发的整个生命周期,云端可提供丰富的代码库模板,通过分布式运算提升编译速度,以 “智能” 方式实现代码推荐、代码优化、自动扫描发现 BUG、识别逻辑和系统性风险。

  • 相关阅读:
    34 | Nginx:高性能的Web服务器
    [答疑]角色和状态的区别
    时间轮(Timing Wheel)案例和原理
    C++ Qt开发:Slider滑块条组件
    数据和代码要分清(java中如何避免安全问题)
    数据架构最新趋势:Data Fabric 和 Data Mesh (值得收藏)
    文件上传漏洞第十六关十七关
    【驱动开发】基于GPIO子系统编写LED驱动,编写应用程序进行测试设置定时器,5秒钟打印一次hello world
    使用go test测试总结
    vue2 Ant-design-vue <a-table 实现整列合并,第一列整列合并为一个单元格
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126444322