From ab7cc2485e5bf8a13e971700ace5da0fb50c1a4a Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 15:15:35 +0800 Subject: [PATCH 01/12] doc: add API7 Portal Architecture --- .../api7-portal-architecture-1.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md new file mode 100644 index 00000000..d6336fea --- /dev/null +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -0,0 +1,55 @@ +--- +title: API7 Portal Architecture +--- + + +## 架构图 + +![Portal Architecture](https://static.apiseven.com/uploads/2023/08/24/9HqAN9qa_portal%20%E6%9E%B6%E6%9E%84.jpg +) + + +## 架构介绍 + + +### 组件说明 + +如上图所示,是c整体系统架构图,从上到下可以分为 UI 展示层、API7 portal 网关层、API7 portal dashboard 层、API7 portal 数据面层: +1. Provider 通过 apisix 和 apisix-ingress-controller 进入 Provider Portal Dashboard; +2. 同理 Developer 通过 apisix 和 apisix-ingress-controller 进入 Developer Portal Dashboard; +3. 整个 PAI7 Portal Dashboard 包含的组件有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、PostgreSQL、ETCD、keycloak、ES、Logstash 、Filebeat、API7-Gateway; +4. PAI7 Portal Dashboard 与 数据面网关 API7-Gateway 通过 ETCD 进行连接; +5. Filebeat 组件采集 API7-Gateway 的日志发送给 logstash,然后由 logstash 写入 ES; +6. 如最后一层显示,Developer 的 user,在访问 Provider 提供的上游服务时,首先会经历 API7-Gateway 这个前置网关,该中间层可以实现访问控制、限流限速等功能。 + +### 系统可靠性说明 + +注意线上环境相比测试环境、预发环境需要注意以下几点: + +1. 稳定性,线上环境的稳定性要求更高,当出现问题时能够及时的反馈; +2. 可扩展性,线上环境的部署需要考虑未来随着用户数量逐渐增多之后如何进行扩容; +3. 可维护性,相关组件需要有能力进行运维,如果没有则采用 SaaS 服务来降低运维人力。 + +因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力);Postgresql;Elastcisearch。 +所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、ETCD、FileBeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 + +1. provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; +2. APISIX、APISIX-Ingress、API7-Gateway、keycloak 这几个组件也属于无状态组件,也可通过多节点部署来保证节点的高可用; +3. ETCD 、FileBeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; +4. ETCD 借助 Raft 协议 ,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; +5. FileBeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 filebeat 与 logstash 中间加入 kafka 做为消息中间件。 + +### 数据存储说明 + +数据存储介绍分为两个模块介绍:业务数据和 API 行为数据。 + +#### 业务数据 + +业务数据指的是用户在 API7 portal dashboard 的各个组件内产生或者查询的数据,比如: +1. 用户管理相关的数据,会使用 PostgreSQL 和 Keycloak 进行存储; +2. 一般的业务数据,比如 API source 的创建、产品的发布和订阅、API7 key 的管理等需要借助 PostgreSQL 存储业务数据,同时也需将生产的 API 行为数据写入 ETCD,从而与数据面进行交互。 + +#### API 行为数据 + +1. API 行为数据指的是用户在 API7 portal Portal Dashboard 的一些操作在数据面 APISIX 产生的数据。API7 Portal 提供了丰富的 API 运营分析能力,因此,需要追踪用户的一些 API 行为数据,用以统计展示。以 Developer 的 user 访问了 Developer 订阅的一个 API 为例; +2. User 首先经过 API7 Portal 提供的中间层网关 APISIX,再到 Provider 的一个上游服务。在这一过程中,Filebeat 组件会采集 user 的 API 行为数据发送给 Logstash,由 Logstash 最终写入 ES,最后由 API7 Portal Dashboard 提供的 API 运行分析服务查询 ES 中 user 关于 API 行为的指标数据,再进行聚合展示。 From 8e13787bbda13ef391e33b9219f456ce1f1daeef Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 15:20:46 +0800 Subject: [PATCH 02/12] fix --- .../how-api7-portal-works/api7-portal-architecture-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index d6336fea..8a095aba 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -14,7 +14,7 @@ title: API7 Portal Architecture ### 组件说明 -如上图所示,是c整体系统架构图,从上到下可以分为 UI 展示层、API7 portal 网关层、API7 portal dashboard 层、API7 portal 数据面层: +如上图所示,是整体系统架构图,从上到下可以分为 UI 展示层、API7 portal 网关层、API7 portal dashboard 层、API7 portal 数据面层: 1. Provider 通过 apisix 和 apisix-ingress-controller 进入 Provider Portal Dashboard; 2. 同理 Developer 通过 apisix 和 apisix-ingress-controller 进入 Developer Portal Dashboard; 3. 整个 PAI7 Portal Dashboard 包含的组件有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、PostgreSQL、ETCD、keycloak、ES、Logstash 、Filebeat、API7-Gateway; From b7b0d2074ff9cc3aca1ef5cb6119d5cbde03cea9 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 15:37:59 +0800 Subject: [PATCH 03/12] fix --- .../api7-portal-architecture-1.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 8a095aba..462ba9aa 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -14,7 +14,7 @@ title: API7 Portal Architecture ### 组件说明 -如上图所示,是整体系统架构图,从上到下可以分为 UI 展示层、API7 portal 网关层、API7 portal dashboard 层、API7 portal 数据面层: +如上图所示,是整体系统架构图,从上到下可以分为 UI 展示层、API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: 1. Provider 通过 apisix 和 apisix-ingress-controller 进入 Provider Portal Dashboard; 2. 同理 Developer 通过 apisix 和 apisix-ingress-controller 进入 Developer Portal Dashboard; 3. 整个 PAI7 Portal Dashboard 包含的组件有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、PostgreSQL、ETCD、keycloak、ES、Logstash 、Filebeat、API7-Gateway; @@ -33,7 +33,7 @@ title: API7 Portal Architecture 因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力);Postgresql;Elastcisearch。 所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、ETCD、FileBeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 -1. provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; +1. provider-portal、developer-portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; 2. APISIX、APISIX-Ingress、API7-Gateway、keycloak 这几个组件也属于无状态组件,也可通过多节点部署来保证节点的高可用; 3. ETCD 、FileBeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; 4. ETCD 借助 Raft 协议 ,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; @@ -45,11 +45,11 @@ title: API7 Portal Architecture #### 业务数据 -业务数据指的是用户在 API7 portal dashboard 的各个组件内产生或者查询的数据,比如: +业务数据指的是用户在 API7 Portal Dashboard 的各个组件内产生的数据,比如: 1. 用户管理相关的数据,会使用 PostgreSQL 和 Keycloak 进行存储; -2. 一般的业务数据,比如 API source 的创建、产品的发布和订阅、API7 key 的管理等需要借助 PostgreSQL 存储业务数据,同时也需将生产的 API 行为数据写入 ETCD,从而与数据面进行交互。 +2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助 PostgreSQL 存储业务数据,同时也需将生产的 API 行为数据写入 ETCD,从而与数据面进行交互。 #### API 行为数据 -1. API 行为数据指的是用户在 API7 portal Portal Dashboard 的一些操作在数据面 APISIX 产生的数据。API7 Portal 提供了丰富的 API 运营分析能力,因此,需要追踪用户的一些 API 行为数据,用以统计展示。以 Developer 的 user 访问了 Developer 订阅的一个 API 为例; -2. User 首先经过 API7 Portal 提供的中间层网关 APISIX,再到 Provider 的一个上游服务。在这一过程中,Filebeat 组件会采集 user 的 API 行为数据发送给 Logstash,由 Logstash 最终写入 ES,最后由 API7 Portal Dashboard 提供的 API 运行分析服务查询 ES 中 user 关于 API 行为的指标数据,再进行聚合展示。 +1. API 行为数据指的是用户在 API7 Portal Dashboard 的一些操作在数据面 API7-Gateway 产生的数据。API7 Portal 提供了丰富的 API 运营分析能力,因此,需要追踪用户的一些 API 行为数据,用以统计展示。 +2. 以 Developer 的 user 访问了 Developer 订阅的一个 API 为例; user 首先经过 API7 Portal 提供的中间层网关 API7-Gateway,再到 Provider 的一个上游服务。在这一过程中,Filebeat 组件会采集 user 的 API 行为数据发送给 Logstash,由 Logstash 最终写入 ES,最后由 API7 Portal Dashboard 提供的 API 运行分析服务查询 ES 中 user 关于 API 行为的指标数据,再进行聚合展示。 From 6b44e5e136f201f26e178cea0f910d5ff5772874 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 15:46:44 +0800 Subject: [PATCH 04/12] fix --- .../how-api7-portal-works/api7-portal-architecture-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 462ba9aa..96602177 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -5,7 +5,7 @@ title: API7 Portal Architecture ## 架构图 -![Portal Architecture](https://static.apiseven.com/uploads/2023/08/24/9HqAN9qa_portal%20%E6%9E%B6%E6%9E%84.jpg +![Portal Architecture](https://static.apiseven.com/uploads/2023/08/24/TYB3EsnP_portal%20%E6%9E%B6%E6%9E%84%E5%95%8A.jpg ) From 8e58c0de5e2bd49729c9bb3779e7cbd6e4a70df7 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 15:58:49 +0800 Subject: [PATCH 05/12] fix --- .../api7-portal-architecture-1.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 96602177..4235fe8f 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -17,8 +17,8 @@ title: API7 Portal Architecture 如上图所示,是整体系统架构图,从上到下可以分为 UI 展示层、API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: 1. Provider 通过 apisix 和 apisix-ingress-controller 进入 Provider Portal Dashboard; 2. 同理 Developer 通过 apisix 和 apisix-ingress-controller 进入 Developer Portal Dashboard; -3. 整个 PAI7 Portal Dashboard 包含的组件有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、PostgreSQL、ETCD、keycloak、ES、Logstash 、Filebeat、API7-Gateway; -4. PAI7 Portal Dashboard 与 数据面网关 API7-Gateway 通过 ETCD 进行连接; +3. 整个 API7 Portal Dashboard 包含的组件有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、PostgreSQL、etcd、keycloak、ES、Logstash 、Filebeat、API7-Gateway; +4. API7 Portal Dashboard 与 数据面网关 API7-Gateway 通过 etcd 进行连接; 5. Filebeat 组件采集 API7-Gateway 的日志发送给 logstash,然后由 logstash 写入 ES; 6. 如最后一层显示,Developer 的 user,在访问 Provider 提供的上游服务时,首先会经历 API7-Gateway 这个前置网关,该中间层可以实现访问控制、限流限速等功能。 @@ -31,12 +31,12 @@ title: API7 Portal Architecture 3. 可维护性,相关组件需要有能力进行运维,如果没有则采用 SaaS 服务来降低运维人力。 因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力);Postgresql;Elastcisearch。 -所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、ETCD、FileBeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 +所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、etcd、FileBeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 1. provider-portal、developer-portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; 2. APISIX、APISIX-Ingress、API7-Gateway、keycloak 这几个组件也属于无状态组件,也可通过多节点部署来保证节点的高可用; -3. ETCD 、FileBeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; -4. ETCD 借助 Raft 协议 ,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; +3. etcd 、FileBeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; +4. etcd 借助 Raft 协议 ,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; 5. FileBeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 filebeat 与 logstash 中间加入 kafka 做为消息中间件。 ### 数据存储说明 @@ -47,7 +47,7 @@ title: API7 Portal Architecture 业务数据指的是用户在 API7 Portal Dashboard 的各个组件内产生的数据,比如: 1. 用户管理相关的数据,会使用 PostgreSQL 和 Keycloak 进行存储; -2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助 PostgreSQL 存储业务数据,同时也需将生产的 API 行为数据写入 ETCD,从而与数据面进行交互。 +2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助 PostgreSQL 存储业务数据,同时也需将生产的 API 行为数据写入 etcd,从而与数据面进行交互。 #### API 行为数据 From e90a605778d1c48725f6c96490bd4476f17796dc Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 16:01:25 +0800 Subject: [PATCH 06/12] fix --- .../how-api7-portal-works/api7-portal-architecture-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 4235fe8f..a80940b7 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -30,7 +30,7 @@ title: API7 Portal Architecture 2. 可扩展性,线上环境的部署需要考虑未来随着用户数量逐渐增多之后如何进行扩容; 3. 可维护性,相关组件需要有能力进行运维,如果没有则采用 SaaS 服务来降低运维人力。 -因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力);Postgresql;Elastcisearch。 +因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力)、Postgresql、Elastcisearch。 所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、etcd、FileBeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 1. provider-portal、developer-portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; From 182042a1a2867dc4afde0e845dcaa419c73e4ce7 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 16:09:26 +0800 Subject: [PATCH 07/12] fix --- .../how-api7-portal-works/api7-portal-architecture-1.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index a80940b7..ecf48338 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -31,13 +31,13 @@ title: API7 Portal Architecture 3. 可维护性,相关组件需要有能力进行运维,如果没有则采用 SaaS 服务来降低运维人力。 因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力)、Postgresql、Elastcisearch。 -所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、etcd、FileBeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 +所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、etcd、Filebeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 1. provider-portal、developer-portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; 2. APISIX、APISIX-Ingress、API7-Gateway、keycloak 这几个组件也属于无状态组件,也可通过多节点部署来保证节点的高可用; -3. etcd 、FileBeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; +3. etcd 、Filebeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; 4. etcd 借助 Raft 协议 ,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; -5. FileBeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 filebeat 与 logstash 中间加入 kafka 做为消息中间件。 +5. Filebeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 Filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 Filebeat 与 logstash 中间加入 kafka 做为消息中间件。 ### 数据存储说明 From 93233b660a633cd58db39acb96af28b24a89c898 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Thu, 24 Aug 2023 17:46:28 +0800 Subject: [PATCH 08/12] fix line --- .../how-api7-portal-works/api7-portal-architecture-1.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index ecf48338..19349d54 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -5,8 +5,7 @@ title: API7 Portal Architecture ## 架构图 -![Portal Architecture](https://static.apiseven.com/uploads/2023/08/24/TYB3EsnP_portal%20%E6%9E%B6%E6%9E%84%E5%95%8A.jpg -) +![Portal Architecture](https://static.apiseven.com/uploads/2023/08/24/TYB3EsnP_portal%20%E6%9E%B6%E6%9E%84%E5%95%8A.jpg) ## 架构介绍 From 00391296bc6def5c7a7231e772b5d1cd7deb9a8b Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Fri, 25 Aug 2023 13:58:18 +0800 Subject: [PATCH 09/12] fix doc --- .../how-api7-portal-works/api7-portal-architecture-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 19349d54..74f6cb70 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -23,7 +23,7 @@ title: API7 Portal Architecture ### 系统可靠性说明 -注意线上环境相比测试环境、预发环境需要注意以下几点: +系统可靠性主要体现在以下几点: 1. 稳定性,线上环境的稳定性要求更高,当出现问题时能够及时的反馈; 2. 可扩展性,线上环境的部署需要考虑未来随着用户数量逐渐增多之后如何进行扩容; From 796e9930b677e80d2e614cc3bd30452e3b6fda5c Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Fri, 25 Aug 2023 16:06:07 +0800 Subject: [PATCH 10/12] fix --- .../api7-portal-architecture-1.md | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 74f6cb70..5745fbc9 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -5,7 +5,7 @@ title: API7 Portal Architecture ## 架构图 -![Portal Architecture](https://static.apiseven.com/uploads/2023/08/24/TYB3EsnP_portal%20%E6%9E%B6%E6%9E%84%E5%95%8A.jpg) +![Portal Architecture](https://static.apiseven.com/uploads/2023/08/25/uhobaQ1Y_api7%20portal%20%E6%9E%B6%E6%9E%84%20%281%29.jpg) ## 架构介绍 @@ -14,29 +14,27 @@ title: API7 Portal Architecture ### 组件说明 如上图所示,是整体系统架构图,从上到下可以分为 UI 展示层、API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: -1. Provider 通过 apisix 和 apisix-ingress-controller 进入 Provider Portal Dashboard; -2. 同理 Developer 通过 apisix 和 apisix-ingress-controller 进入 Developer Portal Dashboard; -3. 整个 API7 Portal Dashboard 包含的组件有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、PostgreSQL、etcd、keycloak、ES、Logstash 、Filebeat、API7-Gateway; -4. API7 Portal Dashboard 与 数据面网关 API7-Gateway 通过 etcd 进行连接; -5. Filebeat 组件采集 API7-Gateway 的日志发送给 logstash,然后由 logstash 写入 ES; -6. 如最后一层显示,Developer 的 user,在访问 Provider 提供的上游服务时,首先会经历 API7-Gateway 这个前置网关,该中间层可以实现访问控制、限流限速等功能。 +1. Provider 和 Developer 通过网关层进入 Provider Portal Dashboard; +2. API7 Portal Dashboard 包含的组件主要包含:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、API7-Gateway; +3. provider-portal、developer-portal 组件与数据面网关 API7-Gateway 通过 etcd 进行连接; +4. 如最后一层显示,Developer 的 user,在访问 Provider 提供的上游服务时,首先会经历 API7-Gateway 这个前置网关,该中间层可以实现访问控制、限流限速等功能,然后才进入 provider 的网关(如果存在),再到 provider 的后端服务。 ### 系统可靠性说明 系统可靠性主要体现在以下几点: -1. 稳定性,线上环境的稳定性要求更高,当出现问题时能够及时的反馈; -2. 可扩展性,线上环境的部署需要考虑未来随着用户数量逐渐增多之后如何进行扩容; -3. 可维护性,相关组件需要有能力进行运维,如果没有则采用 SaaS 服务来降低运维人力。 +1. 成熟性,是指系统避免因错误的发生而导致失效的能力; +2. 容错性,系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力; +3. 易恢复性,系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力,并且当出现问题时需要及时的反馈; +4. 可扩展性,系统的部署模型需要考虑未来随着用户数量逐渐增多之后如何进行扩容; +5. 可维护性,相关组件需要有能力进行运维,如果没有则采用 SaaS 服务来降低运维人力。 -因此,针对以下组件 API7 Portal 选择了 Saas 服务来保证系统的高可用能力:SendGrid(提供邮件发送能力)、Postgresql、Elastcisearch。 -所以, API7 Portal 整体系统的高可用体现在各个需要我们自己部署的组件的高可用上,有 provider-portal、developer- portal、provider-portal-ui 、developer-portal-ui、 Keycloak、etcd、Filebeat、Logstash、APISIX、APISIX-Ingress、API7-Gateway。 +对于部分难维护的组件 API7 Portal 选择了对应的 Saas 服务来保证系统的高可用能力。因此,API7 Portal 整体系统的高可用体现在各个需要自己部署的组件的高可用上,具体方案如下: -1. provider-portal、developer-portal、provider-portal-ui 、developer-portal-ui 这四个组件属于无状态的组件、可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; -2. APISIX、APISIX-Ingress、API7-Gateway、keycloak 这几个组件也属于无状态组件,也可通过多节点部署来保证节点的高可用; -3. etcd 、Filebeat、Logstash 属于有状态节点,可采用集群模式管理实现节点高可用; -4. etcd 借助 Raft 协议 ,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; -5. Filebeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 Filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 Filebeat 与 logstash 中间加入 kafka 做为消息中间件。 +1. 比如对于无状态的组件可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; +2. 对于有状态的组件,根据各个组件的自身的特性,可采用集群模式管理实现节点高可用,比如: + a. etcd 借助 Raft 协议,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; + b. 关于 Filebeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 Filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 Filebeat 与 logstash 中间加入 kafka 做为消息中间件。 ### 数据存储说明 @@ -44,11 +42,10 @@ title: API7 Portal Architecture #### 业务数据 -业务数据指的是用户在 API7 Portal Dashboard 的各个组件内产生的数据,比如: -1. 用户管理相关的数据,会使用 PostgreSQL 和 Keycloak 进行存储; -2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助 PostgreSQL 存储业务数据,同时也需将生产的 API 行为数据写入 etcd,从而与数据面进行交互。 +1. 业务数据指的是用户在 API7 Portal Dashboard 的各个组件内产生的数据; +2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助 关系型数据库存储业务数据,同时也需将生产的 API 行为数据写入 etcd,从而与数据面进行交互。 #### API 行为数据 1. API 行为数据指的是用户在 API7 Portal Dashboard 的一些操作在数据面 API7-Gateway 产生的数据。API7 Portal 提供了丰富的 API 运营分析能力,因此,需要追踪用户的一些 API 行为数据,用以统计展示。 -2. 以 Developer 的 user 访问了 Developer 订阅的一个 API 为例; user 首先经过 API7 Portal 提供的中间层网关 API7-Gateway,再到 Provider 的一个上游服务。在这一过程中,Filebeat 组件会采集 user 的 API 行为数据发送给 Logstash,由 Logstash 最终写入 ES,最后由 API7 Portal Dashboard 提供的 API 运行分析服务查询 ES 中 user 关于 API 行为的指标数据,再进行聚合展示。 +2. 以 Developer 的 user 访问了 Developer 订阅的一个 API 为例,user 首先经过 API7 Portal 提供的中间层网关 API7-Gateway,再到 Provider 网关(如果存在),最后到 Provider 的一个上游服务。在这一过程中,会在数据面 API7-Gateway 采集 user 的 API 行为数据通过某种方式发送给 API7 Portal Dashboard,最后由 API7 Portal Dashboard 提供的 API 运行分析服务再进行聚合展示。 From 5ea6ae2512134b6b074d536b9e0e753724e16e16 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Fri, 25 Aug 2023 16:14:12 +0800 Subject: [PATCH 11/12] fix --- .../api7-portal-architecture-1.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 5745fbc9..3cf7a953 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -13,9 +13,9 @@ title: API7 Portal Architecture ### 组件说明 -如上图所示,是整体系统架构图,从上到下可以分为 UI 展示层、API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: +上图展示了 API7 portal 的整体系统架构图,从上到下可以分为 UI 展示层、API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: 1. Provider 和 Developer 通过网关层进入 Provider Portal Dashboard; -2. API7 Portal Dashboard 包含的组件主要包含:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、API7-Gateway; +2. API7 Portal Dashboard 包含的组件主要有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、API7-Gateway; 3. provider-portal、developer-portal 组件与数据面网关 API7-Gateway 通过 etcd 进行连接; 4. 如最后一层显示,Developer 的 user,在访问 Provider 提供的上游服务时,首先会经历 API7-Gateway 这个前置网关,该中间层可以实现访问控制、限流限速等功能,然后才进入 provider 的网关(如果存在),再到 provider 的后端服务。 @@ -34,16 +34,16 @@ title: API7 Portal Architecture 1. 比如对于无状态的组件可通过多节点部署来保证节点的高可用;此外,在流量入口处有网关层,可以在网关层添加 LB、限流等机制来增加系统的稳定性; 2. 对于有状态的组件,根据各个组件的自身的特性,可采用集群模式管理实现节点高可用,比如: a. etcd 借助 Raft 协议,通过数据复制方案,可以提高服务可用性,避免单点故障,提升读吞吐量,降低访问延迟; - b. 关于 Filebeat 和 Logstash 聚合的高可用方案,单个 logstash 的聚合处理能力有限,logstash 将成为整个系统的瓶颈;另一方面,一旦这个 logstash 崩溃退出,整个系统就将无法正常运行,同时 Filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 logstash 宕机时,数据丢失的问题,在 Filebeat 与 logstash 中间加入 kafka 做为消息中间件。 + b. 关于 Filebeat 和 Logstash 聚合的高可用方案,单个 Logstash 的聚合处理能力有限,Logstash 将成为整个系统的瓶颈;另一方面,一旦 Logstash 崩溃退出,整个系统就将无法正常运行,同时 Filebeat 采集的数据得不到及时消费,造成数据丢失。为了解决当 Logstash 宕机时,数据丢失的问题,在 Filebeat 与 Logstash 中间加入 Kafka 做为消息中间件。 ### 数据存储说明 -数据存储介绍分为两个模块介绍:业务数据和 API 行为数据。 +数据存储介为两个模块介绍:业务数据和 API 行为数据。 #### 业务数据 1. 业务数据指的是用户在 API7 Portal Dashboard 的各个组件内产生的数据; -2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助 关系型数据库存储业务数据,同时也需将生产的 API 行为数据写入 etcd,从而与数据面进行交互。 +2. 一般的业务数据,比如 API Source 的创建、产品的发布和订阅、API7 Key 的管理等需要借助关系型数据库存储业务数据,同时也需将生产的 API 行为数据写入 etcd,从而与数据面进行交互。 #### API 行为数据 From f118e9c144f9f0bc21483b36eaf91ea774444892 Mon Sep 17 00:00:00 2001 From: Hazel6869 <1358508600@qq.com> Date: Mon, 28 Aug 2023 14:07:27 +0800 Subject: [PATCH 12/12] fix --- .../how-api7-portal-works/api7-portal-architecture-1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md index 3cf7a953..c3b1654c 100644 --- a/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md +++ b/portal_versioned_docs/version-1.0.0/background-information/how-api7-portal-works/api7-portal-architecture-1.md @@ -5,7 +5,7 @@ title: API7 Portal Architecture ## 架构图 -![Portal Architecture](https://static.apiseven.com/uploads/2023/08/25/uhobaQ1Y_api7%20portal%20%E6%9E%B6%E6%9E%84%20%281%29.jpg) +![Portal Architecture](https://static.apiseven.com/uploads/2023/08/28/8zy4tNFV_api7%20portal%20%E6%9E%B6%E6%9E%84%20%282%29.jpg) ## 架构介绍 @@ -13,7 +13,7 @@ title: API7 Portal Architecture ### 组件说明 -上图展示了 API7 portal 的整体系统架构图,从上到下可以分为 UI 展示层、API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: +上图展示了 API7 portal 的整体系统架构图,从上到下可以分为 API7 Portal 网关层、API7 Portal Dashboard 层、API7 Portal 数据面层: 1. Provider 和 Developer 通过网关层进入 Provider Portal Dashboard; 2. API7 Portal Dashboard 包含的组件主要有:provider-portal-ui、provider-portal、developer-portal、developer-portal-ui、API7-Gateway; 3. provider-portal、developer-portal 组件与数据面网关 API7-Gateway 通过 etcd 进行连接;