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/11/18 02:29:55 UTC

[GitHub] [apisix-website] SylviaBABY opened a new pull request, #1413: docs: add Tencent Blueking blog

SylviaBABY opened a new pull request, #1413:
URL: https://github.com/apache/apisix-website/pull/1413

   
   Changes:
   
   add Tencent Blueking blog


-- 
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


[GitHub] [apisix-website] yzeng25 commented on a diff in pull request #1413: docs: add Tencent Blueking blog

Posted by GitBox <gi...@apache.org>.
yzeng25 commented on code in PR #1413:
URL: https://github.com/apache/apisix-website/pull/1413#discussion_r1028841095


##########
blog/zh/blog/2022/11/05/tencent-blueking-with-apisix.md:
##########
@@ -0,0 +1,212 @@
+---
+title: "腾讯蓝鲸 API 网关如何借助 APISIX 实现产品升级与业务完善"
+authors:
+  - name: "朱雷"
+    title: "Author"
+  - name: "苏钰"
+    title: "Technical Writer"
+    url: "https://github.com/SylviaBABY"
+    image_url: "https://avatars.githubusercontent.com/u/39793568?v=4"
+keywords: 
+- 腾讯
+- Apache APISIX
+- 蓝鲸智云
+- 网关
+- 架构
+description: 本文从蓝鲸网关的迭代过程和应用 APISIX 后的产品实践角度,为大家呈现了基于 APISIX 的网关应用实例。
+tags: [Case Studies]
+---
+
+> 本文从蓝鲸网关的迭代过程和应用 APISIX 后的产品实践角度,为大家呈现了基于 APISIX 的网关应用实例。
+
+<!--truncate-->
+
+> 分享嘉宾朱雷,腾讯 IEG 运维 PaaS 平台技术负责人。
+
+蓝鲸(全名“蓝鲸智云”)是一套孵化于腾讯 IEG(互动娱乐事业群)内部,服务于多业务与各内部平台的研运一体化 PaaS。其作用是在 CI、CD 和 CO 三个阶段,对公司业务提供全生命周期的服务。
+
+![蓝鲸作用阶段](https://static.apiseven.com/2022/11/14/6371a5edf3dfb.png)
+
+## 蓝鲸 API 网关
+
+既然是为内部业务服务,那么腾讯游戏的业务都有哪些特点呢?
+
+大家在日常生活中肯定也接触过很多腾讯出品的游戏。在腾讯内部,可能有上千款的游戏业务,除部分自研游戏外,大部分都属于代理类。代理业务的特点在于,它们是由不同公司所开发,因此各产品使用的语言、依赖的存储或者整个架构风格可能都是千差万别的。
+
+面对这种包含大量异构架构的复杂业务场景,蓝鲸作为一个服务于内部的平台产品,在建设时就需要做到以下几点:
+
+* 采用原子化设计,将平台能力抽象、打散,进行微服务化改造,形成一套 PaaS 架构;
+
+* 使用低代码技术高效开发 SaaS,来使用 PaaS 平台的原子能力;
+
+* 通过各类 SaaS 来灵活应对不同的服务场景。
+
+### 诞生背景
+
+考虑到现实中的业务环境与内部业务需求,最终蓝鲸平台的整体架构如下图所示。
+
+![蓝鲸内部业务架构](https://static.apiseven.com/2022/11/14/6371a5daa2bc8.png)
+
+中间的蓝色部分是 PaaS 层,其中最大的一块是前面提到的各类原子能力。包括用户管理、统一权限中心、统一配置平台等。
+
+上层的橙色部分是 SaaS 层,主要由很多不同角色针对特定需求场景开发的 SaaS 构成。这些 SaaS 在开发过程中,或多或少地都需要通过 API 使用 PaaS 层最核心的各平台原子能力。在这种情况下,就势必需要一个统一的 API 网关。
+
+以上就是最初想要打造蓝鲸 API 网关的原因。将前面的架构图做一些抽象,就会得到一个如下简单的网关画像。
+
+![网关简易画像](https://static.apiseven.com/2022/11/14/6371a5de3e023.png)
+
+蓝鲸是一个比较复杂的平台,它对于统一网关的需求也会比较复杂。除了最基础的作为代理去调用原子平台的 API 之外,还需要提供一些额外的网关能力。比如服务发现、统一用户认证、鉴权和限流限速等等。
+
+另一方面,随着云原生技术的发展,如今内部很多 SaaS 和原子平台也开始部署在 K8s 集群中。这类场景又向网关提出了新的要求,比如需要通过统一流量网关或 API 网关来将外部的调用请求流量统一管控。
+
+同时,内部还存在一些业务系统,本身使用了蓝鲸平台的一些基础架构能力,如容器管理或监控等,它们也需要一个统一的服务网关来管理所有调用流量。
+
+面对外部技术的趋势与内部业务的发展要求,蓝鲸的 API 网关需要支持的场景开始变得越来越多样化。
+
+### 往期迭代
+
+蓝鲸 API 网关到目前为止经历了三个阶段的迭代。
+
+蓝鲸 API 网关的 1.0 版本,主要是让原子平台的调用方(含各 SaaS 和流程引擎)不再直接对接各个原子平台,而是可以直接调用 API 网关,通过网关完成协议转换、权限校验等相关功能。
+
+![蓝鲸 1.0 流程图](https://static.apiseven.com/2022/11/14/6371a5df6be29.png)
+
+那时的架构也比较简单,如下图所示整体分为两大块:服务端和管理端。原子平台需要把自身服务注册到 API 网关上,首先得访问管理端,配置好平台的 API 资源地址和各自对应的权限等等。
+
+当原子平台通过管理端提供了网关所需的配置细节后,数据会被写入到 MySQL 中,供服务端读取。之后,当 SaaS 请求某原子平台的 API 时,首先经过前端的 NGINX 负载均衡器,然后透到网关服务端,服务端读取了相关配置后,再将请求通过路由转发功能传给后方的各原子平台,完成整套请求流程。为了提升性能,这套架构也引入了 Redis 处理了一些缓存加速等场景。
+
+![1.0 架构图](https://static.apiseven.com/2022/11/14/6371a5e2d5b46.png)
+
+1.0 版本的架构在内部运行了几年后,随着请求量的增长和场景的复杂化,缺点开始逐渐显现出来。比如:
+
+* **框架性能不佳**。当时实现时选择了 Django 框架,它在高并发场景下表现一般,处理海量请求时性能捉襟见肘。
+
+* **路由实现性能一般**。API 路由采用的算法性能较低,影响到路由的匹配和转发速度。
+
+* **DB 压力大**。路由策略全部存储在 MySQL 中,规则多时需承载大量检索请求,查询压力大。
+
+* **网络开销大**。Redis 在多种场景下被高强度使用,导致网络开销太大。
+
+为了解决上述问题,我们在 1.0 版本的基础上进行了迭代,设计实现了 2.0 版本。2.0 版本相比前代,最大的改动就是使用 Go 语言重新实现了网关的框架和转发层。因为 Go 相比 Python,在处理大并发请求的场景下会更有优势。

Review Comment:
   ```suggestion
   为了解决上述问题,我们在 1.0 版本的基础上进行了迭代,设计实现了 2.0 版本。相比前代,2.0 版本最大的改动就是使用 Go 语言重新实现了网关的框架和转发层。因为 Go 相比 Python,在处理大并发请求的场景下会更有优势。
   ```



-- 
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


[GitHub] [apisix-website] netlify[bot] commented on pull request #1413: docs: add Tencent Blueking blog

Posted by GitBox <gi...@apache.org>.
netlify[bot] commented on PR #1413:
URL: https://github.com/apache/apisix-website/pull/1413#issuecomment-1319467034

   ### <span aria-hidden="true">👷</span> Deploy Preview for *apache-apisix* processing.
   
   
   |  Name | Link |
   |---------------------------------|------------------------|
   |<span aria-hidden="true">🔨</span> Latest commit | 0ec4972888f5ccd571d315d745e4a48becd154bc |
   |<span aria-hidden="true">🔍</span> Latest deploy log | https://app.netlify.com/sites/apache-apisix/deploys/6376ee2319c6860008147db1 |


-- 
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


[GitHub] [apisix-website] yzeng25 merged pull request #1413: docs: add Tencent Blueking blog

Posted by GitBox <gi...@apache.org>.
yzeng25 merged PR #1413:
URL: https://github.com/apache/apisix-website/pull/1413


-- 
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