软件架构 - 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同步,执行对应脚本进行对应表管道同步或直接执行两次写操作
时间: 2024-10-08 11:13:00

软件架构 - Server设计草稿的相关文章

专訪阿里陶辉:大规模分布式系统、高性能server设计经验分享

http://www.csdn.net/article/2014-06-27/2820432 摘要:先后就职于在国内知名的互联网公司,眼下在阿里云弹性计算部门做架构设计与核心模块代码的编写,主要负责云server管理系统和存储系统的优化.陶辉就大规模分布式系统.高性能server设计分享了自己的看法. 关注陶辉非常长时间,初次对陶辉的了解还是在我们CSDN的博客上,从2007年開始写博客,一直到如今,假设不是对技术的追求和热爱,以及热爱分享的精神,我想不是非常多人能坚持下来,拥有多年大型互联网公

游戏server设计的一些感悟

Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:September 30th, 2014 时间荏苒.转眼间已经做游戏一年了,第一款卡牌游戏<完美神话>也已经測试上线了.十一之后開始推广渠道.这一年经历了无数次崩服.回档.卡顿后.如今server最终基本稳定.对于程序猿来说出问题是个好事情,仅仅有在问题面前才干高速成长. 在这里把这一年在server瓶颈中所入的坑做一个总结,希望对

基于ARM和Linux的嵌入式Web Server设计与实现_爱学术——免费下载

[摘要]介绍了嵌入式ARM处理器的特点和硬件平台的设计.嵌入式操作系统的设计,构建了基于嵌入式Web Server的远程监测系统结构,重点分析了嵌入式TCP/IP协议栈的体系结构.嵌入式Web服务器BOA中一些重要文件的配置.实现动态Web服务的CGI技术及动态WEB服务器的移植,实现了基于B/S结构的嵌入式动态Web远程监测系统. [作者] 彭道刚  张浩  江剑宁  许龙虎 转载至爱学术:https://www.ixueshu.com/document/f838a30d77441936318

SQL Server设计三范式

第一范式(1NF) (必须有主键,列不可分) 数据库表中的任何字段都是单一属性的,不可再分 create table aa(id int,NameAge varchar(100)) insert aa values(1,''无限-女 '') 没有达到第一范式 create table aa(id int,name varcahr(10),age char(2)) insert aa values(1,''无限'',''女 '') 达到第一范式 第二范式(2NF) 数据库表中非关键字段对任一候选关

数据库设计:数据库SQL SERVER设计的一些注意点

1.每个表的逐渐是对象+ID,主键+自动递增.不用GUID. 2.每个表添加4个追踪字段:InsertDate,InsertUserID,添加时间和添加人,UpdateDate,UpdateUserID最后一次更新的时间和更新人,共四个字段.如果确定用SQL SERVER,则这样命名可.如果是一个产品,为了支持多个数据库,还是分开来好,比如:insert_date 全部小写,这样命名也是一种好的选择,统一起来即可.如果是我做的话,在SQL SERVER数据库,我还是倾向于按照大小写来命名,Ora

缓存server设计与实现(五)

上次讲到lru与缓存重建,这次主要讲一下关于过期处理的一些主要问题. 在讨论这个问题之前,有个相关的问题须要大家有所了解. 就是对于一个缓存如期仅仅来说,什么东西应该缓存,什么不应该缓存.这是一个比較复杂的问题.涉及到http协议的诸多细节. 这里赵永明大哥写了一篇文章.讲得非常具体,尽管是以ATS为背景讲的,可是思路是想通的,大家能够点击这里去看一下,文章名字非常骚气叫"to cache or not to cache,一直是个大问题". 在缓存server里.分hit和miss两种

小议软件架构设计要点

如何更好地进行软件架构设计,这是软件工程领域中一个永恒的重点话题.过去几十年来,国际软件工程界在软件架构设计方面已经获得了长足发展,大量图书.文章和文献记载了这方面的成熟经验与成果.软件架构设计往往是一件非常复杂的工作,涉及到很多细节和方方面面,可探讨的话题也非常之多.囿于篇幅限制,以下只能根据笔者个人理解,遴选出软件架构设计的个别要点,结合当前流行的敏捷软件工程思想,与大家分享一下自己在软件架构设计方面的心得和体会. 架构决定成败 软件架构是软件产品.软件系统设计当中的主体结构和主要矛盾.任何

R型思维模式对软件开发的影响(草稿)

The pragmatic programmers 一直在工作之余读些书,之前主要是纯英文版的计算机相关的算法,编译器,数学等,想通过读这些书来提高自己每日工作效能,结果收效甚微.一是,因为纯英文的书,阅读的慢,第二,也是最重要的一点,发现掌握的很慢,思前想后感觉可能是和工作的内容距离较远,两者不能互相辅助,第三,不能直接的回馈工作本身. 索性就换一换类型,最先入手的,是<agile software development-principles, patterns, and practices

软件架构学习小结

软件架构设计系统总体架构,从需求到设计的每一个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发easy,维护方便,升级简单.本文从架构师职责.软件架构定义.设计架构.评估架构.架构管理等方面来描写叙述了解软件架构的含义和如何设计软件架构. 一.软件架构师的职责 架构师分为下面几大类:业务架构师.主题领域架构师.技术架构师.项目架构师(J2EE架构师..NET架构师等).系统架构师. 1.架构师的职责主要体现 架构师的职责就是设计一个公司系统的基础架构,并提供关于如何建立和维护系统的指导