凌鲨服务端架构

27 阅读1分钟

服务端架构

flowchart LR
    subgraph extern 
        atomgit
        gitlab
        gitee
        harbor
    end

    subgraph server
        grpc_port
        http_port
        metric_port
    end

    subgraph db
        mongodb
        redis
        emitter
    end

    subgraph cloud
        storage
        mail
        sms
    end

    server --- mongodb
    server --- redis
    server --- emitter

    server --- storage
    server -.- mail
    server -.- sms

    atomgit-- webhook ---http_port
    gitlab-- webhook ---http_port
    gitee-- webhook ---http_port
    harbor-- webhook ---http_port

    desktop
    prometheus

    desktop-- grpc ---grpc_port
    desktop-- mqtt ---emitter
    prometheus --- metric_port

组件说明

数据库

名称版本要求说明
mongodb5.0以上业务主数据库,需要开启事务支持
redis6.0以上版本目前只支持单机版本。保存用户会话信息
emitterv3.0以上基于mqtt协议的订阅发布服务。用来推送信息,保证客户端和服务端数据同步。

云服务

由于国内有很多的云服务,我们把云服务抽象成了接口,还生成了go代码。

名称接口定义说明
storageextension_fs_api.proto用户保存文件。我们提供了本地实现腾讯云cos实现
mailextension_mail_api.proto发送注册邮件。我们提供的腾讯云实现
smsextension_sms_api.proto发送注册短信。我们提供的腾讯云实现

服务端口

端口名称说明
grpc-port提供grpc服务,主要供客户端调用
http_port提供http服务,主要用于接收外部webhook请求
metric_port提供性能参数,用于prometheus收集性能数据
mqtt_port(emitter)用于推送信息给客户端,主要用于服务端和客户端数据同步