klusfq / wwbtg

A golang web micro-service framework imitate a php framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wwbtg

这是一个模仿php电商项目的go微服务框,会尽可能保持项目目录结构的不变,中间的一些php组件会被go技术栈替换。

  1. 原框架代码组织架构如下图所示
      +----------------------------------------------------------+
      |                         GW                               |
      +--------------------------|-------------------------------+
      |                        Nginx                             |
      +--------------------------|-------------------------------+
      |                        <App>                             |
      |                          |                               |
      |                          |                               |
      +---------- UI ------------+------ Service ----------------+
      |  uiorder  |  uisale   |       |      |      |     |      |
      +-----------------------+ order | sale | item | ugc | user |
      |         uilib         |       |      |      |     |      |
      +----------------------------------------------------------+
      |           wwbtg       util        gconfig                |
      +----------------------------------------------------------+
  1. 服务监控系统
log file -> filebeat -> kafka -> logstash -> es -> grafana
  1. 数据管理组织架构
+------------------------------ relation database ------------------------------+
|        [ mysql ]                                                              |
|            |                                                                  |
|         <binlog>                                                              |
|            |                                                                  |
|        [ kafka ]                                                              |
|            |                                                                  |
|            ---->>> [ RealTime Data WorkHouse ] (ALI - hologress)              |
|            |                                                                  |
|            ---->>> [ ETL ] >>> [ Data WorkHouse ] (AWS - redshift)            |
|            |                                                                  |
|            ---->>> [ RealTime Stream Compute ] (ALI - flink) ------+          |
|                                                                    |          |
+------------------------------ no relation db ----------------------|----------+
|                                                                    v          |
|        [ redis ]                                              [ dynamodb ]    |
+-------------------------------------------------------------------------------+

功能列表

Common类模块

  • 加载框架基础依赖库
    • json处理组件替换
    • rpc调用组件替换
      • net/rpc实现
      • grpc实现
    • db连接管理组件替换
      • go/mysql驱动连接池管理
  • 实现不同模块(UI、Server)服务启动环境
    • http请求连接管理组件php-fmp > multiplexer(net/http)
  • 实现静态资源服务

UI类模块

uibook模块为例

  • 提供基本路由配置
  • 提供接口
    • 实现一个invoke()
    • 默认请求返回格式json
    • 支持其他返回格式

Server类模块

user模块为例

  • 实现服务注册配置
  • 功能接口层(组合多个数据实体对外提供的最小单位)
    • 默认rpc请求格式json
  • 数据访问层
    • 关系数据库实现
    • nosql数据库实现

网关服务

  • 服务注册、发现
  • 服务链路追踪
  • 基于日志的服务监控系统

消息中间件

  • kafka

数据库中间件

  • binlog

About

A golang web micro-service framework imitate a php framework


Languages

Language:Go 100.0%