首页 > 游戏竞技 > 科技之全球垄断 > 382.第381章 【解决方案与报价】

382.第381章 【解决方案与报价】(2/2)

目录
好书推荐: 娘娘她步步高升 快穿之女配有个赚钱系统 和满级大佬互穿以后 反派娇娇被读心,绝色影帝不当人 都市武神 和豪门总裁闪婚后他打脸真香了 美漫:暮年金刚狼,想干嘛就干嘛 被读心后,成了国舅爷的心尖宠 斗罗:被读心后成了武魂殿团宠 大明:朕是假的,如履薄冰

“最后是预扣库存。从上面两种方案的考虑,可以得出结论:只要创建订单,就要频繁操作数据库io。那么有没有一种不需要直接操作数据库io的解决方案呢?答案是有,就是预扣库存,先扣除了库存,保证不超卖,然后异步生成用户订单,这样响应给用户的速度会快很多。”

“那么怎么保证不少卖呢?用户拿到了订单,不支付怎么办?订单都应该有效期,比如说用户五分钟内不支付,订单就失效,就会加入新的库存。订单的生成是异步的,应该放到即时消费队列中处理……”

刘副总听的云里雾里的,但是他发现罗晟和他带来的几个技术专家交流的愈发火热,似乎也得出了一个信息。

找对人了!

这时,罗晟打开了房间里的墙面上的大屏幕,他也拿来了一台笔记本工作电脑打开,示意众人看向主投屏,自己一边操作电脑一边说道:

“go语言原生为并发设计,我就采用go语言给各位演示一下单机抢票的具体流程以及我优化后的解决方案。”

“go包中的init函数先于main函数执行,也在这个阶段主要做一些准备性质的工作。系统需要做的准备工作有:初始化本地库存、初始化远程redis存储统一库存的hash键值、初始化redis链接池。”

“另外还需要初始化一个大小为1的int类型chan,目的是实现分布式锁的功能,也可以直接使用读写锁或者使用redis等其他方式避免资源竞争,但是使用channel更加高效,这就是go语言的哲学,不需要通过共享内存来通信,而是通过通信来共享内存。redis库使用的是redigo,下面是代码:

//localspike包结构体定义

package localspike

type localspike struct {

localinstock int64

localsalesvolume int64

}

//remotespike对hash结构的定义和redis连接池

package remotespike

//远程订单存储健值

type remotespikekeys struct {

……

……

不知不觉,时间已经过去了一个半小时,反正刘副总是听不懂,那些代码看的晕头转向。

技术问题终于讨论的差不多了。

铁路集团的技术专家看向了刘副总并且带着肯定的目光轻点了一下头,刘副总立马就明白了,果断的转投看向罗晟问道:“罗总,如果提供这么一整套完善解决方案,报价是多少?”

罗晟直言:“每年支付10个亿。”

刘副总听到这个数字差点没有一口老血喷出来,12306票务系统一期工程的预算也才3个亿,这样的报价简直贵到难以接受。

……

(本章完)

目录
新书推荐: 全民求生:开局获得天赋每日一抽 废土打工神 末日觉醒,无限神级选择 末世仙临:我的熟练度有亿点强 我只是检察官,不是救世主 序列末日车队:我能升级万物 说好去打假,你被困白帝战机了? 公路求生:我的载具是高冷校花? 化身太阳,我的大日吓哭重生女帝 木筏:让你求生,你暴击出航母?
返回顶部