架构设计 - Server设计草稿

DMServer Framework 

主要属性:

  1. 四个模块部署在不同服务器,双层部分考虑主备和分布式部署。
  2. 架构可依据具体前端需求进行裁剪,灵活配置。
  3. gate用于业务框架分布式部署,在业务量可控范围可取消,做集中控制。
  4. 所有除gate服务均挂载在MQ上,需要做集群的服务以MQ队列名称做为集群名称,一个集群提供一个MQ队列,无集群默认提供一个MQ队列。集群上的节点以竞争方式消费队列数据。
  5. 对app只开放gate和proxy,gate以短连接形式获取proxy地址,proxy为长连接。
  6. Maintain需要具备自动监控维护和主动维护两个功能,并开放web界面。

Message protocol

所有通信均采用此消息协议头,基于tcp上层封装,通信分以下四种:

  1. App  to  server   request  /  response 数据请求
  2. Server  to  app   无request 消息推送与心跳
  3. Server  to  server  无response 数据转发
  4. Server  to  server  request  /  response 数据请求

协议参数:

  1. Message id  消息id,根据时间戳生成,保证唯一性(MAC + IMEI + 时 + 分 + 秒 +)
  2. User id  用户id,注册时分配用户唯一id标示用户
  3. Msg cmd  消息命令码,server通过配置文件划分命令区域,由于前段屏蔽业务服务器,proxy通过命令码进行映射寻址
  4. Body length  消息体长度,server依据length接收数据及,分配数据内存
  5. From  消息源地址,server在配置文件中定义各个服务器及app标示id
  6. To  消息目的地址
  7. Cluster id /node id   集群id,节点id,可选参数,第一次登陆依据负载分配cluster及node并存入redis,无此参数以redis数据为默认参数
  8. Wait time  响应等待时间,可选参数,不填取默认等待时间
  9. Flag  标示消息类型
  10. Reserve  保留,此数据位结束后紧跟消息体,消息体采用protobuf进行数据编解码压缩,加密数据在压缩基础上加密

Database Framework

数据库属性:

  1. 数据库分redis及MySQL,两个数据库数据关系为mysql部分热数据刷新到redis
  2. Redis不做备份,但必须做主从
  3. 写数据使用MySQL,读数据使用Redis,做读写分离,读Redis失败再从MySQL获取
  4. MySQL需要做热备
  5. 单独起进程进行数据库维护,依据log_bin进行redis同步,执行对应脚本进行对应表管道同步或直接执行两次写操作

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

Sqlmap联合Nginx实现“地毯式”检测网站SQL注入漏洞

以安全防御方的角度来看,防御的广度比深度更具优先级,这也是信息安全中木桶原理的体现。 Sqlmap是一个开源的SQL注入漏洞检测工具,Nginx是高性能的WEB...

45380
来自专栏大数据智能实战

HBase启动过于缓慢的原因及其优化策略

当HBASE导入了几十亿的数据记录时,某一天重启一下HBASE,发现启动过于缓慢,一直在提示PleaseHoldException:Master is init...

26090
来自专栏架构师之路

缓存与数据库一致性保证

本文主要讨论这么几个问题: (1)啥时候数据库和缓存中的数据会不一致 (2)不一致优化思路 (3)如何保证数据库与缓存的一致性 一、需求缘起 上一篇《缓存架构设...

709100
来自专栏前端开发

[记] 初次体验小程序绑定合法域名的坑

4.2K70
来自专栏java相关

Redis学习笔记01---配置文件

14140
来自专栏cs

linux学习笔记二

基本文件系统。 1.0 ext4文件系统 windows一般是NTFS,早期的FAT32,DOS是FAT文件系统,linux大多数发行版采用ext4文件系统。...

42360
来自专栏GopherCoder

『Ansible 上手指南』

19530
来自专栏ionic3+

【技巧】ionic3善用数据变更检查

利用Cordova插件加载本地图片显示在html中,有时等很久才显示,以为是插件的问题,但是调试的时候,发现图像数据很快就返回了,那猜想是显示的问题,同时发现,...

10650
来自专栏IT笔记

Tomcat优化之配置线程池

简介 线程池作为提高程序处理数据能力的一种方案,应用非常广泛。大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点:...

37680
来自专栏Java成神之路

分布式_事务_01_2PC框架raincat快速体验

配置txManaager, 修改application.properties中你自己的redis配置 启动TxManagerApplication

24410

扫码关注云+社区

领取腾讯云代金券