-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5e7fd11
commit c63757e
Showing
1 changed file
with
55 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
--- | ||
title: "《阿里云运维架构实践秘籍》读书笔记" | ||
date: "2021-10-16T22:43:40+08:00" | ||
tags: ["读书笔记", "运维", "架构"] | ||
keywords: ["阿里云运维架构实践秘籍", "运维", "架构"] | ||
categories: ["Tech"] | ||
dropCap: false | ||
toc: false | ||
slug: "reading-notes-for-a-li-yun-yun-wei-jia-gou-shi-jian-mi-ji" | ||
--- | ||
|
||
## 食之有味 | ||
###### P73. CAP 定理: | ||
CAP 定理(CAP theorem)指出,对于一个..分布式..系统来说,其不可能..同时满足..以下 3 点: | ||
|
||
- Consistency(一致性):所有节点在同一时间具有相同的数据。 | ||
- Availability(可用性):保证每个请求不管成功或者失败都得到响应。 | ||
- Partition tolerance(分区容错性):系统中任意信息的丢失或失败不会影响系统的继续运作。 | ||
|
||
> 这里推荐阮一峰的 [《CAP 定理的含义》](https://www.ruanyifeng.com/blog/2018/07/cap.html)协助理解,各数据库模型的实现其实就是对 CAP 定理三个特性的不同取舍。 | ||
--- | ||
|
||
###### P79. SQL 语句优化: | ||
|
||
- 80% 的数据库性能问题都出在 ..SQL语句..上。 | ||
- 80% 的 SQL 语句性能问题都是由..索引..引起的。 | ||
|
||
> 这让我又想起曾经遇到的[业务问题](../projects/#委外设备管理系统),事出正是慢查询,而处理这个性能问题时也正是通过先优化 MongoDB 的查询语句——前置业务查询条件及分页查询条件,再优化数据库索引得以缓解。这属实是慢查询的最佳实践了🎉。 | ||
--- | ||
|
||
###### P192. 存储引擎与服务器配置: | ||
|
||
由于 MongoDB 存储引擎基于**内存映射**,因此..高内存..的配置能有效提升 MongoDB 的性能。 | ||
|
||
--- | ||
|
||
###### P254. K8S 部署应用: | ||
在使用容器编排技术时,为了让对应容器高可用,也为了让机器性能的利用率更高,因此容器会根据状态是否存活,以及机器性能使用高低的情况,**在不同的节点之间调度漂移**。加上本身 K8S 就会消耗机器性能,所以总体来说,**K8S 不适合部署对性能配置依赖很高的应用**。这就间接说明了为什么我们一般很少将数据库部署在应用中,而是把业务代码部署在容器中,因为这样可以实现快速部署。 | ||
|
||
###### P278. 云端 DevOps 最佳实践: | ||
|
||
GitLab + Jenkins + K8S + 微服务是云端 DevOps 的最佳实践。 | ||
|
||
> 没错,正是我们当下在做的! | ||
|
||
###### P333. 缓存五分钟法则: | ||
|
||
即如果一条记录被频繁访问,就应该考虑放到缓存里。否则的话客户端就按需要直接去访问数据库,而这个临界点就是**五分钟**。 | ||
|
||
## 余味回甘 | ||
###### 使用缓存牺牲了什么? | ||
书中一直有一个说法:「缓存是一种典型的以牺牲数据时效性换取访问性能的技术」,我不太赞成这种说法。因为这样的表达是在说:使用缓存的缺点是**没有或者减少了数据的时效性**,我觉得这没有结合实际业务中使用缓存的前提——开发者肯定是在需要使用缓存的业务情景下才使用缓存的,也就是说我们为某个数据使用了缓存是..知其可用性..的,并没有牺牲什么实质性的时效性,这不算作是使用缓存的一种牺牲,缓存,就是临时存储在内存中的一组数据,该用时用,不该用时不用。 |