You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by GitBox <gi...@apache.org> on 2022/07/22 06:08:11 UTC

[GitHub] [apisix-website] yzeng25 commented on a diff in pull request #1229: docs: Add ECGU Con 2022 APISIX blog

yzeng25 commented on code in PR #1229:
URL: https://github.com/apache/apisix-website/pull/1229#discussion_r927320107


##########
blog/zh/blog/2022/07/22/exploration-of-apisix-in-api-and-microservices.md:
##########
@@ -0,0 +1,192 @@
+---
+title: "Apache APISIX 在 API 和微服务领域的探索"
+authors:
+  - name: "温铭"
+    title: "Apache APISIX PMC 主席"
+    url: "https://github.com/moonming"
+    image_url: "https://avatars.githubusercontent.com/u/26448043?v=4"
+  - name: "苏钰"
+    title: "Apache APISIX Committer"
+    url: "https://github.com/SylviaBABY"
+    image_url: "https://avatars.githubusercontent.com/u/39793568?v=4"
+keywords: 
+- API
+- 微服务
+- API 网关
+- Apache APISIX
+- 开源
+description: Apache APISIX 作为 Apache 基金会顶级项目,在项目快速发展的背后,进行了哪些探索?为什么会得到越来愈多开发者和企业用户的青睐?本文将从技术和社区两个层面带来详细解读。
+tags: [Technology,Community]
+---
+
+> Apache APISIX 作为 Apache 基金会顶级项目,在项目快速发展的背后,进行了哪些探索?为什么会得到越来愈多开发者和企业用户的青睐?本文将从技术和社区两个层面带来详细解读。
+
+<!--truncate-->
+
+## 背景介绍
+
+Apache APISIX 是一个动态、实时、高性能的开源 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
+
+作为 API 网关,Apache APISIX 可以帮助企业快速、安全地处理 API 和微服务流量,应用于网关、Kubernetes Ingress 和服务网格等场景。利用 APISIX 既可以处理从客户端到服务端的南北向流量,也可以处理从各个企业微服务之间的东西向流量。
+
+APISIX 在 2019 年 6 月 6 号开源,同年 10 月份捐赠给了 Apache 软件基金会。在之后不到一年的时间内,毕业成为 Apache 顶级项目。
+
+在项目快速发展的背后,APISIX 在技术上进行了哪些探索?为什么会得到越来愈多开发者和企业用户的青睐?在接下来的内容中,将为你讲述更多细节。
+
+## APISIX 技术探索之路
+
+### 摆脱数据库依赖
+
+在 APISIX 项目问世之前,也有非常多的商业 API 网关或开源 API 网关产品,但这些产品大多数都把 API 数据、路由、证书和配置等信息存放在一个关系型数据库中。
+
+存放在关系型数据库的优势其实很明显,可以让用户更加方便地使用 SQL 语句进行灵活查询,方便用户进行备份及后续维护等环节。
+
+但这种情况也会额外带来一个问题。网关作为一个基础中间件,它处理了所有来自客户端的流量,这种情况下对于可用性的要求便会非常高。如果你的 API 网关依赖了一个关系型数据库,也就意味着关系型数据库一旦出现了故障(比如宕机、丢失数据),你的API网关也会因此受到影响。这种情况下,系统的整体可用性就会大打折扣。
+
+所以 APISIX 在设计之初,就从底层架构上避免了类似上述情况的发生。
+
+![APISIX 架构](https://static.apiseven.com/2022/blog/0722/apisix-1.png)
+
+APISIX 的架构主要分成两部分。第一部分叫做数据面,它是真正去处理来自客户端请求的一个组件,去处理用户的真实流量,包括像身份验证、证书卸载、日志分析和可观测性等功能。数据面本身并不会存储任何数据,所以它是一个无状态结构。
+
+第二部分叫做控制面。APISIX 在底层架构上和其它 API 网关的一个很大不同就在于控制面。APISIX 在控制面上并没有使用传统的类似于像 MySQL 去做配置存储,而是选择使用 etcd。这样做的好处主要有以下几点:
+
+1. 与产品架构的云原生技术体系更统一
+2. 更贴合API网关存放的数据类型
+3. 能更好地体现高可用特性
+4. 拥有低于毫秒级别的变化通知
+
+使用etcd后,对于数据面而言只需监听 etcd 的变化即可。如果轮询数据库的话,可能需要 5-10 秒才能获取取到最新的配置;但如果监听 etcd 的配置变更,就可以将时间控制在毫秒级别之内,达到实时生效的效果。

Review Comment:
   ```suggestion
   使用 etcd 后,对于数据面而言只需监听 etcd 的变化即可。如果轮询数据库的话,可能需要 5-10 秒才能获取取到最新的配置;但如果监听 etcd 的配置变更,就可以将时间控制在毫秒级别之内,达到实时生效的效果。
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@apisix.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org