{"id":27874687,"url":"https://github.com/ctripcorp/zeus","last_synced_at":"2026-03-06T08:34:05.172Z","repository":{"id":27116392,"uuid":"30584392","full_name":"ctripcorp/zeus","owner":"ctripcorp","description":"Soft Load Balancer at ctrip.com","archived":false,"fork":false,"pushed_at":"2022-07-15T19:42:28.000Z","size":19160,"stargazers_count":55,"open_issues_count":21,"forks_count":42,"subscribers_count":17,"default_branch":"github_dev","last_synced_at":"2025-05-05T01:39:45.719Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctripcorp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-10T09:20:48.000Z","updated_at":"2024-05-22T02:10:59.000Z","dependencies_parsed_at":"2022-09-01T00:00:18.579Z","dependency_job_id":null,"html_url":"https://github.com/ctripcorp/zeus","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ctripcorp/zeus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fzeus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fzeus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fzeus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fzeus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctripcorp","download_url":"https://codeload.github.com/ctripcorp/zeus/tar.gz/refs/heads/github_dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctripcorp%2Fzeus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30167963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-05T01:37:23.964Z","updated_at":"2026-03-06T08:34:05.138Z","avatar_url":"https://github.com/ctripcorp.png","language":"JavaScript","funding_links":[],"categories":["容错组件"],"sub_categories":["微服务框架"],"readme":"\r\n- [简介](#%e7%ae%80%e4%bb%8b)\r\n- [快速入门（Quick Start)](#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8quick-start)\r\n  - [环境准备](#%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87)\r\n  - [快速启动](#%e5%bf%ab%e9%80%9f%e5%90%af%e5%8a%a8)\r\n    - [快速安装SLB Admin](#%e5%bf%ab%e9%80%9f%e5%ae%89%e8%a3%85slb-admin)\r\n    - [初始化](#%e5%88%9d%e5%a7%8b%e5%8c%96)\r\n    - [快速安装Health Checker](#%e5%bf%ab%e9%80%9f%e5%ae%89%e8%a3%85health-checker)\r\n  - [手动配置](#%e6%89%8b%e5%8a%a8%e9%85%8d%e7%bd%ae)\r\n    - [Mysql安装](#mysql%e5%ae%89%e8%a3%85)\r\n    - [Nginx安装](#nginx%e5%ae%89%e8%a3%85)\r\n    - [SLB Admin安装](#slb-admin%e5%ae%89%e8%a3%85)\r\n    - [Health Checker 安装](#health-checker-%e5%ae%89%e8%a3%85)\r\n- [进阶教程](#%e8%bf%9b%e9%98%b6%e6%95%99%e7%a8%8b)\r\n- [模型介绍](#%e6%a8%a1%e5%9e%8b%e4%bb%8b%e7%bb%8d)\r\n  - [SLB模型](#slb%e6%a8%a1%e5%9e%8b)\r\n  - [VS模型](#vs%e6%a8%a1%e5%9e%8b)\r\n  - [Group模型](#group%e6%a8%a1%e5%9e%8b)\r\n  - [TrafficPolicy模型](#trafficpolicy%e6%a8%a1%e5%9e%8b)\r\n  - [证书模型](#%e8%af%81%e4%b9%a6%e6%a8%a1%e5%9e%8b)\r\n- [简单上手](#%e7%ae%80%e5%8d%95%e4%b8%8a%e6%89%8b)\r\n  - [创建SLB](#%e5%88%9b%e5%bb%baslb)\r\n  - [创建VS](#%e5%88%9b%e5%bb%bavs)\r\n  - [创建Group](#%e5%88%9b%e5%bb%bagroup)\r\n  - [拉入拉出](#%e6%8b%89%e5%85%a5%e6%8b%89%e5%87%ba)\r\n  - [请求验证](#%e8%af%b7%e6%b1%82%e9%aa%8c%e8%af%81)\r\n- [设计文档](#%e8%ae%be%e8%ae%a1%e6%96%87%e6%a1%a3)\r\n- [用户手册](#%e7%94%a8%e6%88%b7%e6%89%8b%e5%86%8c)\r\n- [API文档](#api%e6%96%87%e6%a1%a3)\r\n- [Q\u0026A](#qa)\r\n## 简介\r\nSoft Load Balancer at ctrip.com\r\n\r\nSLB是携程的软负载系统，主要用于提供HTTP协议的路由负载功能，日处理请求量峰值达千亿。\r\n\r\n核心功能包括：\r\n1. 路由转发\r\n2. 负载均衡\r\n3. 缩容扩容\r\n4. 服务器拉入拉出\r\n5. 独立健康检测\r\n6. HTTPS证书管理\r\n7. 请求实时监控\r\n8. 流量灰度迁移\r\n9. URL Rewrite\r\n10. 反爬虫拦截策略\r\n11. 操作日志\r\n12. 权限管理\r\n\r\n我们提供了丰富的API与发布系统和运维系统无缝接合，提供便捷的可视化操作界面 SLB Portal。\r\n\r\n## 快速入门（Quick Start)\r\n\r\n### 环境准备\r\n1. 首先需要准备一台装有Centos操作系统机器，本文档使用的版本号7.6.1810 \r\n    1. 安装jdk 1.8\r\n    2. 安装MySQL Community Server 5.6.21 及以上版本，参照https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/linux-installation.html\r\n    3. 安装Apache Maven 3.3.9 及以上版本\r\n    4. 开通root账号权限\r\n2. 机器能够联通Github并下载Github项目\r\n\r\n### 快速启动\r\n通过执行SLB Admin、HealthChecker的两个shell脚本，用户可以方便的安装整个系统。\r\n\r\n#### 快速安装SLB Admin\r\n1. 代码下载,【这里需要提供github的地址】\r\n2. 数据库创建,通过MySQL WorkBench创建SLB数据库，如 **slb**\r\n2. 快速安装：\r\n    1. 代码根目录下找到setup.sh 文件，修改setup.sh的编码以及执行权限， 即：\r\n    \r\n    ```\r\n    dos2unix setup.sh\r\n    chmod +x setup.sh\r\n    ```\r\n    2. 执行./setup.sh \r\n    \r\n    ```\r\n    [root@UAT14970 ygshen]# ./setup.sh\r\n    Java check passed # 检查Java版本，需要Java1.8\r\n    Jps check passed # 检查JPS是否安装\r\n    Nginx check passed # Nginx安装、版本check\r\n    Success to start nginx # 启动Nginx 进程\r\n    Where is your DB Server?mysql.server.path #询问数据库服务器的地址，可以是IP、FQDN名称。\r\n    DB Server Port?3306 #数据库的连接端口，默认3306\r\n    DB Name?slb #SLB使用的数据库名称。即第二步创建的数据库\r\n    DB User Name?root #数据库的连接用户\r\n    DB password?123456 #数据库用户密码\r\n    Successfully Install SLB Admin #启动成功\r\n    ```\r\n\r\n#### 初始化\r\n经过以上步骤，SLB Admin已经成功启动。 但是SLB Admin需要的数据库还是空的，尚未创建表以及填充启动数据。 如：系统Admin账号、系统需要的默认证书等。 请参照以下步骤初始化\r\n\r\n1. 浏览器访问 SLB Admin 如： http://127.0.0.1:8099/api/slbs 系统会检测到数据库尚未初始化，用户会被redirect到 http://127.0.0.1:8099/portal/env 初识化页面。\r\n2. 初始化包括: \r\n    1. SLB Admin Api的地址。 默认为以上安装步骤中使用的虚拟机如： http://127.0.0.1:8099 。 此时可以使用默认值，后续可以修改。 \r\n    2. 数据库的创建、初始数据的填充都是自动的。无需人为干预\r\n3. 初始化页面点击 设置。 设置成功后会自动跳转到系统首页\r\n    ![](docs/pics/1.1.2初始化.png)\r\n#### 快速安装Health Checker\r\n\r\n1. 代码下载,【这里需要提供github的地址】\r\n2. 快速安装：\r\n    1. 代码根目录下找到setup.sh 文件，修改setup.sh的编码以及执行权限， 即：\r\n    \r\n    ```\r\n    dos2unix setup.sh\r\n    chmod +x setup.sh\r\n    ```\r\n    2. 执行./setup.sh \r\n    \r\n    ```\r\n    [root@]# ./setup.sh\r\n    Java check passed # 检查Java版本，需要Java1.8\r\n    Jps check passed # 检查JPS是否安装\r\n    Nginx check passed # Nginx安装、版本check\r\n    Success to start nginx # 启动Nginx 进程\r\n    Where is your DB Server?mysql.server.path #询问数据库服务器的地址，可以是IP、FQDN名称。\r\n    DB Server Port?3306 #数据库的连接端口，默认3306\r\n    DB Name?slb #SLB使用的数据库名称。即第二步创建的数据库\r\n    DB User Name?root #数据库的连接用户\r\n    DB password?123456 #数据库用户密码\r\n    Successfully Install SLB Admin #启动成功\r\n    ```\r\n\r\n### 手动配置\r\n以上快速启动，通过脚本一键安装SLB、Nginx、Healthchecker。如需了解安装过程中涉及的详细步骤请参照以下部分\r\n\r\n#### Mysql安装\r\n1. 版本： MySQL Community Server  5.6.21\r\n2. 安装方法参照： https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/linux-installation.html\r\n3. 安装完成后创建空的数据库，数据库名称： **open** \r\n\r\n#### Nginx安装\r\n1. 下载最新的SLB Admin代码。\r\n2. Nginx 安装包在项目根目录，如：[Root]/startup/slb-nginx-1.14.1-3.el7.x86_64.rpm\r\n3. 将以上rmp包copy到虚拟机如 /opt/。\r\n4. Root账号下Yum安装Nginx依赖的第三方组件。 \r\n    1. pcre-devel \u003e= 7.6\r\n    2. jemalloc \u003e= 3.4\r\n    3. jemalloc-devel \u003e= 3.4\r\n    ```\r\n    yum install jemalloc-devel\r\n    yum install jemalloc\r\n    yum install pcre-devel\r\n    yum install dos2unix\r\n    ```\r\n4. Root账号下下运行: \r\n     ```\r\n     rpm -i slb-nginx-1.14.1-3.el7.x86_64.rpm\r\n     ```\r\n5. 安装过程入遇到以下报错， 可以查看系统日志：  \r\n    \r\n    ```\r\n    journalctl -xe\r\n    ```\r\n    如有以下错误，可以先跳过在第7步解决。 如无报错请参照第8步验证Nginx已经启动\r\n    ```\r\n    nginx: the configuration file /opt/app/nginx/conf/nginx.conf syntax is ok\r\n    nginx: [emerg] open() \"/opt/logs/nginx/error.log\" failed (2: No such file or directory)\r\n    nginx: configuration file /opt/app/nginx/conf/nginx.conf test failed\r\n    nginx.service: control process exited, code=exited status=1\r\n    Failed to start nginx - high performance web server.\r\n    ```\r\n5. 如第5步报错，请参照本步骤。如没有错误，请忽略本步骤。\r\n    1. root账号启动Nginx, 执行命令\r\n        ```\r\n        /opt/app/ngxin/sbin/nginx \r\n        ```\r\n6. 验证Nginx启动成功： ps aux | grep nginx 验证nginx进程已经启动\r\n\r\n\r\n#### SLB Admin安装\r\n1. 下载最新的SLB Admin代码。\r\n2. 建议使用IDEA编辑器打开项目源码。\r\n2. 编辑数据库连接串： 打开根目录下property 文件。 如：[Root]/slb/conf/open-source/db.properties 修改DB连接串。\r\n    1. url: 数据库连接串,本文采用的是本地安装所以配置了: 127.0.0.1; 可以设置远程机器。 端口号本文使用的是3306.  \r\n    2. username: 连接数据库的用户名\r\n    3. password：连接数据库的密码\r\n    ```\r\n    driverClassName=com.mysql.jdbc.Driver\r\n    url=jdbc:mysql://127.0.0.1:3306/open?autoReconnect=true\u0026useSSL=false\u0026allowMultiQueries=true\r\n    username=root\r\n    password=123456\r\n    initialSize=0\r\n    connectionProperties=useUnicode=true;characterEncoding=UTF-8;autoReconnect=true;useSSL=false\r\n    maxActive=300\r\n    maxIdle=10\r\n    minIdle=1\r\n    \r\n    ```\r\n    \r\n2. 设置环境变量：打开 [Root]/slb/scripts/startup-open-source.sh 文件修改以下两个参数\r\n    1. JAVA_PATH: 虚拟机上java的安装目录。 \r\n    2. API_BASE_URL: SLB Admin API 地址。 当前API机器为第一步准备的机器host ip\r\n    \r\n    ```\r\n    export JAVA_PATH=\"/usr/java/jdk1.8/bin/java\"\r\n    export API_BASE_URL=\"http://[hostip]:8099\"\r\n    ```\r\n3. 编译：根目录下执行 \r\n    \r\n    ```\r\n    mvn clean package\r\n    ```\r\n\r\n3. 编译成功\r\n4. 将target目录下生成的zip包如:[Root]\\slb\\target\\slb-1.0.1.zip 发送到虚拟机\r\n5. 虚拟机上root执行一下命令\r\n \r\n    \r\n    ```\r\n    \r\n    sudo -i\r\n    \r\n    cd /opt/\r\n    mv your-path-to-slb-1.0.1.zip .\r\n    \r\n    unzip slb-1.0.1.zip -d /opt/slb\r\n    cd slb/scripts/\r\n    dos2unix *\r\n    \r\n    ./startup-open-source.sh\r\n    \r\n    ```\r\n6. 安装成功会有提示： \r\n\r\n    ```\r\n    Starting SlbAdmin\r\n    SlbAdmin started: 30199 # 进程ID\r\n    ```\r\n7. 如果失败可以执行以下命令查看错误日志以及操作日志等 \r\n    \r\n    ```\r\n    vi ../logs/err.txt \r\n    vi ../logs/zeus.log \r\n    ```\r\n\r\n8. 验证： 访问 http://127.0.0.1:8099/api/slbs 如果可以访问，证明启动成功，可以继续以下步骤\r\n\r\n#### Health Checker 安装\r\n\r\n1. 下载最新的HealthChecker代码\r\n2. 启动脚本配置：\r\n    1. 配置[Root]\\HealthChecker\\scripts\\env-opensource.sh启动脚本. \"SLB_CONFIG_URL\"代表slb admin的api地址，此API用于获取healthchecker自身的配置。 如\r\n\r\n    ```\r\n    export SLB_CONFIG_URL=\"http://127.0.0.1:8099/api/hc/properties\"\r\n    ```\r\n2. 根目录 如:[Root]\\healthchecker下执行以下命令执行编译\r\n    \r\n    ```\r\n    mvn clean package\r\n    ```\r\n3. 编译成功后将根目录target文件夹内的zip包(如： [Root]\\HealthChecker\\target\\health-checker-1.zip) Copy到与SLB Admin相同的一台虚拟机上。\r\n\r\n4. 登陆虚拟机，解压缩并启动HealthChecker。执行以下脚本\r\n\r\n    ```\r\n    sudo -i\r\n    cd /opt/\r\n    mv your-path-to-health-checker-1.zip .\r\n    unzip health-checker-1.zip -d healthchecker\r\n    cd /opt/healthchecker/scripts\r\n    dos2unix *\r\n    ./startup-opensource.sh\r\n    ```\r\n    启动成功标示：\r\n    \r\n    ```\r\n    Starting HealthChecker\r\n    HealthChecker started: 3964 # 进程ID\r\n    ```\r\n\r\n## 进阶教程\r\n## 模型介绍\r\n### SLB模型\r\n\r\n1. slb模型表示一组部署了携程的软负载均衡器（soft load balancer, SLB）进程的服务器，表示一个slb部署实例。\r\n2. 主要对外提供请求转发以及负载均衡的作用，其他的额外功能包括对应用服务器的扩容缩容，拉入拉出以及健康检测等。\r\n3. 底层使用nginx实现路由转发和负载均衡。\r\n4. 对外使用虚拟IP（virtual IP, VIP）表示该slb集群，一个slb集群可以有多个VIP。\r\n\r\n### VS模型\r\n\r\n1. 代表了一组提供相同服务的域名，是携程自定义的域名管理单元。\r\n\r\n2. 其定义了一组域名和一个端口，表示可以接收来自这组域名的这个端口的流量。如一个vs的定义如下：\r\n\r\n   ```javascript\r\n   vs: {\r\n       \"domains\":[\r\n           \"abc.com\",\r\n           \"def.com\"\r\n       ],\r\n       \"port\": 80\r\n   }\r\n   ```\r\n\r\n   则表示这个vs可以处理域名为abc.com以及def.com的端口号为80（即HTTP请求）的请求。\r\n\r\n### Group模型\r\n\r\n1. 表示一组运行相同代码的能够对外提供相同服务的进程\r\n\r\n2. 是SLB系统管理的基本单元，大多数的运维操作是针对Group的\r\n\r\n3. 其定义了一组应用服务器（server ips），以及与之相关联的一组vs。对于关联的每个vs，定义了如下属性：\r\n\r\n   ```java\r\n   // 表示group接收请求的统一路径前缀\r\n   private String path;\r\n   // 表示group在该vs下的优先级。当对于某个URL在同一个vs下存在多个group的path与之匹配时，优先将请求转发给优先级较高的group\r\n   private Integer priority;\r\n   ```\r\n\r\n### TrafficPolicy模型\r\n\r\n1. 表示一个流量分配策略。\r\n2. 作为一个在vs和group中间流量分配的组件，其向上关联了一组vs，并制定了接受请求的路径前缀以及相应的优先级（路径和优先级的定义可参照group）；向下关联了一组group，可以指定不同group之间的流量比重。\r\n\r\n### 证书模型\r\n\r\n1. SLB在数据库中保存一本SSL证书的私钥文件和公钥文件，以及其他额外信息，如证书的颁发时间，过期时间域名等。\r\n2. SLB在内部将一本证书与任意多个vs相关联，即关联的vs下的所有域名的请求都会被证书保护。\r\n3. SLB会将公钥文件和私钥文件安装在和vs相关联的每一台SLB服务器上。\r\n\r\n## 简单上手\r\n### 创建SLB\r\n\r\n1. 从slb列表页点击新建按钮进入新建slb页面\r\n2. 自上而下填入必要信息\r\n   1. 名称：slb集群名称\r\n   2. vip列表：该slb集群相关联的VIP列表\r\n   3. Slb Servers列表：该slb集群中的服务器的IP列表\r\n3. 点击提交完成\r\n    ![](docs/pics/2.1创建slb1.png)\r\n    ![](docs/pics/2.1创建slb2.png)\r\n### 创建VS\r\n\r\n1. 如下图进入vs列表页，点击新建进入vs新建页。\r\n2. 依次填写以下信息\r\n   1. Name：VS名称\r\n   2. IsSSL：若勾选上表示该VS接收HTTPS请求，否则表示该VS接收HTTP请求\r\n   3. SLB列表：与该VS相关联的SLB列表\r\n   4. Domain列表：该VS中包含的域名列表\r\n3. 点击提交完成\r\n    ![](docs/pics/2.2创建vs1.png)\r\n    ![](docs/pics/2.2创建vs2.png)\r\n### 创建Group\r\n\r\n1. 如下图进入group列表页，点击新建按钮进入group新建页。\r\n2. 依次填写如下信息：\r\n   1. Name：group名称\r\n   2. IsSSL：默认状态为不勾选状态，无法更改。\r\n   3. GroupVirtualServers：表示与group相关联的VS信息，点击左侧“+”号按钮新增一个groupvirutalserver，依次填写group接收请求的路径前缀，其他信息可不填，点击提交保存。\r\n   4. Healthcheck URL：用于检测检测的URL地址，用于测试服务是否正常。\r\n   5. Healthcheck Policy，依次填入以下信息\r\n      1. Timeout：表示一次健康检测的超时时间，即一旦超过该时间应用服务器仍未返回结果，即认为此次健康检测失败。\r\n      2. Intervals：每次健康监测间隔时长。\r\n      3. Fails：最大健康检测失败次数，超过该次数即认为应用服务器健康监测失败\r\n      4. Passes：失败后检测成功次数阈值。假设该值为3，即连续三次检测检测成功才认为应用恢复正常。\r\n   6. LBMethod：负载均衡方法，表示SLB在向后端服务器转发请求时，在不同的应用服务器之间的调度算法。目前SLB只支持权重轮询调度算法（Weight Round-Robin Scheduling）。\r\n   7. Group Servers：表示该group包含的一组应用服务器\r\n    ![](docs/pics/3.2创建Group1.png)\r\n    ![](docs/pics/3.2创建Group2.png)\r\n### 拉入拉出\r\n进入group详情页，如下图所示。点击Members表格右上方的扳手按钮。有四个状态位可以调节，分别是：\r\n1. Server Status：服务器拉入状态位，用以控制该台服务器上的所有的group成员的拉入状态（慎用）\r\n2. Member Status：group成员拉入状态位，用以控制该group成员的拉入状态（推荐使用），用户可通过该状态位控制group成员的拉入拉出状态。\r\n3. Pull Status：group成员的发布拉入状态，由发布系统控制\r\n4. Health Status：group成员的健康检测拉入状态位，由健康检测系统控制。\r\n    ![](docs/pics/3.3GroupMember.png)\r\n### 请求验证\r\n\r\n在用户创建了slb集群，VS以及group之后，用户可以通过发送请求的方式检验SLB的转发功能。\r\n\r\n假设在本地创建了一台slb服务器，并创建了一个vs，其中包含一个域名，yourdomain.com，并绑定了端口80。除此之外，用户在本地部署了应用，可以yourdomain.com/someres的请求。\r\n\r\n现用户只需将yourdomain.com绑定到本地（通过编辑hosts文件），并向域名发送请求/someres，用户可以发现，请求已经到达了本地部署的应用之中。\r\n\r\n## 设计文档\r\n参照： [SLB 设计文档]()\r\n## 用户手册\r\n参照： [SLB 用户手册]()\r\n## API文档\r\n参照： [SLB API文档]()\r\n## Q\u0026A\r\n参照： [SLB Q\u0026A]()","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctripcorp%2Fzeus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctripcorp%2Fzeus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctripcorp%2Fzeus/lists"}