高可用系统的构建方案:Devops & 微服务治理 | 青训营

88 阅读5分钟

高可用系统的构建方案:Devops & 微服务治理

案例: 抖音的互联网架构

在B站视频 【谷歌前系统设计师现场设计抖音系统架构 Google system design interview Design TikTok】中,描述了工程师从零构建一个未知领域app的思路。

img.png

总结为以下几个要点:

  • 明确服务规模和访问量。

  • 分析 functional requirement,如推荐系统,存储等。

  • 分析 non-functional requirement

  • 确定整体架构, 包括组件,上传数据库,下载流等

  • 进行微服务拆分和治理

  • 设计关系模型和元数据

  • 分析 Bottlenecks

  • 总结

据此分析对高可用系统的构建方案:Devops, 微服务

什么是 Devops

img_2.png

DevOps(Development and Operations的合成词)是一种软件开发和运维的文化、工程实践和方法论。它旨在通过改进开发团队与运维团队之间的合作与沟通,促进软件交付过程的自动化、持续集成和持续交付,以便更快、更可靠地交付高质量的软件产品。同时,Devops 在软件工程中也是云原生应用的开发要求,涵盖产品迭代的全周期。

以下是DevOps的一些主要概念和要求:

  1. 文化与合作:DevOps强调开发人员与运维人员之间的紧密合作、沟通和相互理解。它鼓励团队成员共享知识、职责和成功。

  2. 自动化:DevOps倡导自动化各个环节,包括构建、部署、测试和监控等。自动化可以提高效率、减少错误,并实现可重复性和一致性。

  3. 持续集成:持续集成是一种开发实践,要求开发人员频繁地将代码合并到共享代码仓库,并通过自动化构建和测试流程来验证代码的质量。

  4. 持续交付与部署:持续交付是指在通过自动化流程进行构建、测试和部署后,将软件的可交付版本持续地提供给用户。持续部署更进一步,将软件的部署过程自动化,实现每次代码变更的自动部署。

  5. 监控与反馈:DevOps要求实时监控软件运行状态、性能指标和用户反馈。这样可以及时发现问题、优化性能,并快速做出反馈和改进。

  6. 弹性与可扩展性:DevOps注重系统的弹性和可扩展性,以应对不同负载和需求的变化。可以通过自动化的方式,快速调整资源分配和启动新的实例。

  7. 安全与合规性:安全和合规性是DevOps中不可忽视的要求。安全控制和监测需内嵌于整个软件交付过程中,确保对数据和系统的保护。

什么是微服务

img_1.png

同传统单体服务,垂直服务模型不同,微服务是将一个大型应用程序拆分为一组小型、松耦合的服务,每个服务都可以独立开发、部署和扩展。这些服务之间通过轻量级的通信机制进行互联,可以使用不同的编程语言和技术栈。

微服务架构中常见的组件:

  1. 服务:微服务架构的核心组件,每个服务是一个独立的、可独立部署和运行的单元。每个服务负责特定的业务功能,并通过API或消息队列等方式与其他服务进行通信。

  2. API网关:API网关是一个入口点,用于接收外部请求并将其路由到合适的微服务。它可以进行身份验证、授权和请求转发等功能。API网关还可以提供缓存、负载均衡和流量控制等功能。

  3. 服务注册与发现:微服务需要能够相互发现和通信,服务注册与发现组件用于管理和发现不同微服务的网络位置和元数据信息。它可以帮助服务进行自动的服务注册和发现,使得服务之间能够动态地进行通信。

  4. 负载均衡:负载均衡器用于平衡请求的分发,确保每个微服务实例都可以处理适当数量的请求。它可以根据不同的策略将请求分发到不同的实例,以实现高可用性和性能优化。

  5. 消息队列/事件总线:消息队列或事件总线可以用于实现异步通信和事件驱动的架构。微服务可以通过发布和订阅消息来进行解耦和协作,以提高系统的可靠性和可扩展性。

  6. 日志和监控:微服务架构中的日志和监控组件用于收集、存储和分析微服务的运行时数据。它可以实时监控和报警,帮助识别和解决问题,并提供有关系统性能和健康状况的见解。

  7. 持久化:每个微服务都需要与数据库或其他持久化存储进行交互。可以使用关系型数据库、NoSQL数据库或其他类型的持久化存储,以满足不同服务的数据存储需求。