联系我们:010-88559646

  老师群

170086145

  学生群

179326524

209318323

215410234

客服电话:010-88559646

代理层架构的分布式数据库中间件实现流式查询

时间:2020-03-13        来 源:中国软件杯

第九届中国软件杯大赛--B组赛题 (第一批赛题)

赛题解析会直播回放:https://wx.vzan.com/live/livedetail-1348484879

本赛题于5.26更新,详情见下方

晋级决赛团队作品优化建议(8.3发布):

1.从哪些因素控制最优,有从内存,队列考虑,也有与前端连接,后端节点数结合考虑,如何换算?有哪些参数值得动态控制?

2.设计文档(word或ppt)目的是让阅读者理解清楚设计思路,路径。需从便于阅读者理解角度完善



赛题名称:代理层架构的分布式数据库中间件实现流式查询

组类: B 高职组

 

赛题简介:介绍整个赛题的实现目标、实用价值、涉及技术和整体要求

 云计算去IOE(ibm,orale ,emc)浪潮中目前多采用sharding proxy数据库sharding中间件代理架构,实现对常见开源数据库如MySQL的横向扩展,现有开源组件主要有MyCatdble,这种share nothing架构相对简单,主要针对写扩展,即OLTP场景,但同时也需要兼顾少量统计查询类,如select x from tb大数据量查询,如百万,千万级别,现有MyCatdble对此查询是一边读取后端MySQL数据到其内存缓存,一边缓存被客户端读取,如果某些业务场景处理慢读取记录速度较慢,数据会在代理层中间件内存积压,对代理中间件的内存大小要求较高,也容易导致代理中间件内存溢出,即缺乏流式控制机制。

实用价值:如果能实现流式控制查询,即客户端取走一定结果后,代理层中间再拉取后端数据库的数据到自身内存,确保代理中间件的内存缓存不过大,可有效降低对中间件内存大小要求。

整体要求:对开源MyCatdble扩展支持流式查询,客户端查询的数据量内存超过中间件堆内内存时,不会出现内存溢出,服务不可用的故障

涉及技术:java,流式查询, NIO,网络编程,MySQL

赛题业务场景:描述赛题相关的真实企业业务背景。从真实场景中,适当简化或者提炼出适合比赛的赛题场景

 IOE浪潮从互联网企业延伸到传统软件企业,包括电信运营商运营支撑系统BOSS,存在通过开源中间件+开源数据库替换传统集中商业数据库的客户需求,获得更好扩展性及总体有用成本及对核心技术的自主可控。开源的数据库分库分表中间件MyCatdble主要针对OLTP实现了写扩展,同时业务系统中普遍存在某些场景下大数据量读场景, MyCatdble在这方面支持存在不足,业务系统希望能保持SQL接口的同时实现类似传统集中数据库的访问体验 

基本功能

基于开源MyCatdble扩展,确认基于的MyCatdble版本不支持前面描述的流式查询机制,不可基于其他产品,如数据源层架构的分布式数据库中间件shardingpshere。后端为MySQL,不能是Oracle数据库(规避使用现成后端JDBC连接方式)。实现途径方案不限,但要求不增加额外特殊专用硬件设备

以业界标准sysbench的测试表为表结构,逻辑表50w, 按id字段水平分片到4schema。自行编写java客户端程序,通过jdbc连接代理层中间件,启用mysql jdbc驱动的流式查询, 执行select xx from tb后,阻塞(模拟客户端消费慢),此时查看通过jdk自带JConsole工具观察代理层中间件,对中间件内存不超过启动内存,内存不会持续增加,即支持流式查询

多个并发下也支持流式查询

非功能性

 无

实现条件:开发环境、实验平台、开发语言、数据库、编译器、涉及硬件实现条件(请尽量明确)

开发环境IDE不限制,基于java 语言,推荐1.8jdk小版本不限定, 提供基于MyCatdble哪个版本扩展信息,确认基于的版本不支持前面描述的流式查询

硬件都是个人X86架构的PC,为便于开发,相比生产简化硬件条件,客户端程序,代理层中间件,mysql部署在1台个人电脑上,规避跨网络影响因素:

建议个人电脑配置要求:CPU 4物理Core以上,内存4G10G磁盘空间以上:

1.客户端jdbc模拟查询测试程序(见附件JdbcStreammaven项目),主要消耗CPU,内存64M以上

2.改造后的中间件MyCatdble进程实例: 启动64M内存 (不限定使用堆内还是堆外内存,限定较小为在较低配置下个人电脑下可开发,加快效果显现,考察流式查询,实际生产内存远大于此)

3.MySQL实例1(mysql5.7以上小版本不限制)   innodb_buffer_pool_size 设置为128M内存(可取默认值),创建4schema作为4个分片),磁盘空间预留 5G(保证能存放测试表sbtest1 50w条记录数据)

一般单台个人电脑资源足够,如果不够,3个程序可分拆部署到多台个人电脑

测试数据或平台:提供给参赛者的测试环境和测试数据

 测试数据:
 
表结构采用业界标准sysbench性能测试里表结构

 CREATE TABLE `sbtest1` (

  `id` int(10) unsigned NOT NULL,

  `k` int(10) unsigned NOT NULL DEFAULT '0',

  `c` char(120) NOT NULL DEFAULT '',

  `pad` char(60) NOT NULL DEFAULT '',

  KEY `xid` (`id`),

  KEY `k_1` (`k`)

)

建的库,表都是UTF-8编码

id分片Hash4取模,分布到4个分片

loaddata 导入附件的50w.sql文件,对mycatdble执行(文件下载见赛题下方)

load data infile 'E:(w.sql' into table sbtest1 fields terminated by '|' lines terminated by ' '(id,k,c,pad);

导入后检查各分片数据分布,mycat为例

/*!mycat: sql=select * from sbtest1*/

 select count(1) from sbtest1;

示例:

1584098478389661.png 

 

开发所需设备及设备指标需求说明

无特殊要求,一般普通个人电脑可以满足开发要求



 

文档及其他要求

设计方案,自测报告,源码文件

评审要点

1、技术可行性及创新度

2、基本需求

3、功能性技术需求

4、技术文档

其中作品的技术功能需求和基本需求完成度为主要的评审要点,占主要评分占比,其次评审作品的创新度和独立性,以及技术文档的撰写。

初赛作品提交要求

 

源代码文件、jdk8打好tar包、

相关文档(设计文档,自测报告)、

演示视频提供支撑性能功能达标的视频支持,便于评审初审、介绍ppt

(演示视频格式不限,时间尽量控制在7分钟以内)


文件下载 

 50w.7z            

JdbcStream.7z


出题企业:浩鲸科技

答疑老师:王老师  wang.hailong@iwhaleclod.com

                 钉钉群号:32004944



上一篇:上一篇:没有了
下一篇:下一篇:没有了

主办单位

工业和信息化部

教育部

江苏省人民政府

承办单位

中国电子信息产业发展研究院

江苏省工业和信息化厅

江苏省教育厅

教育部高等学校计算机类专业教学指导委员会

信息技术新工科产学研联盟

执行单位

中国信息化周报

南京江北新区产业技术研创园

江苏软件产业人才发展基金会

南京市软件和信息服务集群发展促进机构

南京航空航天大学

关于我们

客服电话:010-88559646

邮编:100048

联系地址:北京市海淀区紫竹院路66号赛迪大厦18层

网站备案/许可证号:京ICP备05039896号-10     京公网安备 11010802020860号