/bombayjs-server

bombayjs后台服务端

Primary LanguageTypeScript

BOMBAYJS-SERVER

此项目是bombayjs后台服务端

采用eggjs + mongodb + redis + kafka + elk架构

bombayjs是前端监控解决方案,包括bombayjs、bombayjs-server、bombayjs-admin三个项目

项目地址:

QuickStart

Development

$ npm i
$ npm run dev
$ open http://localhost:7002/

Don't tsc compile at development mode, if you had run tsc then you need to npm run clean before npm run dev.

Deploy

$ npm run tsc
$ npm start

Npm Scripts

  • Use npm run lint to check code style
  • Use npm test to run unit test
  • se npm run clean to clean compiled js at development mode once

Requirement

  • Node.js 8.x
  • Typescript 2.8+

功能列表

管理功能

  • 登录注册
  • 应用管理
  • 用户管理(邀请体系) 角色:管理员 运营 开发
  • 报警预警

web api

  • 上报
  • pvuv
  • error
  • 性能
  • 用户轨迹

wx api

先进入router.ts 路由分发

再到router文件下对应的各个文件,文件再把对应的接口和请求方式分发的controller,其中可能还会加对应的中间层

controller再调用对应的service服务

service再处理逻辑并调用对应的graphql做数据库的查询

graphql定义查询返回的字段

model定义返回字段的详情

extend 是自己添加的一些公共方法

schedule 定时任务更新用户的位置,与elasticsearch结合使用

*** TODO ***

后续优化的方向 1、数据的筛选,因为数据量比较大,业界通用的方案是利用elasticsearch搜索数据库来进行数据的存储和筛选

### elasticsearch  Kibana
安装:
  https://www.elastic.co/guide/cn/elasticsearch/guide/cn/running-elasticsearch.html
启动 
  ./bin/elasticsearch
  ./bin/kibana

2、也可以用kafka来进行相关的动作数据流(通常应该是不需要用的)

### kafka -- mac
安装
brew install kafka
启动zookeeper
zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties 
启动kafka
kafka-server-start /usr/local/etc/kafka/server.properties 

3、永久性存储 最终建议存储到mysql中,数据也更好的统计及前端的展示,建议通过的用户相关信息和错误相关信息再加运行环境进行md5,这样利于mysql最终数据的统计

NOTICE

不同的环境配置需要修改的地方 1、config/bombay.config 中的

##Mongodb 地址 (修改MONGO的地址)
MONGO_URI=mongodb://127.0.0.1:27017/bombayjs

2、config/config.default.ts 中

  // mongodb 服务
  config.mongoose = {
    client: {
      url: MONGO_URI,
      options: {
        // 连接需要的账号和密码
        // auth: {
        //   user: "bombayjs",
        //   password: "bombayjs.113"
        // },
        poolSize: 20
      }
    }
  };

3、修改app/service/transferJava.ts中的转发给后台的地址

const result = await ctx.curl(
  // 请求路径地址修改
  "https://rent-pre.zoomlion.com/portalapi/portalhome/v1/userBehavior/addBatch",
  {
    // 必须指定 method
    method: "POST",
    data: {
      behaviorBatchRequest: JSON.stringify(behaviorBatchRequest)
    },
    // 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
    dataType: "json"
  }
);