对于一个分布式商城系统,或许你可以这样优化一下数据库的设计


1.对于发布商品和交易的总数的时候,数据库的设计:

因为对于发布者发布的总商品和交易的总数,这部分不仅仅只是涉及到用户表,同时也涉及到商品表,那么在我的二手闲置商城中,为了确保系统的性能以及可扩展性,不应该盲目尊崇数据库设计的范式,而是实现数据库表的yonyu字段,使其反范式化

 那么分析一下,第一版我对于商品与用户的表设计时,考虑的是在商品与交易表中实时的通过count去计算我们的商品数,这样在用户界面时查看自己的交易与发布的商品的时候,能够实时的去计算和查看我们的发布的商品总数和交易总数,但是这样也带来了一系列问题,如,当我们用户不断的去发布商品和交易的时候,对于我们的数据库带来的性能压力是极大的,可以想象,当用户的商品积累至万级时,所损耗的性能了,每次访问都需要计算对于初期是可以的,但是并不优雅

​那么我的第二版解决方案是什么呢? 即在用户表中实现插入yonyu字段,将用户发布的商品使用计数器的形式去写入数据表中,这样,我们就可以通过查询用户的字段即可实现读取交易总数和发布商品的总数,但是会出现什么问题呢?每当用户发布一个商品或完成一笔交易,都需要更新 `users` 表中的这个计数字段。这会导致对用户表的高频写入,在高并发下容易产生行锁竞争,影响核心用户服务的性能。

​但是对于我的这个小平台而言,这已经是比较好的一个设计方式了,对于业务增长没有怎么大的情况下,这可以应对1000-2000人的使用。但是,作为一个优雅的程序员,我已经在这部分埋点了,这部分后期我需要去实现第三版优化。具体的优化方式为:

​在深入了解了EDA,RabbitMQ的底层原理,我可以确定的是,我们完全可以去是实现一种读写分离,并且考虑最终一致性的一个设计模式,对于微服务而言,我们并不需要去对商品,用户,订单服务进行额外的增加yonyu字段,而是可以去考虑在用户行为模块中,实现DDD架构中的聚合模式,想象一下,目前我的商品模块在发布商品的时候,已经实现了RabbitMQ的异步发布机制,当然,这部分的商品发布机制对应的只是个性化推荐系统的商品推荐,那么我能不能在用户行为模块中实现一种消费机制,实现用户的发布商品与交易商品的回显呢?当然可以,用户的行为模块是关于收藏,点赞发布评论,这些都是可以实现异步机制的,我们不需要实时的去显示,而是为了考虑最终一致性而设计的。
#技术人#
全部评论
字段计数器的更新,目前采用的方式为RabbitMQ消费这样的一个方式,当商品模块发布的时候,通过实现RabbitMQ的计数器的队列和绑定键的撰写,比如:实现创建商品用户计数器的对垒,将其队列绑定到交换机上,通过撰写事件监听监听从RabbitMQ接收到的用户事件信息以及用户计数器的事件基类,实现幂等控制,实体的设计,创建商品发布事件,创建商品下架事件,创建订单完成事件,创建卖家订单完成事件,然后在此基础上去判定事件的类型,是增加还是减少即可
点赞 回复 分享
发布于 06-07 15:02 美国

相关推荐

老朋友都知道主播目前大二溜出去实习两个月了,这两个月饱受学校各种事情折磨,这就算了,最近不是期末,请了一个星期假回来准备考试,结果通知暑假还要上十多天课(小学期),真饿醒啊wk,我现在对这学校真的是全是厌恶了,刚刚开始逃课学Java的时候被抓了,我承认逃课确实不对,但是你说的什么借口,什么叫学校就业率低大家也都知道,找不到工作是社会问题教育制度问题,你是学生还是要先守学校的规章制度,你改变不了。合着我知道这样子毕业就失业我还得等死是吧?靠北的合着你也知道学校就业率低是吧,我读书不就是为了赚钱smgb全面发展身心健康,等毕业找不到工作就健康了是吧,身心快乐是吧,学校秋招来的什么公司自己心里面没有数是吧?餐饮公司都来了是吧,学计算机去炒菜呗,我寻思还不如新东方,合着你现在有工作了每天美滋滋的,学生死活就不管了呗?欧克欧克,我也知道规则不是你决定的,你也怕担责任怕丢工作,所以你的行为我都理解,因为我毕业找不到工作或者说找不到正常工作对你没有一点关系,只要第三方签了就行管你干什么呢,你还是过你美滋滋的生活,屁股决定脑袋大家都是成年人都懂,但是你装什么,冠冕堂皇站在道德制高点,学校里面一些老师也是,一直给学生传输错误的信息,真正对就业有用的一点不知道,推一些乱七八糟的比赛,真有意思要是他们说的那些水赛对就业有帮助我就真的见鬼了,甚至蓝桥杯比赛等级跟acm一样你敢相信,一些什么都不懂的学生就被这些老师带偏了。最后,我真的不明白为什么我们学校跟就业各玩各的,计科专业培养方案更是离谱乱七八糟,什么c,Java,py,模电,数电,物理,鸿蒙,安卓,会计,大数据,财经,云计算……真软件,硬件,前端,后端,运维,安卓复合型废材是吧?好好好这些我都懒得吐槽,最值得吐槽的是大三不让实习让去一个什么gb培训,大四快秋招才让实习,诶诶诶那我就要问了领导或者说写这个培养方案的人有没有尝试了解过计算机的就业吗?最后,我不知道其他学校怎么样,但是我现在真的挺难受,有一种夹在学校落后的教育制度和企业快速发展的用人需求之间的落差中艰难求生的感觉,想当初选专业的时候我也只是一个什么都不懂的高中生,听着张雪峰老师说计算机能赚钱就来了,害我只是单纯想赚钱让我爸妈早点退休的鼠鼠,不过想想也不怪学校了或许真的就是社会问题教育制度问题,大家都是被裹挟前进的人,说又能说大家身边那些浑浑噩噩的人都加入计算机的卷王大军的时候,对我来说是一件好事呢   
wish233:看开点吧,越垃圾的学校规矩越多
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务