什么是云原生
云原生的定义
aws:
云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代公司希望构建高度可伸缩、灵活和有弹性的应用程序,以便能够快速更新以满足客户需求。为此,他们使用了支持云基础设施上应用程序开发的现代工具和技术。这些云原生技术支持对应用程序进行快速和频繁的更改,而不会影响服务交付,为采用者提供了创新的竞争优势。
Pivotal 最新官网对云原生概括为 4 个要点:DevOps+持续交付+微服务+容器。
云原生的四要素
微服务
微服务是一种用于软件开发的架构和组织方法,将软件拆分多个小的独立服务,这些服务通过定义明确的 API 进行通信,每个服务由小型独立的团队负责。
微服务的好处:
- 灵活:各个微服务之间只通过 API 交流,各个微服务可以在不影响其他服务的情况下进行更新、发布。
- 扩缩容:各个微服务可以自己扩缩容,也解决了 80% 的用户其实只是使用了 20% 的功能的这种问题。
- 易于部署:通过 CI CD 流程,非常方便微服务的部署
- 技术自由:每一个微服务可以选中适合于解决相应问题的技术栈
- 代码复用:通过合理的拆分微服务,可以实现功能的服用,减少代码冗余
- 快速恢复:部分微服务的不可用不会导致整个软件的不可用,并且每一个微服务会部署多份,避免单点故障
容器化
Docker 是应用最为广泛的容器引擎(同类型的还有 containerd,都实现了 Container Runtime Interface,CRI 标准),是基于LXC技术实现的,容器化为微服务提供实施保障,起到应用隔离作用。K8s 是容器编排系统,用于容器管理,容器间的负载均衡。
容器化的好处,可以看海豚调度器的安装例子:
https://dolphinscheduler.apache.org/en-us/docs/1.3.6
DevOps
DevOps 整合了开发人员和运维团队,通过自动化基础设施、自动化工作流程并持续监测应用程序性能以提高协作和生产力。
DevOps 更关注于自动化测试、自动化流程、自动化设施。DevOps 强调小步快走,传统开发流程:开发人员开发完所有功能 --> 测试人员测试代码 --> 运维人员发布代码,DevOps 中会将功能拆分成一个一个的小功能,采用自动化工具快速测试、部署。
其他
serverless
Serverless 是一种云计算架构模式,旨在简化开发者对基础设施的管理,使开发者可以专注于编写代码而不必关注底层的服务器管理和配置。在 Serverless 架构中,开发者只需编写功能代码,而无需管理服务器的运行、扩展和维护。
serverless 的特点:
- 事件驱动:云函数的运行,是由事件驱动起来的,在有事件到来时,云函数会启动运行,事件的定义可以很丰富,一次 http 请求,一个文件上传,一次数据库条目修改,一条消息发送,都可以定义为事件
- 自动弹性伸缩:针对业务的实际事件或请求数,云函数自动弹性合适的处理实例来承载实际业务量,在没有事件或请求时,无实例运行,不占用资源,可以根据请求次数计费
- 无状态:上一次请求和下一次请求之间没有任何关联和依赖,每一次请求都是独立的
server mesh
在没有 server mesh 之前,所有的流量都需要通过 esb 总线或 api 网关,通过 esb 总线实现对流量的拦截和管控。
在 server mesh 中,实现去中心化的架构,将这部分的功能打包、下沉到各个微服务的边车中。
cncf
Cloud Native Computing Foundation(云原生计算基金会),它是一个致力于推动云原生技术发展和标准化的非营利性组织。CNCF 成立于 2015 年,旨在促进云原生技术的开发、共享和采用,推动云原生生态系统的繁荣和创新。官网:https://www.cncf.io。
CNCF 的主要活动和项目包括:
- 项目孵化:CNCF 孵化和扶持各种云原生技术项目,包括容器编排系统(如 Kubernetes)、服务网格(如 Istio)、容器运行时(如 containerd)、日志管理(如 Fluentd)等。
- 认证和标准:推动云原生技术的标准化和认证,建立起云原生技术的行业标准和认可体系。
- 教育和培训:提供云原生技术的教育和培训资源,包括在线课程、培训活动等,帮助开发者和组织了解和应用云原生技术。
- 社区活动:组织和举办各种云原生技术相关的社区活动和会议,如 KubeCon + CloudNativeCon 等。
总结
铁打的江山,流水的兵。
参考
https://icyfenix.cn/
https://www.bilibili.com/video/BV1oR4y1u72e
https://istio.io/latest/about/service-mesh/
https://www.youtube.com/watch?v=0yWAtQ6wYNM
https://www.cncf.io