云的优缺
优点
- 基础设施成本优化:通过云原生技术,可以减少对传统基础设施的投入,实现开发产品线的快速建设和灵活裁撤。
- 运营效率提升:降低设备运营成本,缩短产品迭代周期,使产品扩缩更加便捷,提高整体运营效率。
- 运维成本与效率:显著减少运维人力成本,通过高效的运维定位和故障排除,实现系统升级和降级的平滑过渡
缺点
- 多租户支持与隔离:虽然支持多租户架构,但隔离性可能不够彻底,需要进一步优化。
- 自主研发挑战:自主研发可能面临经验不足的问题,需要通过学习和实践积累经验。
- 标准化程度:尚未形成完整的标准化流程,这可能影响产品的稳定性和可预测性
云原生
定义
云原生是一种构建和运行应用程序的方法,旨在充分利用云计算模型的优势。它支持应用程序的弹性扩展,由微服务架构、DevOps实践和以容器技术为代表的敏捷基础设施组成。
关键技术
- 微服务架构:采用高内聚、低耦合的方式,实现服务间的有效交互。
- 容器技术:作为微服务的理想载体,提供一种自包含的打包和部署方式。
- 容器编排:解决微服务在生产环境中的部署和管理问题,确保服务的高可用性。
- 服务网关:作为关键基础设施组件,负责服务间的通信和路由。
- 不可变基础设施:提高发布效率,简化环境管理和快速扩展。
- 声明式API:允许用户声明期望达到的状态,系统将自动调整以符合这一状态,与命令式API相比,减少了直接操作的复杂性。
常见API方式对比
- 声明式API:用户可以指定期望的状态,系统自动实现状态转换。
- 命令式API:用户直接发出命令,如启动容器、进入容器或删除容器等,需要用户管理操作的具体步骤
云原生关键技术
云原生关键技术包括:微服务,容器,容器编排,服务网络,不可变基础,声明式API。
微服务
应用程序构建为一组小型、独立的服务,每个服务实现特定的业务功能,并通过轻量级的通信机制(通常是HTTP RESTful API)进行交互服务与服务间通过“高内聚低耦合”的形式交互。
微服务典型架构包括:
-
服务重构:单体改造成符合业务的微服务架构。
- 目的:将传统的单体应用分解为一组更小、松散耦合的服务。
- 方法:识别业务领域,根据业务能力对应用进行模块化。
- 优势:提高了灵活性和可维护性,简化了部署和扩展过程。
-
服务注册与发现:微服务模块间的服务生命周期管理。
- 目的:管理微服务的生命周期,包括服务的注册、发现和注销。
- 实现:使用服务注册中心(如Consul, Eureka)来维护服务实例的列表。
- 功能:服务实例在启动时向注册中心注册自己,在停止时注销。
-
服务网关:身份认证、路由服务、限流防刷、日志统计。
- 身份认证:验证服务请求者的身份。
- 路由服务:将请求路由到正确的服务实例。
- 限流防刷:控制访问频率,防止服务过载。
- 日志统计:收集和分析服务请求的日志数据。
-
服务通信:通信技术方案如,RPC vs REST vs 异步消息。
- RPC(Remote Procedure Call):远程过程调用,如gRPC。
- REST(Representational State Transfer):基于HTTP的方法,如GET、POST。
- 异步消息:使用消息队列(如RabbitMQ, Kafka)进行服务间的异步通信。
-
可靠性:服务优雅降级,容灾,熔断,多副本。
- 服务优雅降级:当服务部分失败时,系统能够继续运行,提供部分功能。
- 容灾:系统能够在部分组件失败的情况下继续运行,保证服务的可用性。
- 熔断:在服务间调用失败时,防止连锁反应,快速失败以保护系统稳定。
- 多副本:运行多个服务实例,提高服务的可用性和容错能力。
容器
打包应用的方式,将应用中的所有软件和软件所依赖的环境打包,实现跨平台部署
容器关键技术:namespace视图隔离、Cgroups资源隔离 Union File System联合文件系统
容器编排
自动化管理和协调容器的系统,专注于容器的生命周期和调度
核心功能
容器调度,根据策略将容器与节点绑定
资源管理 CPU MEM Ports Device
服务管理 负载均衡 健康检测
服务网格
服务网格是一种微服务间通信的基础设施层技术,它将通信逻辑从应用层解耦出来,实现网络通信的抽象化管理。服务网格的实现通常依赖于一组轻量级的网络代理,即Sidecar代理,它们与应用程序代码紧密部署,对应用透明无感知。
Service Mesh 特点:
- 通信中间层:作为应用程序间通信的中间层,管理服务间的交互。
- 透明代理:轻量级网络代理,对应用程序完全无感知,不侵入业务逻辑。
- 功能解耦:将重试、监控、追踪和服务发现等功能从应用中解耦,由服务网格统一处理。
不可变基础设施
不可变基础设施是一种部署哲学,其核心在于一旦系统部署,不再对其做任何更改。任何必要的更新或修改都通过部署新的基础设施来实现,从而保证了部署的一致性和可重复性。
声明式API
声明式API允许用户定义期望达到的状态,系统将自动调整以符合这一状态。这种方式简化了操作复杂性,因为用户只需关心最终状态,而无需管理中间过程。
DevOps
DevOps是开发(Development)和运维(Operation)的结合,它通过一系列实践和工具,促进开发、技术运营和质量保障部门之间的协作与整合。
技术层面上,DevOps可以促进研发与运维团队的协作;业务层面上,DevOps提供的一致容器镜像,持续集成,持续交付,持续部署,持续测试可以更快地交付客户价值。
包括:
- 文化:建立开发与运维团队之间的共识和合作文化,消除隔阂。
- 自动化:自动化软件开发和交付流程,包括持续集成、持续交付、持续部署,以及云原生环境下的基础设施自动化。
- 度量:通过客观的度量和监控来验证流程和变更的效果,确保按预期进行。
- 共享:开发和运维团队共享知识基础,参与对方的工作流程,如开发参与运维值班,运维参与架构设计。
DevOps不仅是一种技术实践,更是一种文化和哲学,它强调团队协作、自动化和持续改进,以实现更快、更可靠地交付价值给客户。