系統(tǒng)提供商品的運(yùn)費(fèi)計(jì)算。
[0029]本實(shí)施例中提到的進(jìn)程內(nèi)緩存ehcache與nosql的key-value方式redis緩存,具體是指
a) Ehcache的緩存使用,把運(yùn)費(fèi)計(jì)算相關(guān)的報(bào)價(jià)價(jià)卡信息同步到ehcache中,并且把緩存的key用我們的統(tǒng)一配置中心進(jìn)行配置管理(如果需要更正報(bào)價(jià)價(jià)卡時(shí),可以通過統(tǒng)一配置中心把key修改);價(jià)卡信息存在存儲(chǔ)器的ehcache中,直接的效果就是計(jì)算價(jià)格時(shí),不再讀取數(shù)據(jù)庫(kù),全部在內(nèi)存中計(jì)算完成,讓我們的計(jì)算足夠高效。
[0030]b) key-value的redis緩存,就是把我們平臺(tái)產(chǎn)品需要的一下產(chǎn)品數(shù)據(jù)提前進(jìn)行預(yù)計(jì)算,存在在reids中。全平臺(tái)所有在線的產(chǎn)品的一些常用的數(shù)據(jù),如:是否免運(yùn)費(fèi)、運(yùn)費(fèi)的物流周期等等系列數(shù)據(jù)一次初始化到緩存中;之后平臺(tái)新上傳、修改的產(chǎn)品,則系統(tǒng)以消息隊(duì)列的方式維護(hù)產(chǎn)品的增量逐步同步到,最終把所有產(chǎn)品的這些數(shù)據(jù)維護(hù)到redis中。這些redis內(nèi)的數(shù)據(jù),是經(jīng)常程序計(jì)算好的結(jié)果數(shù)據(jù),這樣調(diào)用方可以直接在redis里面直接讀取,對(duì)批量性能要求高的搜索索引的應(yīng)用中,效率提高會(huì)非常明顯,不用redis緩存時(shí),通過遠(yuǎn)程調(diào)用的方式,系統(tǒng)界面計(jì)算平均要20毫秒左右,并且批量并發(fā)調(diào)用并發(fā)量也只能是300以內(nèi)的線程數(shù),且界面的承受能力有限,很快就出現(xiàn)異常(拒絕連接等異常),如果計(jì)算的結(jié)果存儲(chǔ)在redis,直接從redis取數(shù)據(jù),可以上千的并發(fā)量,且只要9毫秒內(nèi)就能數(shù)據(jù)返回,保證了系統(tǒng)的可用與穩(wěn)定。
[0031]Java緩存框架EhCache EhCache是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,具有快速、精干等特點(diǎn),是Hibernate中默認(rèn)的CacheProvider。
[0032]主要的特性有:
1.快速
2.簡(jiǎn)單
3.多種緩存策略
4.緩存數(shù)據(jù)有兩級(jí):內(nèi)存和磁盤,因此無需擔(dān)心容量問題
5.緩存數(shù)據(jù)會(huì)在虛擬機(jī)重啟的過程中寫入磁盤
6.可以通過RM1、可插入API等方式進(jìn)行分布式緩存
7.具有緩存和緩存管理器的偵聽接口
8.支持多緩存管理器實(shí)例,以及一個(gè)實(shí)例的多個(gè)緩存區(qū)域
9.提供Hibernate的緩存實(shí)現(xiàn)redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list (鏈表)、set (集合)和zset (有序集合)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached—樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave (主從)同步。2性能怎么樣 Redis是一個(gè)高性能的key-value內(nèi)存數(shù)據(jù)庫(kù)。官方性能測(cè)試結(jié)果:set操作每秒110000次,get操作每秒81000次。3可不可以存對(duì)象和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string (字符串)、list (鏈表)、set (集合)和zset (有序集合)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作。4 Redis與memcache的最大區(qū)別Replicat1n(樹形)data types (String、Lists、Sorted Sets、Hashes) persistence (snapshot、aof)很多開發(fā)者都認(rèn)為Redis不可能比Memcached快,Memcached完全基于內(nèi)存,而Redis具有持久化保存特性,即使是異步的,Redis也不可能比Memcached快。但是測(cè)試結(jié)果基本是Redis占絕對(duì)優(yōu)勢(shì)。一直在思考這個(gè)原因,目前想到的原因有這幾方面。Libevent。和Memcached不同,Redis并沒有選擇I ibevent。Libevent為了迎合通用性造成代碼龐大(目前Redis代碼還不到libevent的1/3)及犧牲了在特定平臺(tái)的不少性能。Redis用libevent中兩個(gè)文件修改實(shí)現(xiàn)了自己的epoll event loop (4)。業(yè)界不少開發(fā)者也建議Redis
使用另外一個(gè)libevent高性能替代Iibev,但是作者還是堅(jiān)持Redis應(yīng)該小巧并去依賴的思路。一個(gè)印象深刻的細(xì)節(jié)是編譯Redis之前并不需要執(zhí)行./configure。CAS問題。CAS是Memcached中比較方便的一種防止競(jìng)爭(zhēng)修改資源的方法。CAS實(shí)現(xiàn)需要為每個(gè)cachekey設(shè)置一個(gè)隱藏的cas token, cas相當(dāng)value版本號(hào),每次set會(huì)token需要遞增,因此帶來CPU和內(nèi)存的雙重開銷,雖然這些開銷很小,但是到單機(jī)10G+ cache以及QPS上萬之后這些開銷就會(huì)給雙方相對(duì)帶來一些細(xì)微性能差別(5)。5單臺(tái)Redis的存放數(shù)據(jù)必須比物理內(nèi)存小
Redis的數(shù)據(jù)全部放在內(nèi)存帶來了高速的性能,但是也帶來一些不合理之處。比如一個(gè)中型網(wǎng)站有100萬注冊(cè)用戶,如果這些資料要用Redis來存儲(chǔ),內(nèi)存的容量必須能夠容納這100萬用戶。但是業(yè)務(wù)實(shí)際情況是100萬用戶只有5萬活躍用戶,I周來訪問過I次的也只有15萬用戶,因此全部100萬用戶的數(shù)據(jù)都放在內(nèi)存有不合理之處,RAM需要為冷數(shù)據(jù)買單。這跟操作系統(tǒng)非常相似,操作系統(tǒng)所有應(yīng)用訪問的數(shù)據(jù)都在內(nèi)存,但是如果物理內(nèi)存容納不下新的數(shù)據(jù),操作系統(tǒng)會(huì)智能將部分長(zhǎng)期沒有訪問的數(shù)據(jù)交換到磁盤,為新的應(yīng)用留出空間。現(xiàn)代操作系統(tǒng)給應(yīng)用提供的并不是物理內(nèi)存,而是虛擬內(nèi)存(Virtual Memory)的概念?;谙嗤目紤],Redis 2.0也增加了 VM特性。讓Redis數(shù)據(jù)容量突破了物理內(nèi)存的限制。并實(shí)現(xiàn)了數(shù)據(jù)冷熱分離。
[0033]6 Redis的VM實(shí)現(xiàn)是重復(fù)造輪子 Redis的VM依照之前的印ο 11實(shí)現(xiàn)思路依舊是自己實(shí)現(xiàn)。但是在前面操作系統(tǒng)的介紹提到OS也可以自動(dòng)幫程序?qū)崿F(xiàn)冷熱數(shù)據(jù)分離,Redis只需要OS申請(qǐng)一塊大內(nèi)存,OS會(huì)自動(dòng)將熱數(shù)據(jù)放入物理內(nèi)存,冷數(shù)據(jù)交換到硬盤,另外一個(gè)知名的“理解了現(xiàn)代操作系統(tǒng)”的Varnish就是這樣實(shí)現(xiàn),也取得了非常成功的效果。作者antirez在解釋為什么要自己實(shí)現(xiàn)VM中提到幾個(gè)原因(6)。主要OS的VM換入換出是基于Page概念,比如OS VMl個(gè)Page是4K,4K中只要還有一個(gè)元素即使只有I個(gè)字節(jié)被訪問,這個(gè)頁也不會(huì)被SWAP,換入也同樣道理,讀到一個(gè)字節(jié)可能會(huì)換入4K無用的內(nèi)存。而Redis自己實(shí)現(xiàn)則可以達(dá)到控制換入的粒度。另外訪問操作系統(tǒng)SWAP內(nèi)存區(qū)域時(shí)block進(jìn)程,也是導(dǎo)致Redis要自己實(shí)現(xiàn)VM原因之一。
【主權(quán)項(xiàng)】
1.一種電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,依次包括以下步驟, 結(jié)合平臺(tái)業(yè)務(wù),確定平臺(tái)運(yùn)費(fèi)相關(guān)系統(tǒng)的邊界,將平臺(tái)運(yùn)費(fèi)服務(wù)分成兩個(gè)系統(tǒng):運(yùn)費(fèi)計(jì)算系統(tǒng)和運(yùn)費(fèi)模板系統(tǒng); 根據(jù)運(yùn)費(fèi)計(jì)算相關(guān)結(jié)構(gòu)模型建立所述運(yùn)費(fèi)計(jì)算系統(tǒng)的表結(jié)構(gòu); 運(yùn)行所述運(yùn)費(fèi)計(jì)算系統(tǒng); 將所述運(yùn)費(fèi)計(jì)算系統(tǒng)計(jì)算所得結(jié)果以api遠(yuǎn)程調(diào)用的方式給其它系統(tǒng)提供計(jì)算服務(wù)。
2.如權(quán)利要求1所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,其特征在于,在所述步驟A中,所述運(yùn)費(fèi)計(jì)算系統(tǒng)用于實(shí)現(xiàn)各物流公司的標(biāo)準(zhǔn)運(yùn)費(fèi)的高效精準(zhǔn)計(jì)算。
3.如權(quán)利要求1所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,其特征在于,在所述步驟A中,所述運(yùn)費(fèi)模板系統(tǒng)用于實(shí)現(xiàn)把各物流公司組合起來成為所述運(yùn)費(fèi)模板,并在所述運(yùn)費(fèi)模板中設(shè)置用戶相關(guān)的選項(xiàng)信息。
4.如權(quán)利要求3所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,其特征在于,所述選項(xiàng)信息包括送達(dá)國(guó)家、運(yùn)費(fèi)折扣。
5.如權(quán)利要求4所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,其特征在于,所述運(yùn)費(fèi)計(jì)算系統(tǒng)和所述運(yùn)費(fèi)模板系統(tǒng)是通過服務(wù)化接口的方式提供服務(wù)的。
6.如權(quán)利要求1所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,其特征在于,在所述步驟C中,所述運(yùn)費(fèi)系統(tǒng)的運(yùn)行依次包括以下步驟, C1、輸入商品體積、商品毛重、商品數(shù)量、國(guó)家; C2、篩選可用的運(yùn)費(fèi)方式; C3、判斷是否支持快遞,如果支持,轉(zhuǎn)到C4,如果支持海運(yùn)和空運(yùn),轉(zhuǎn)到C5 ; C4、按平臺(tái)目前情況運(yùn)行,進(jìn)行運(yùn)費(fèi)折算后轉(zhuǎn)到C7 ; C5、查詢支持的港口和承運(yùn)商,并列出該國(guó)家的默認(rèn)港口 ; C6、查詢承運(yùn)商目的港口費(fèi)用并計(jì)算出到港費(fèi); C7、計(jì)算保險(xiǎn),組成運(yùn)費(fèi)報(bào)價(jià)明細(xì)列表。
7.如權(quán)利要求1所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法,其特征在于,所述電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法采用進(jìn)程內(nèi)緩存ehcache與nosql的key-value方式的redis緩存。
8.一種電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的系統(tǒng),其特征在于,該系統(tǒng)包括兩個(gè)子系統(tǒng),運(yùn)費(fèi)計(jì)算系統(tǒng)和運(yùn)費(fèi)模板系統(tǒng)。
9.如權(quán)利要求8所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的系統(tǒng),其特征在于,所述系統(tǒng)的運(yùn)行依次包括以下步驟, 結(jié)合平臺(tái)業(yè)務(wù),確定平臺(tái)運(yùn)費(fèi)相關(guān)系統(tǒng)的邊界,將平臺(tái)運(yùn)費(fèi)服務(wù)分成兩個(gè)系統(tǒng):運(yùn)費(fèi)計(jì)算系統(tǒng)和運(yùn)費(fèi)模板系統(tǒng); 根據(jù)運(yùn)費(fèi)計(jì)算相關(guān)結(jié)構(gòu)模型建立所述運(yùn)費(fèi)計(jì)算系統(tǒng)的表結(jié)構(gòu); 運(yùn)行所述運(yùn)費(fèi)計(jì)算系統(tǒng); 將所述運(yùn)費(fèi)計(jì)算系統(tǒng)計(jì)算所得結(jié)果以api遠(yuǎn)程調(diào)用的方式給其它系統(tǒng)提供計(jì)算服務(wù)。
10.如權(quán)利要求9所述的電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的系統(tǒng),其特征在于,在所述步驟a中,所述運(yùn)費(fèi)計(jì)算系統(tǒng)用于實(shí)現(xiàn)各物流公司的標(biāo)準(zhǔn)運(yùn)費(fèi)的高效精準(zhǔn)計(jì)算。
【專利摘要】本發(fā)明提供一種電子商務(wù)平臺(tái)運(yùn)費(fèi)服務(wù)的方法和系統(tǒng),涉及國(guó)際物流計(jì)算領(lǐng)域,把運(yùn)費(fèi)計(jì)算以系統(tǒng)的形式獨(dú)立存在,并給其它系統(tǒng)以API方式提供服務(wù);服務(wù)內(nèi)部的計(jì)算實(shí)現(xiàn)高度使用進(jìn)程內(nèi)緩存提供執(zhí)行效率。本發(fā)明實(shí)現(xiàn)了運(yùn)費(fèi)計(jì)算的精準(zhǔn)精確,以及計(jì)算的快捷,保證了工作效率。
【IPC分類】G06Q50-28, G06Q10-08, G06Q30-06
【公開號(hào)】CN104715349
【申請(qǐng)?zhí)枴緾N201310673631
【發(fā)明人】楊秦, 顧錫棟, 賈玉光
【申請(qǐng)人】世紀(jì)禾光科技發(fā)展(北京)有限公司
【公開日】2015年6月17日
【申請(qǐng)日】2013年12月12日