aegis 启动流程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: aegis toplevel的进程图

aegis toplevel的进程图

使用dot画图可以使你一遍阅读代码一遍讨论一遍把关系图给画出来了,很赞。

3个子系统

image.png

第一个子系统 - rds_proxy_sup的启动顺序

ac183dee353b0ef0dfc95e33eb0aa7aca4acd49d.png

各个图对应的代码

toplevel的gv代码

digraph G
{
        //rankdir=LR;
    edge [arrowsize= .5]
    node [fontsize = 11, height = .02, style=filled, color=black, fillcolor=greenyellow]
    aegis_sup -> rds_proxy_sup;
    aegis_sup -> aegis_public_sup;
    aegis_sup -> rds_api_sup;
    aegis_sup [shape = doublecircle, color = red]
    {rank = same;
     rds_proxy_sup;
     aegis_public_sup;
     rds_api_sup; }
}

rds_proxy_sup 子进程启动顺序的gv代码

digraph G
{
        edge [arrowsize= .5]
    node [fontsize = 11, height = .02, style=filled, color=black, fillcolor=greenyellow]
    aegis_sup -> rds_proxy_sup;
    aegis_sup -> aegis_public_sup;
    aegis_sup -> rds_api_sup;
    rank = same;
     rds_proxy_sup;
     aegis_public_sup;
     rds_api_sup; }
    rds_proxy_sup -> rds_proxy_session_sup;
    rds_proxy_sup -> rds_proxy_acceptor_manager_sup;
    rds_proxy_sup -> rds_proxy_manager_sup;
    rds_proxy_sup -> rds_proxy_monitor_sup;
    rds_proxy_sup -> rds_proxy_partition_sup;
    rds_proxy_sup -> rds_proxy_mem_monitor;
    rds_proxy_sup -> rds_proxy_downgrade_task;
    {rank = same;
        rds_proxy_session_sup;
        rds_proxy_acceptor_manager_sup;
        rds_proxy_manager_sup;
        rds_proxy_monitor_sup;
        rds_proxy_partition_sup;
        rds_proxy_mem_monitor;
        rds_proxy_downgrade_task }
    // acceptor
    rds_proxy_acceptor_manager_sup -> rds_proxy_listen;
    rds_proxy_acceptor_manager_sup -> rds_proxy_heart_acceptor_sup;
    rds_proxy_acceptor_manager_sup -> rds_proxy_acceptors_sup;
    {rank = same;
        rds_proxy_listen;
        rds_proxy_heart_acceptor_sup;
        rds_proxy_acceptors_sup;
    }
    rds_proxy_acceptors_sup -> rds_proxy_acceptor_NbAcceptors;
    rds_proxy_acceptor_NbAcceptors -> rds_proxy_listen [label = get_listen, style=dashed, color=blue];
    rds_proxy_acceptor_NbAcceptors -> rds_proxy_session [label = start, style=dashed, color=blue];
    // session sup
    rds_proxy_session_sup -> rds_mysql_session_sup00_16;
    rds_proxy_session_sup -> rds_mysql_backend_sup00_16;
    rds_proxy_session_sup -> rds_mysql_simple_session_sup00_16;
    rds_proxy_session_sup -> rds_mssql_session_sup00_16;
    {rank = same;
        rds_mysql_session_sup00_16;
        rds_mysql_backend_sup00_16;
        rds_mysql_simple_session_sup00_16;
        rds_mssql_session_sup00_16;
    }
    rds_mysql_session_sup00_16 -> rds_mysql_session;
    rds_mssql_session_sup00_16 -> rds_mssql_session;
    rds_mysql_backend_sup00_16 -> rds_mysql_backend;
    rds_mysql_session -> rds_mysql_backend_sup00_16 [label = "call start_child", style=dashed, color=blue];
    rds_proxy_manager_sup -> rds_proxy_connections_pool;
    rds_proxy_manager_sup -> rds_proxy_metastore_cache;
    rds_proxy_manager_sup -> rds_proxy_ips_pool_checker;
    rds_proxy_manager_sup -> rds_proxy_switcher_checker;
    rds_proxy_manager_sup -> rds_proxy_switcher_server;
    rds_proxy_manager_sup -> rds_proxy_flow_reduce;
    rds_proxy_manager_sup -> rds_proxy_netflow;
    rds_proxy_manager_sup -> rds_proxy_crontab_sup;
    rds_proxy_mem_monitor [shape = box, fillcolor = yellow];
    rds_proxy_downgrade_task [shape = box, fillcolor = yellow];
    rds_proxy_listen [shape = box, fillcolor = yellow];
    rds_proxy_connections_pool [shape = box, fillcolor = yellow];
    rds_proxy_metastore_cache [shape = box, fillcolor = yellow];
    rds_proxy_ips_pool_checker [shape = box, fillcolor = yellow];
    rds_proxy_switcher_server [shape = box, fillcolor = yellow];
    rds_proxy_switcher_checker [shape = box, fillcolor = yellow];
    rds_proxy_flow_reduce [shape = box, fillcolor = yellow];
    rds_proxy_netflow [shape = box, fillcolor = yellow];
    rds_proxy_acceptor_NbAcceptors [shape = box, fillcolor = yellow];
    rds_mssql_session [shape = box, fillcolor = green];
    rds_mysql_backend [shape = box, fillcolor = green];
    rds_mysql_session [shape = box, fillcolor = green];
}
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
jenkins 持续交付
Jenkins Pipeline 参数化构建
Jenkins Pipeline 参数化构建
554 0
|
4月前
|
存储 监控 调度
阿里云对象存储OSS之间进行数据转移教程
讲解如何在阿里云对象存储OSS之间进行跨账号、跨地域、以及同地域内的数据迁移,包括数据迁移之前的准备工作和实施数据迁移以及一些后续操作
|
8月前
|
人工智能 API Go
MCP Server 牛刀小试之雷池 MCP
MCP(Model Context Protocol)是AI编程领域的热门话题,由Anthropic于2024年提出。它是一种标准化协议,用于AI模型与本地/远程资源交互,类似USB-C接口,支持多种数据源和工具连接。本文以雷池WAF为例,介绍如何通过MCP协议创建服务器,实现AI自动化管理。项目使用Golang SDK开发,功能包括创建受保护应用、获取证书及攻击事件统计等。视频演示展示了如何查询近一个月的拦截事件和WAF证书配置。尽管开发工作量较大,但MCP使LLM与工具解耦,提升智能化水平。扩展资料包含中文文档和示例指南。
670 13
MCP Server 牛刀小试之雷池 MCP
|
9月前
|
JSON 前端开发 JavaScript
HarmonyOS NEXT 实战系列10-网络通信
本文介绍了网络通信相关知识,包括HTTP协议的工作原理、鸿蒙系统中HTTP模块的使用方法、Promise异步操作处理机制及async/await语法糖的应用,以及JSON数据格式的语法规则与转换方法。重点讲解了HTTP请求响应流程、鸿蒙开发中的网络权限申请与代码实现、Promise三种状态及创建方式,并通过示例说明异步编程技巧和JSON在数据传递中的应用。
276 10
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
640 0
STM32CubeMX IWDG和WWDG
STM32CubeMX IWDG和WWDG
569 11
|
对象存储 机器学习/深度学习 存储
大语言模型一键转存到OSS并挂载PAI实现企业知识库
本文介绍如何实现一键转载主流的大语言模型到自己的对象存储OSS空间中,然后再挂载到PAI-DSW实现多种模型切换测试知识库的效果。
1006 0
大语言模型一键转存到OSS并挂载PAI实现企业知识库
|
JSON Prometheus 监控
Prometheus+Grafana 部署
Prometheus 和 Grafana 组成监控解决方案。Prometheus 是开源系统监控工具,Grafana 则用于数据可视化。要连接 Prometheus 数据源,登录 Grafana,点击设置,选择“连接”,添加新数据源,选择 Prometheus 类型,并填入 Prometheus 服务器的 HTTP 地址,如 `http://192.168.1.1:9090`,验证连接。之后,从 Grafana 官方仪表板库导入监控面板,如主机监控模板,以可视化系统状态。完成这些步骤后,便建立了有效的监控系统。
560 1
|
Shell 开发工具 Android开发
|
关系型数据库 MySQL Apache
Seata 入门知识
Seata 入门知识