本周系统设计复习:

  • 关于 Web 应用你需要知道的一切
  • 终极 DevOps 开发者路线图
  • 你必须知道的 6 个软件架构模式
  • 你必须知道的顶级最终一致性模式

DevOps 开发者路线图

1. 编程语言

选择并精通一到两门编程语言。从 Python、JavaScript、Go、Ruby 等选项中选择。

2. 操作系统

掌握主要操作系统的来龙去脉,如 Linux、Windows、Mac 等。

3. 源代码管理

了解源代码管理工具,如 Git、GitHub、GitLab 和 Bitbucket。

4. 网络

掌握网络概念的基础,如 DNS、IP、TCP 和 SSH。

5. CI/CD

选择工具如 GitHub Actions、Jenkins 或 CircleCI 学习持续集成和持续交付。

6. 脚本和终端

学习 bash 和 PowerShell 脚本,以及各种终端和编辑器的知识。

7. 托管和平台

掌握多个托管平台,如 AWS、Azure、GCP、Docker、Kubernetes、Digital Ocean、Lambda、Azure Functions 等。

8. 基础设施即代码

学习基础设施即代码工具,如 Terraform、Pulumi、Ansible、Chef、Puppet、Kubernetes 等。

9. 监控和日志

掌握基础设施和应用监控和日志的关键工具,如 Prometheus、Elasticsearch、Logstash、Kibana 等。

10. 软件开发基础

学习软件开发的基础,如系统可用性、数据管理、设计模式和团队协作。

Redis 基础知识

Redis 是世界上最流行的数据存储之一,功能丰富。

以下是 8 个简单步骤,可以帮助你理解 Redis 的基础知识。

1. 什么是 Redis?

Redis(Remote Dictionary Server)是一个多模式数据库,提供亚毫秒延迟。Redis 背后的核心思想是缓存也可以充当功能齐全的数据库。

2. Redis 采用

Airbnb、Uber、Slack 等高流量互联网网站在其技术栈中采用了 Redis。

3. Redis 如何改变数据库游戏?

Redis 支持主内存读写,同时支持完全持久化存储。读写都从主内存服务,但数据也持久化到磁盘。这是使用快照(RDB)和 AOF 完成的。

4. Redis 数据结构

Redis 以键值格式存储数据。它支持各种数据结构,如字符串、位图、列表、集合、排序集合、哈希、JSON 等。

5. 基本 Redis 命令

一些最常用的 Redis 命令是 SET、GET、DELETE、INCR、HSET 等。还有许多更多命令可用。

6. Redis 模块

Redis 模块是扩展 Redis 功能超出其核心功能的附加组件。一些突出的模块是 RediSearch、RedisJSON、RedisGraph、RedisBloom、RedisAI、RedisTimeSeries、RedisGears、RedisML 等。

7. Redis 发布/订阅

Redis 还支持使用发布 - 订阅通信模型的事件驱动架构。

8. Redis 用例

顶级 Redis 用例是分布式缓存、会话存储、消息队列、速率限制、高速数据库等。

6 个软件架构模式

选择正确的软件架构模式对高效解决问题至关重要。

1. 分层架构(Layered Architecture)

每层在应用上下文中扮演不同和清晰的角色。非常适合需要快速构建的应用。缺点是,如果不遵循适当的规则,源代码可能变得无组织。

2. 微服务架构(Microservices Architecture)

将大系统分解为更小和更易管理的组件。使用微服务架构构建的系统是容错的。此外,每个组件可以单独扩展。缺点是,它可能增加应用的复杂性。

3. 事件驱动架构(Event-Driven Architecture)

服务通过发射其他服务可能消费或不消费的事件相互交谈。这种风格促进组件之间的松散耦合。然而,测试单个组件变得具有挑战性。

4. 客户端 - 服务器架构(Client-Server Architecture)

它包括两个主要组件 - 客户端和服务器通过网络通信。非常适合实时服务。然而,服务器可能成为单点故障。

5. 基于插件的架构(Plugin-based Architecture)

这种模式由两种类型的组件组成 - 核心系统和插件。插件模块是提供专门功能的独立组件。非常适合必须随时间扩展的应用,如 IDE。缺点是,更改核心是困难的。

6. 六边形架构(Hexagonal Architecture)

这种模式创建抽象层,保护应用的核心,并将其与外部集成隔离以获得更好的模块化。也称为端口和适配器架构。缺点是,这种模式可能导致开发时间增加和学习曲线。

4 个最终一致性模式

最终一致性是一个数据一致性模型,确保对分布式数据库的更新最终反映在所有节点上。像异步复制这样的技术帮助实现最终一致性。

然而,最终一致性也可能导致数据不一致。以下是 4 个模式可以帮助你设计应用。

模式#1 - 基于事件的最终一致性

服务发射事件,其他服务监听这些事件以更新它们的数据库实例。这使服务松散耦合,但延迟数据一致性。

模式#2 - 后台同步最终一致性

在这种模式中,后台作业使跨数据库的数据一致。它导致较慢的最终一致性,因为后台作业按特定时间表运行。

模式#3 - 基于 Saga 的最终一致性

Saga 是一系列本地事务,其中每个事务用单个服务更新数据。它用于管理最终一致的长寿命事务。

模式#4 - 基于 CQRS 的最终一致性

将读取和写入操作分离到不同的数据库中,这些数据库最终一致。读取和写入模型可以针对特定需求优化。

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP136: The Ultimate DevOps Developer Roadmap

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。