Skip to content
/ PCC Public
  • Notifications You must be signed in to change notification settings
  • Fork 21
  • Star 67

PCC 是 Performance Challenge Championship (性能挑战杯)的缩写,是高可用架构组织的一个编程竞赛活动

67 stars 21 forks Branches Tags Activity
Star
Notifications You must be signed in to change notification settings

archnotes/PCC

Branches Tags

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
data
data
 
 
README.md
README.md
 
 
pcc201703.md
pcc201703.md
 
 

Repository files navigation

高可用架构 PCC 性能挑战赛说明 V0.5

[TOC]

实现类似 facebook 中的 like 功能,需要:

  • 可以对一个对象(一条feed、文章、或者url)进行 like 操作,禁止 like 两次,第二次 like 返回错误码
  • 有 isLike 接口,返回参数指定的对象有没有被当前用户 like 过
  • 需要看到一个对象的 like 计数
  • 可以看到一个对象的 like 用户列表(类似 QQ 空间);
  • 上述列表加分项:Like优先显示我的好友列表(social list)。
  • 数据量:每天新增的 like 对象数为 1 千万,每秒 like 计数器查询量为 30 万次 / 秒。

数据量

  • 用户数量级1亿,好友数量级1~1万,单个对象的Like数量1-100万
  • 提供比赛数据集(纯文本格式),需要参赛人员自行导入到自己数据库

技术选型:

  • 建议用关系数据库持久化,关系数据库可自行部署在主机上
  • 技术栈及编程语言不限制
  • 一共3台云主机,不使用云数据库
  • 部署方式不限
  • 分布式或单体应用不限

评选方法

  • 选手需要完成规定的 HTTP API
  • 评委使用统一的压测工具进行压测(自动适配 HTTP Keep-Alive)
  • 压测单台机器的 API,不能使用 Load balance 聚合多台机的 API 来作为比赛成绩,也就是说主要业务逻辑应在被压测的机器完成,但是缓存、存储或者调用的微服务可以部署在其他服务器
  • 选手需要一定程度证明架构的线性扩展能力,比如压测3台服务器,应该可以得到压测1台x3的结果。

评分标准

  • 性能分数 60 + 架构设计 40
  • 取所有评委平均分

评分展示环节

  1. 有架构设计文档或者方便评委理解的展示材料;
  2. RESTful 接口,压测数据;
  3. 最好有优缺点分析,说明权衡点;

接口及返回数据格式定义

server_ip/pcc?action=like|is_like|count|list&oid=xxx&uid=xxx

返回结果

action=like
"oid":1,
"uid":1,
"like_list":[{"1":"nickname"},{"2","Jerry"}]
 }

like_list 返回当前对象的赞用户uid列表,只返回前 20 个用户即可

action=is_like
"oid":1,
"uid":2,
"is_like":1
}
action=count
"oid":1,
"count":1024
}
action=list&cursor=xxx&page_size=xxx&is_friend=1|0

page_size: 返回的列表长度[uint8] is_friend: 是否仅返回只是好友的uid列表 cursor: 起始位置[uint64],取上次返回结果的next_cursor

"oid":1,
"like_list":[{"1":"nickname"},{"2","Jerry"}],
"next_cursor":1234
}
错误码

业务层面出现错误,实现者也需要返回HTTP 200,在返回结果body里面输出error code error code 由实现方自行定义

"error_code":501,
"error_message":"object already been liked.",
"oid":1,
"uid":1
}

测试数据集格式定义

测试数据下载: https://github.com/archnotes/PCC/tree/master/data (非压测数据)

用户数据格式

uid为uint64,1亿条

1,Tom
2,Jerry
用户好友数据格式

uid, friend_id为uint64,只存在双向好友关系,1亿个用户*1000,好友关系通常是一个长尾分布,90% 100个以下,8%长尾分布300-1000,2% 1000-10000

1,2
对象Like列表数据格式

oid,uid为uint64,2亿个objects, 每个1-100w

101:[1,2,3,4,5]

About

PCC 是 Performance Challenge Championship (性能挑战杯)的缩写,是高可用架构组织的一个编程竞赛活动

Resources

Readme
Activity

Stars

67 stars

Watchers

12 watching

Forks

21 forks
Report repository

Releases

No releases published

Packages

No packages published

Contributors 6

Footer

© 2024 GitHub, Inc.

玻璃钢生产厂家镇江校园玻璃钢雕塑报价玻璃钢冰雪奇缘雕塑卡通保定玻璃钢传统人物雕塑玻璃钢海豚喷泉雕塑浙江商场节庆美陈雕塑厂家玻璃钢文字音符雕塑多少钱供应玻璃钢卡通雕塑五华区玻璃钢雕塑加工精准推荐双阳区玻璃钢雕塑工程绵阳玻璃钢卡通雕塑品牌万圣节商场美陈主题无锡玻璃钢仿铜雕塑价格湖南玻璃钢人物雕塑厂家漯河彩绘玻璃钢雕塑欧洲玻璃钢雕塑雕塑玻璃钢仿古牛泸州玻璃钢仿铜雕塑潮州现代玻璃钢雕塑鞍山和平区玻璃钢雕塑制作濮阳户外玻璃钢雕塑湖北户内玻璃钢雕塑多少钱玻璃钢仿铜雕塑效果重庆创意玻璃钢雕塑乐山玻璃钢关公雕塑小型玻璃钢花盆采购生产玻璃钢人物雕塑费用世界级商场美陈邳州美陈商场玻璃钢雕塑加工时间东方玻璃钢雕塑厂家推荐香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化