Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Nov 3, 2024
1 parent 7c78969 commit 36db85e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Observability/OpenTelemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ OpenTelemetry 覆盖了各类遥测数据规范定义、API 定义、规范实
- 应用程序只需要一种 SDK 就可以实现所有类型遥测数据的统一产生;
- 集群只需要部署一个 OpenTelemetry Collector 便可以实现所有遥测数据的采集。

指标、链路追踪、指标等遥测数据一般具有相同的 Meta 信息(描述和标识数据的附加信息,如标签、时间戳、上下文信息等),可以做无缝关联。之后,你可以使用 Prometheus + Grafana 做指标的存储和展示,使用 Jaeger 做分布式跟踪的存储和展示。
指标、链路追踪、日志等遥测数据一般具有相同的 Meta 信息(描述和标识数据的附加信息,如标签、时间戳、上下文信息等),可以做无缝关联。之后,你可以使用 Prometheus + Grafana 做指标的存储和展示,使用 Jaeger 做分布式跟踪的存储和展示。

:::center
![](../assets/otel-diagram.svg)<br/>
Expand Down
19 changes: 11 additions & 8 deletions architecture/declarative-api.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# 1.5.5 声明式设计

声明式设计指的是一种软件设计理念和做法:“我们向一个工具描述我们想要让一个事物达到的目标状态,工具内部解决如何令事物达成目标状态”
声明式设计是指一种软件设计理念:“我们描述一个事物的目标状态,而非达成目标状态的流程”。至于目标状态如何达成,则由相应的工具在其内部实现

和声明式设计相对的是命令式设计(又叫过程式设计),两者的区别是:
1. 命令式设计:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现;
2. 声明式设计:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。

很多常用的编程语言都是命令式。例如,如果有一批图书的列表,你会编写这样的代码来查询列表中名为“深入高可用原理与设计”的书籍:
很多常用的编程语言都是命令式。例如,有一批图书的列表,你会编写下面类似的代码来查询列表中名为“深入高可用原理与设计”的书籍:

```bash
function getBooks() {
Expand All @@ -19,16 +19,18 @@ function getBooks() {
return results
}
```
命令式语言告诉计算机以特定的顺序执行某些操作,实现最终目标必须完全推理整个过程
命令式语言告诉计算机以特定的顺序执行某些操作,实现最终目标:“查询名为《深入高可用原理与设计》的书籍”,必须完全推理整个过程

再来看使用声明式的查询语言(例如 SQL)是怎么处理的呢?如使用 SQL,只需要指定所需的数据模式,结果满足什么条件,以及如何转换数据(例如,排序、分组和聚合)。数据库会直接返回我们想要的结果,这远比自行编写处理过程去获取数据容易的多。
再来看声明式的查询语言(如 SQL)是如何处理的呢?

使用 SQL,只需要指定所需的数据、结果满足什么条件以及如何转换数据(如排序、分组和聚合),数据库直接返回我们想要的结果。这远比自行编写处理过程去获取数据容易的多。
```sql
SELECT * FROM users WHERE gender = boy AND name LIKE '深入高可用原理与设计%';
SELECT * FROM books WHERE author = 'xiaoming' AND name LIKE '深入高可用原理与设计%';
```

接下来看以声明式设计为核心的 Kubernetes。

下面的 YAML 文件中定义了一个名为 nginx-deployment 的 Deployment 资源spec 部分**声明**了部署后的具体状态。如运行后的副本数(replicas=3)。该 YAML 文件提交给 Kubernetes 之后,Kubernetes 会创建具有三个副本的 nginx 服务实例,并将持续保证我们所期望的状态
下面的 YAML 文件中定义了一个名为 nginx-deployment 的 Deployment 资源。其中 spec 部分**声明**了部署后的具体状态(以 3 个副本的形式运行)

```yaml
apiVersion: apps/v1
Expand All @@ -53,10 +55,11 @@ spec:
ports:
- containerPort: 80
```
该 YAML 文件提交给 Kubernetes 之后,Kubernetes 创建拥有 3 个副本的 nginx 服务实例,将持续保证我们所期望的状态。
通过编写 YAML 文件表达我们的需求和意图,资源如何创建、服务如何关联,至于怎么实现,我们完全不需要关心,这些全部交由 Kubernetes 实现
通过编写 YAML 文件表达我们的需求和意图,资源如何创建、服务如何关联,至于具体怎么实现,我们完全不需要关心,全部甩手给 Kubernetes。
只描述想要什么,中间过程、细节不需关心。工程师们专注于 what,正是我们开发软件真正的目标。
只描述想要什么,中间流程、细节不需关心。工程师们专注于 what,正是我们开发软件真正的目标。
Expand Down

0 comments on commit 36db85e

Please sign in to comment.