首页> 自动化运维> 蓝鲸平台SaaS访问链路分析

[文章]蓝鲸平台SaaS访问链路分析

收藏
0 676 0

蓝鲸平台SaaS访问链路

陈锦恒[Snow]

【摘要】

    在开发调试蓝鲸SaaS时,开发人员习惯性的用localhost来访问在本地的开发环境,但是把开发好的SaaS部署上蓝鲸平台后,使用的访问方式是http://paas.bk.com/o/XXX,那么这其中的访问链路是如何的。

 

【正文】

1、 一层Nginx转发

首先,通过 http://paas.bk.com/o/xxxx 的方式来访问SaaS,这里会先请求到蓝鲸平台的Nginx服务器。

而从nginx的配置文件里可以知道,以/t/,/o/ 结尾的url的话,会被匹配并且重定向到 $test_app  $app

图片包含 屏幕截图, 文字

描述已自动生成

2、 Confd

而新版本的蓝鲸平台新增了confd的角色,这个角色可以让我们在部署saas时选择是部署在一台app服务器,还是多台app服务器上。该组件是一个开源组件,主要的通过读取后端存储的配置信息来动态更新对应的配置文件,

 

图片包含 屏幕截图

描述已自动生成

 

我们通过查看confd的启动方式,可以知道它的后端存储为consul,结合confd的模板,就可以得出confd是通过获取consul里的信息,然后动态的进行渲染nginx的配置文件。

图片包含 屏幕截图

描述已自动生成

3、 Consul

通过第三点我们可以认为,consul里应该有存储app的访问信息,那么我们通过访问consul里面信息,尝试去获取对应的app信息。

# consul kv get -keys bkapps/upstreams/prod/

图片包含 室内, 照片

描述已自动生成

这样我们就先取得consul里的app列表。

 

 

# consul kv get bkapps/upstreams/prod/cc-portal

图片包含 标牌, 物体

描述已自动生成

这样我们就可以获取到cc-portal这个应用的访问信息,而这个信息就是对应的我们在部署saas时选择的目前app服务器。

 

4、 渲染后的配置文件

那么渲染后的配置文件就对应开始时的$app$test_app的变量,也就是重定向到APPOAPPT服务器上。

图片包含 屏幕截图

描述已自动生成

 

5、 二层Nginx

APPT/APPO服务器上也安装有nginx角色,所以当接收到来自一层nginx的转发请求时,会把请求进行转发。

从配置文件可以看到,对应的访问请求会转发到以下sock文件中去。

 

打开对应的路径,可以看到有uwsgi.socksock文件。

 

6、 uWSGI

uWGSI 可以理解为是一个web服务,从二层Nginx的配置文件可得知,SaaS的访问请求最终会转到这个uwsgi.sock的文件,而这个文件就是对应的SaaS容器所映射出来的文件。到这一步大概梳理出整个的访问链路:

图片包含 屏幕截图

描述已自动生成

 

7、 应用

所以,当清楚整个链路走向之后,我们只需要在app代码中实现socket通讯,技术上就可以实现任何语言的SaaS开发,如下面是基于Golang-Gin 框架的SaaS示例。

图片包含 屏幕截图

描述已自动生成

 

 

自动化运维
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}