ithub.com/didi/tinyid "tinyid")
方案測試報告
測試環(huán)境
報告匯總
參考
為什么使用發(fā)號器
復(fù)雜分布式架構(gòu)系統(tǒng)中,需要保證生成id全局唯一
適用兼容kubernetes彈性擴(kuò)容,自動重啟等場景,無需維護(hù)現(xiàn)在雪花算法中使用的的workerid
對于以后業(yè)務(wù)可擴(kuò)展強(qiáng),可以為所有業(yè)務(wù)提供全局唯一id
方案一
美團(tuán)leaf發(fā)號器leaf-segment數(shù)據(jù)庫方案(業(yè)務(wù)中不可接受出現(xiàn)連續(xù)id可跳過)
缺點
id號碼不夠隨
ofo大數(shù)據(jù)報告被指“數(shù)據(jù)造假”,微軟小冰入駐芒果臺將與何炅搭檔主持 | 大數(shù)據(jù)24小時:據(jù)介紹,楊正洪博士是國內(nèi)知名的云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)應(yīng)用專家,曾在ibm硅谷實驗室工作了l0年時間。
此次加盟sinobbd,楊正洪將主要負(fù)責(zé)集團(tuán)大數(shù)據(jù)管理平臺的開發(fā)及運(yùn)營,并主持大數(shù)據(jù)相關(guān)產(chǎn)品的自主創(chuàng)新設(shè)計工作。?
六、浪潮集團(tuán)發(fā)布“城市云”戰(zhàn)略,專注為政府提供云計算服務(wù)自2011年,云計算、大數(shù)據(jù)服務(wù)商浪潮集團(tuán)正式推出“政務(wù)云”概念以來,已經(jīng)先后與我國多個省、市、自治區(qū)達(dá)成了戰(zhàn)略合作關(guān)系,并共同打造了數(shù)十家云計算數(shù)據(jù)中心
為了進(jìn)一步推動政務(wù)云的實施,日前,浪潮又發(fā)布了“城市云”戰(zhàn)略,宣布將在全國布局200朵城市云,推動傳統(tǒng)產(chǎn)業(yè)轉(zhuǎn)型升級。
七、財務(wù)大數(shù)據(jù)公司“中財信”新三板掛牌上市成立于2006年10月的中財信總部位于山東濰坊,專注于為政府部門、大型企事業(yè)單位提供系統(tǒng)解決方案、應(yīng)用系統(tǒng)開發(fā)、技術(shù)咨詢和服務(wù),其主營業(yè)務(wù)包括電子政務(wù)應(yīng)用系統(tǒng)開發(fā)
html、cssbootstrap、jsjquery、ajax與json數(shù)據(jù)交互總結(jié):設(shè)計個個人網(wǎng)站,利用css、javascript、html5、jquery庫和ajax等實現(xiàn)網(wǎng)站各功能模塊,下面介紹我設(shè)計的網(wǎng)站各大功能模塊: 個人簡歷模塊: 包涵個人基本信息(利用css的float和
clear屬性實現(xiàn)個人照片與文字的浮動排版)、求學(xué)經(jīng)歷、獲獎情況、參與社團(tuán)、興趣愛好等(一個方面組織成一張網(wǎng)頁),利用框架技術(shù)實現(xiàn)在同一區(qū)域顯示不同網(wǎng)頁內(nèi)容。?
登入首頁 利用文字、圖片(使用ajax實現(xiàn)圖片輪轉(zhuǎn))展示家鄉(xiāng)特產(chǎn)和美食?
家鄉(xiāng)旅游景點利用文字、圖片、視頻(自拍視頻,配字幕和解說)展示123564.png成績顯示 班級通訊錄或班級學(xué)生成績展示:使用ajax基于本地xml或json數(shù)據(jù)實現(xiàn)班級通訊錄或?qū)W生成績冊在網(wǎng)頁上展示。
【谷歌】停止與華為合作,限制華為使用安卓系統(tǒng):app(應(yīng)用程序),例如chrome(瀏覽器),youtube(視頻網(wǎng)站),gmail(郵箱)以及背后的服務(wù)。
因為海外用戶下app可沒中國這么方便,沒有中國這么多互聯(lián)網(wǎng)公司提供配套服務(wù),所以海外華為手機(jī)大都用谷歌的app。
現(xiàn)在谷歌中止合作導(dǎo)致華為手機(jī)上的服務(wù)和更新沒了,海外用戶的app都不能用了,肯定會大受影響。單從手機(jī)出貨量的角度來看,海外市場為華為貢獻(xiàn)接近一半的出貨量。
華為起家是靠生產(chǎn)和銷售通訊設(shè)備,比如交換機(jī)、路由器等。 ?華為靠著恐怖的基站建設(shè)能力,打入亞非拉市場;靠著技術(shù)過硬、服務(wù)到位打入歐洲高端市場。
一路上踩倒的通路設(shè)備商不計其數(shù),它們是瑞典的愛立信、芬蘭的諾基亞、美國的思科、法國的阿爾卡特等等。 做到通訊設(shè)備的第一后,華為又把眼光轉(zhuǎn)向以手機(jī)為主的消費(fèi)者業(yè)務(wù)。
華為騰訊為用戶數(shù)據(jù)“掐架”;蘋果加強(qiáng)在部分國家的數(shù)據(jù)采集 | dt數(shù)讀:據(jù)媒體報道,華為、騰訊雙方糾紛起因源于華為旗下互聯(lián)網(wǎng)手機(jī)品牌榮耀在2016年12月發(fā)布的榮耀magic手機(jī),目前該款手機(jī)可根據(jù)微信聊天內(nèi)容自動加載地址、天氣、時間等信息;通話、購物等時候也能提示相關(guān)服務(wù)信息
而就在不久前,蘋果官方網(wǎng)站已經(jīng)坐實了這個消息,據(jù)官網(wǎng)文件指出,蘋果的廂式貨車正在美國、英國、法國、意大利、西班牙等地進(jìn)行數(shù)據(jù)收集,對于此行的目的,官方辭令是“用于提升蘋果地圖產(chǎn)品性能”。
雖然庫克曾否認(rèn)蘋果的造車計劃,不過向來保密到家的蘋果,未來推出自家的icar也不是沒有可能。
3 阿里巴巴聯(lián)合13個省市,用大數(shù)據(jù)打假據(jù)央廣網(wǎng)8月2日報道,在阿里巴巴公布“大數(shù)據(jù)打假地圖”一個月后,全國及13個省市雙打辦、雙打成員單位與阿里巴巴代表近日齊聚杭州,召開“云劍聯(lián)盟”行動會議,探討線下跨區(qū)域聯(lián)合打假行動方案
記者根據(jù)《白皮書》數(shù)據(jù)初步統(tǒng)計發(fā)現(xiàn),中國大數(shù)據(jù)產(chǎn)業(yè)2016年產(chǎn)業(yè)規(guī)模達(dá)14500億元,2020年將達(dá)5萬億元。
ai影響因子:4月份都有哪些企業(yè)研究院在影響你?:「ai 影響因子」是雷鋒網(wǎng)學(xué)術(shù)頻道 ai 科技評論旗下數(shù)據(jù)庫項目,旨在呈現(xiàn)國內(nèi)企業(yè)研究院學(xué)術(shù)&開發(fā)實力,為高校學(xué)生及從業(yè)者提供在會議期刊論文、數(shù)據(jù)集比賽及開發(fā)項目三大領(lǐng)域的橫向?qū)Ρ葏⒖肌?百度「燎原計劃 2018」暨百度 ai 開發(fā)者實戰(zhàn)營第二季(首站北京)發(fā)布三項重大消息:開放 easydl 平臺、發(fā)布「深度學(xué)習(xí)工程師評價標(biāo)準(zhǔn)」、人臉識別全部接口面向中小企業(yè)與開發(fā)者將永久免費(fèi)。
搜狗搜索宣布正式上線海外權(quán)威健康信息,基于搜索技術(shù)積淀和機(jī)器翻譯技術(shù),整合了全球 700 余家權(quán)威健康網(wǎng)站的近千萬優(yōu)質(zhì)內(nèi)容,提供給中國用戶。
據(jù)悉,目前整合的內(nèi)容中,包括美國國立衛(wèi)生研究院、美國食品和藥物管理局等 41 家政府機(jī)構(gòu)網(wǎng)站,美國癌癥學(xué)會、美國心臟協(xié)會等 312 家醫(yī)療行業(yè)協(xié)會,梅奧診所、克利夫蘭診所、美國有線電視新聞網(wǎng)、webmd
、更權(quán)威的「打開方式」關(guān)注國內(nèi)企業(yè)研究院的學(xué)術(shù)研究。
oa文件管理系統(tǒng):軍工企業(yè)審核之分布式系統(tǒng)架構(gòu)中使用發(fā)號器發(fā)號器
為什么使用發(fā)號器
方案一美團(tuán)leaf發(fā)號器`leaf-segment數(shù)據(jù)庫方案`(業(yè)務(wù)中不可接受出現(xiàn)連續(xù)id可跳過)
方案二美團(tuán)發(fā)號器`leaf-snowflake方案`雪花id算法
方案三百度[uid-generator](https://github.com/baidu/uid-generator "uid-generator")
方案四滴滴[tinyid](https://github.com/didi/tinyid "tinyid")
方案測試報告
測試環(huán)境
報告匯總
參考
為什么使用發(fā)號器
復(fù)雜分布式架構(gòu)系統(tǒng)中,需要保證生成id全局唯一
適用兼容kubernetes彈性擴(kuò)容,自動重啟等場景,無需維護(hù)現(xiàn)在雪花算法中使用的的workerid
對于以后業(yè)務(wù)可擴(kuò)展強(qiáng),可以為所有業(yè)務(wù)提供全局唯一id
方案一
美團(tuán)leaf發(fā)號器leaf-segment數(shù)據(jù)庫方案(業(yè)務(wù)中不可接受出現(xiàn)連續(xù)id可跳過)
缺點
id號碼不夠隨機(jī),能夠泄露發(fā)號數(shù)量的信息,不太安全
數(shù)據(jù)庫i/o趨勢圖會出現(xiàn)尖刺,出現(xiàn)在多個實例發(fā)號器的號段使用完后,去數(shù)據(jù)庫查詢更新號段信息時出現(xiàn)(可以查看后面重點sql)
強(qiáng)依賴數(shù)據(jù)庫,db宕機(jī)會造成整個系統(tǒng)不可用,有做緩存號段優(yōu)化(雙buffer優(yōu)化[1])
優(yōu)點
leaf服務(wù)可以很方便的線性擴(kuò)展,性能完全能夠支撐大多數(shù)業(yè)務(wù)場景
容災(zāi)性高:leaf服務(wù)內(nèi)部有號段緩存,即使db宕機(jī),短時間內(nèi)leaf仍能正常對外提供服務(wù)(雙buffer優(yōu)化)
可以自定義max_id的大小,非常方便業(yè)務(wù)從原有的id方式上遷移過來
方案說明
在架構(gòu)中允許多個發(fā)號器實例,使用同一個庫中的分配表biz_tag用來區(qū)分業(yè)務(wù),max_id表示該biz_tag目前所被分配的id號段的最大值,step表示每次分配的號段長度。原來獲取id每次都需要寫數(shù)據(jù)庫,現(xiàn)在只需要把step設(shè)置得足夠大,比如1000。那么只有當(dāng)1000個號被消耗完了之后才會去重新讀寫一次數(shù)據(jù)庫。讀寫數(shù)據(jù)庫的頻率從1減小到了1/step。
image
雙buffer優(yōu)化
對于第二個缺點,leaf-segment做了優(yōu)化,leaf 取號段的時機(jī)是在號段消耗完的時候進(jìn)行的,也就意味著號段臨界點的id下發(fā)時間取決于下一次從db取回號段的時間,并且在這期間進(jìn)來的請求也會因為db號段沒有取回來,導(dǎo)致線程阻塞。如果請求db的網(wǎng)絡(luò)和db的性能穩(wěn)定,這種情況對系統(tǒng)的影響是不大的,但是假如取db的時候網(wǎng)絡(luò)發(fā)生抖動,或者db發(fā)生慢查詢就會導(dǎo)致整個系統(tǒng)的響應(yīng)時間變慢。
為此,我們希望db取號段的過程能夠做到無阻塞,不需要在db取號段的時候阻塞請求線程,即當(dāng)號段消費(fèi)到某個點時就異步的把下一個號段加載到內(nèi)存中。而不需要等到號段用盡的時候才去更新號段。這樣做就可以很大程度上的降低系統(tǒng)的tp999指標(biāo)。詳細(xì)實現(xiàn)如下圖所示
image
采用雙buffer的方式,leaf服務(wù)內(nèi)部有兩個號段緩存區(qū)segment。當(dāng)前號段已下發(fā)10%時,如果下一個號段未更新,則另啟一個更新線程去更新下一個號段。當(dāng)前號段全部下發(fā)完后,如果下個號段準(zhǔn)備好了則切換到下個號段為當(dāng)前segment接著下發(fā),循環(huán)往復(fù)。
每個biz-tag都有消費(fèi)速度監(jiān)控,通常推薦segment長度設(shè)置為服務(wù)高峰期發(fā)號qps的600倍(10分鐘),這樣即使db宕機(jī),leaf仍能持續(xù)發(fā)號10-20分鐘不受影響。
每次請求來臨時都會判斷下個號段的狀態(tài),從而更新此號段,所以偶爾的網(wǎng)絡(luò)抖動不會影響下個號段的更新。
驗證(結(jié)果匯總[2])
!! leaf現(xiàn)狀
leaf在美團(tuán)點評公司內(nèi)部服務(wù)包含金融、支付交易、餐飲、外賣、酒店旅游、貓眼電影等眾多業(yè)務(wù)線。目前l(fā)eaf的性能在4c8g的機(jī)器上qps能壓測到近5w/s,tp999 1ms,已經(jīng)能夠滿足大部分的業(yè)務(wù)的需求。每天提供億數(shù)量級的調(diào)用量,作為公司內(nèi)部公共的基礎(chǔ)技術(shù)設(shè)施,必須保證高sla和高性能的服務(wù),我們目前還僅僅達(dá)到了及格線,還有很多提高的空間。
測試方法調(diào)用
測試代碼
代碼語言:javascript
復(fù)制
@postmapping("test")
public baseresponse<boolean> test() {
concurrencytester tester = threadutil.concurrencytest(10, () -> {
concurrenthashset<string> set = new concurrenthashset<>();
timeinterval timer = dateutil.timer();
// 測試的邏輯內(nèi)容
for (int i=0; i<10000; i++) {
int r = randomutil.randomint(6);
string s = httputil.get("http://10.0.20.150:909" + r + "/api/segment/get/saving-test");
set.add(s);
}
long l = timer.intervalrestart();
log.info("{} test finished , time:{}ms , set size:{}", thread.currentthread().getname(), l, set.size());
});
// 獲取總的執(zhí)行時間,單位毫秒
log.warn("總執(zhí)行時間:{}ms", tester.getinterval());
return responseutil.returnsuccess(boolean.true);
}
代碼輸出
代碼語言:javascript
復(fù)制
20:16:25.381 pool-5-thread-4 test finished , time:34346ms , set size:10000
20:16:25.465 pool-5-thread-9 test finished , time:34430ms , set size:10000
20:16:25.497 pool-5-thread-6 test finished , time:34462ms , set size:10000
20:16:25.511 pool-5-thread-10 test finished , time:34476ms , set size:10000
20:16:25.520 pool-5-thread-5 test finished , time:34485ms , set size:10000
20:16:25.569 pool-5-thread-7 test finished , time:34534ms , set size:10000
20:16:25.573 pool-5-thread-1 test finished , time:34538ms , set size:10000
20:16:25.580 pool-5-thread-2 test finished , time:34545ms , set size:10000
20:16:25.606 pool-5-thread-3 test finished , time:34571ms , set size:10000
20:16:25.623 pool-5-thread-8 test finished , time:34588ms , set size:10000
20:16:25.623 總執(zhí)行時間:34599ms
測試結(jié)果
多實例:約等于12044qps
在本地開發(fā)機(jī)6u32g啟動6個發(fā)號器實例,9090,9091,9092測試中進(jìn)行隨機(jī)調(diào)用
3臺機(jī)器1500線程并發(fā)壓測:4038+3795+4211=12044qps(未壓到上限僅供參考)
單實例:約等于8469qps(設(shè)置固定請求9090實例)
(設(shè)置固定請求9090實例,在14虛擬機(jī)2u4g配置上運(yùn)行)
4臺機(jī)器壓測:1493+2357+2425+2194=8469qps
業(yè)務(wù)場景模擬db操作
!! 測試環(huán)境本機(jī)測試,啟動6個發(fā)號器實例
9090,9091,9092,9093,9094,9095
在下面測試中進(jìn)行隨機(jī)調(diào)用
測試代碼
代碼語言:javascript
復(fù)制
@postmapping("test")
public baseresponse<boolean> test() {
basiclogininfo basiclogininfo = new basiclogininfo();
basiclogininfo.settenantid(9);
threadlocalcontext.set(basiclogininfo);
concurrencytester tester = threadutil.concurrencytest(10, () -> {
// 測試的邏輯內(nèi)容
for (int i=0; i<10000; i++) {
timeinterval timer = dateutil.timer();
int r = randomutil.randomint(6);
// string s = httputil.get("http://10.0.20.150:909" + r + "/api/snowflake/get/test");
string s = httputil.get("http://10.0.20.150:909" + r + "/api/segment/get/saving-test");
log.info(s);
memberdbo memberdbo = memberdbo.builder().build();
memberdbo.setid(long.valueof(s));
membermapper.insert(memberdbo);
long l = timer.intervalrestart();//返回花費(fèi)時間,并重置開始時間
log.info("tcp消耗時間:{}ms", l);
}
log.info("{} test finished", thread.currentthread().getname());
});
// 獲取總的執(zhí)行時間,單位毫秒
log.warn("總執(zhí)行時間:{}ms", tester.getinterval());
return responseutil.returnsuccess(boolean.true);
十個線程每個循環(huán)執(zhí)行1w次,總執(zhí)行10w獲取id并且模擬插入用戶數(shù)據(jù),總執(zhí)行時間
第一次:121472ms
第二次:107789ms
第二次:120809ms
未出現(xiàn)重復(fù)id,入庫數(shù)據(jù)10w條,主鍵id全唯一
測試結(jié)果
模擬業(yè)務(wù)中約等于854qps
方案二
美團(tuán)發(fā)號器leaf-snowflake方案雪花id算法
image
缺點
弱依賴zookeeper,需要維護(hù)多一個中間件,使用其的持久有序節(jié)點,進(jìn)行分配workerid用于進(jìn)行生成雪花算法(zookeeper掛了后,不影響id生成,并且每3秒循環(huán)重連機(jī)制)
強(qiáng)依賴機(jī)器時鐘,如果機(jī)器上時鐘回?fù)?,會?dǎo)致發(fā)號重復(fù)或者服務(wù)會處于不可用狀態(tài),已解決[3],使用zookeeper的持久有序節(jié)點,進(jìn)行了時間校驗
受到workerid限制最大維度下存在1024臺發(fā)號器
優(yōu)點
生成id安全性強(qiáng)
性能相比號段模式不用查詢更新步數(shù)高些,本地代碼生成,毫秒數(shù)在高位,自增序列在低位,整個id都是趨勢遞增的
解決時鐘問題
因為這種方案依賴時間,如果機(jī)器的時鐘發(fā)生了回?fù)?,那么就會有可能生成重?fù)的id號,需要解決時鐘回退的問題。
image
參見上圖整個啟動流程圖,服務(wù)啟動時首先檢查自己是否寫過zookeeper leaf_forever節(jié)點:
若寫過,則用自身系統(tǒng)時間與leaf_forever/{self}節(jié)點記錄時間做比較,若小于leaf_forever/{self}時間則認(rèn)為機(jī)器時間發(fā)生了大步長回?fù)?,服?wù)啟動失敗并報警。
若未寫過,證明是新服務(wù)節(jié)點,直接創(chuàng)建持久節(jié)點leaf_forever/${self}并寫入自身系統(tǒng)時間,接下來綜合對比其余l(xiāng)eaf節(jié)點的系統(tǒng)時間來判斷自身系統(tǒng)時間是否準(zhǔn)確,具體做法是取leaf_temporary下的所有臨時節(jié)點(所有運(yùn)行中的leaf-snowflake節(jié)點)的服務(wù)ip:port,然后通過rpc請求得到所有節(jié)點的系統(tǒng)時間,計算sum(time)/nodesize。
若abs( 系統(tǒng)時間-sum(time)/nodesize ) < 閾值,認(rèn)為當(dāng)前系統(tǒng)時間準(zhǔn)確,正常啟動服務(wù),同時寫臨時節(jié)點leaf_temporary/${self}維持租約。
否則認(rèn)為本機(jī)系統(tǒng)時間發(fā)生大步長偏移,啟動失敗并報警
每隔一段時間(3s)上報自身系統(tǒng)時間寫入leaf_forever/${self}
由于強(qiáng)依賴時鐘,對時間的要求比較敏感,在機(jī)器工作時ntp同步也會造成秒級別的回退,建議可以直接關(guān)閉ntp同步。要么在時鐘回?fù)艿臅r候直接不提供服務(wù)直接返回error_code,等時鐘追上即可?;蛘咦鲆粚又卦?,然后上報報警系統(tǒng),更或者是發(fā)現(xiàn)有時鐘回?fù)苤笞詣诱旧砉?jié)點并報警,如下:
代碼語言:javascript
復(fù)制
//發(fā)生了回?fù)?,此刻時間小于上次發(fā)號時間
if (timestamp < lasttimestamp) {
long offset = lasttimestamp - timestamp;
if (offset <= 5) {
try {
//時間偏差大小小于5ms,則等待兩倍時間
wait(offset << 1);//wait
timestamp = timegen();
if (timestamp < lasttimestamp) {
//還是小于,拋異常并上報
throwclockbackwardsex(timestamp);
}
} catch (interruptedexception e) {
throw e;
}
} else {
//throw
throwclockbackwardsex(timestamp);
}
}
//分配id
驗證(結(jié)果匯總[4])
!! leaf現(xiàn)狀
leaf在美團(tuán)點評公司內(nèi)部服務(wù)包含金融、支付交易、餐飲、外賣、酒店旅游、貓眼電影等眾多業(yè)務(wù)線。目前l(fā)eaf的性能在4c8g的機(jī)器上qps能壓測到近5w/s,tp999 1ms,已經(jīng)能夠滿足大部分的業(yè)務(wù)的需求。每天提供億數(shù)量級的調(diào)用量,作為公司內(nèi)部公共的基礎(chǔ)技術(shù)設(shè)施,必須保證高sla和高性能的服務(wù),我們目前還僅僅達(dá)到了及格線,還有很多提高的空間。
測試方法調(diào)用
測試代碼
代碼語言:javascript
復(fù)制
@postmapping("test")
public baseresponse<boolean> test() {
concurrencytester tester = threadutil.concurrencytest(10, () -> {
concurrenthashset<string> set = new concurrenthashset<>();
timeinterval timer = dateutil.timer();
// 測試的邏輯內(nèi)容
for (int i=0; i<10000; i++) {
int r = randomutil.randomint(6);
string s = httputil.get("http://10.0.20.150:909" + r + "/api/snowflake/get/test");
set.add(s);
}
long l = timer.intervalrestart();
log.info("{} test finished , time:{}ms , set size:{}", thread.currentthread().getname(), l, set.size());
});
// 獲取總的執(zhí)行時間,單位毫秒
log.warn("總執(zhí)行時間:{}ms", tester.getinterval());
return responseutil.returnsuccess(boolean.true);
}
代碼輸出
代碼語言:javascript
復(fù)制
20:08:26.019 pool-5-thread-2 test finished , time:29172ms , set size:10000
20:08:26.036 pool-5-thread-7 test finished , time:29189ms , set size:10000
20:08:26.101 pool-5-thread-1 test finished , time:29254ms , set size:10000
20:08:26.117 pool-5-thread-5 test finished , time:29270ms , set size:10000
20:08:26.126 pool-5-thread-10 test finished , time:29279ms , set size:10000
20:08:26.151 pool-5-thread-6 test finished , time:29304ms , set size:10000
20:08:26.185 pool-5-thread-4 test finished , time:29338ms , set size:10000
20:08:26.194 pool-5-thread-8 test finished , time:29347ms , set size:10000
20:08:26.201 pool-5-thread-9 test finished , time:29354ms , set size:10000
20:08:26.219 pool-5-thread-3 test finished , time:29372ms , set size:10000
20:08:26.220 總執(zhí)行時間:29382ms
測試結(jié)果
多實例:約等于9997qps
在本地開發(fā)機(jī)6u32g啟動3個發(fā)號器實例,9090,9091,9092測試中進(jìn)行隨機(jī)調(diào)用
3臺機(jī)器1500線程并發(fā)壓測:3326+3631+3040=9997qps (未壓到上限僅供參考)
單實例:約等于13559qps
(設(shè)置固定請求9090實例,在14虛擬機(jī)2u4g配置上運(yùn)行)
4臺機(jī)器1500線程并發(fā)壓測:945+3131+5732+3751=13559qps
業(yè)務(wù)場景模擬db操作
!! 測試環(huán)境本機(jī)測試,啟動6個發(fā)號器實例
9090,9091,9092,9093,9094,9095
在下面測試中進(jìn)行隨機(jī)調(diào)用
測試代碼
代碼語言:javascript
復(fù)制
@postmapping("test")
public baseresponse<boolean> test() {
basiclogininfo basiclogininfo = new basiclogininfo();
basiclogininfo.settenantid(9);
threadlocalcontext.set(basiclogininfo);
concurrencytester tester = threadutil.concurrencytest(10, () -> {
// 測試的邏輯內(nèi)容
for (int i=0; i<10000; i++) {
timeinterval timer = dateutil.timer();
int r = randomutil.randomint(6);
string s = httputil.get("http://10.0.20.150:909" + r + "/api/snowflake/get/test");
log.info(s);
memberdbo memberdbo = memberdbo.builder().build();
memberdbo.setid(long.valueof(s));
membermapper.insert(memberdbo);
long l = timer.intervalrestart();//返回花費(fèi)時間,并重置開始時間
log.info("tcp消耗時間:{}ms", l);
}
log.info("{} test finished", thread.currentthread().getname());
});
// 獲取總的執(zhí)行時間,單位毫秒
log.warn("總執(zhí)行時間:{}ms", tester.getinterval());
return responseutil.returnsuccess(boolean.true);
}
十個線程每個循環(huán)執(zhí)行1w次,總執(zhí)行10w獲取id并且模擬插入用戶數(shù)據(jù),總執(zhí)行時間
第一次:117733ms
第二次:112027ms
第二次:109745ms
未出現(xiàn)重復(fù)id,入庫數(shù)據(jù)10w條,主鍵id全唯一
測試結(jié)果
模擬業(yè)務(wù)中約等于885qps
方案三
百度uid-generator[5]
使用的也是雪花算法,利用db分配workerid
因為與美團(tuán)發(fā)號器的雪花方案相似,和使用未來時間進(jìn)行借用,還會產(chǎn)生節(jié)點使用時長限制,放棄選擇
github:https://github.com/baidu/uid-generator
方案四
滴滴tinyid[6]
采取的是在美團(tuán)發(fā)號器號段模式進(jìn)行了改進(jìn)實現(xiàn)
因為與美團(tuán)號段模式相似,放棄選擇
github:https://github.com/didi/tinyid
方案測試報告
!! leaf現(xiàn)狀
leaf在美團(tuán)點評公司內(nèi)部服務(wù)包含金融、支付交易、餐飲、外賣、酒店旅游、貓眼電影等眾多業(yè)務(wù)線。目前l(fā)eaf的性能在4c8g的機(jī)器上qps能壓測到近5w/s,tp999 1ms,已經(jīng)能夠滿足大部分的業(yè)務(wù)的需求。每天提供億數(shù)量級的調(diào)用量,作為公司內(nèi)部公共的基礎(chǔ)技術(shù)設(shè)施,必須保證高sla和高性能的服務(wù),我們目前還僅僅達(dá)到了及格線,還有很多提高的空間。
測試環(huán)境
測試接口--多實例測試環(huán)境——在本地開發(fā)機(jī)6u32g啟動3個發(fā)號器實例,9090,9091,9092測試中進(jìn)行隨機(jī)調(diào)用
測試接口--單實例測試環(huán)境——(設(shè)置固定請求9090實例,在14虛擬機(jī)2u4g配置上運(yùn)行)4臺機(jī)器1500線程并發(fā)壓測
模擬db操作--多實例——十個線程每個循環(huán)執(zhí)行1w次,總執(zhí)行10w獲取id并且模擬插入用戶數(shù)據(jù)
報告匯總
方案一(leaf-segment數(shù)據(jù)庫方案)
方案二(leaf-snowflake雪花方案)
測試接口--多實例
12044qps
9997qps
測試接口--單實例
8469qps
13559qps
模擬db操作--多實例
854qps
885qps
ps:多實例數(shù)據(jù)僅供參考
參考
leaf——美團(tuán)點評分布式id生成系統(tǒng)[7]
leaf[8]
uid-generator[9]
tinyid[10]
!! @author saving@date 2021.07.14
參考資料
[1]雙buffer優(yōu)化: #雙buffer優(yōu)化
[2]結(jié)果匯總: #方案測試報告
[3]已解決: #解決時鐘問題
[4]結(jié)果匯總: #方案測試報告
[5]uid-generator: https://github.com/baidu/uid-generator
[6]tinyid: https://github.com/didi/tinyid
[7]leaf——美團(tuán)點評分布式id生成系統(tǒng): https://tech.meituan.com/2017/04/21/mt-leaf.html
[8]leaf: https://github.com/meituan-dianping/leaf
[9]uid-generator: https://github.com/baidu/uid-generator
[10]tinyid: https://github.com/didi/tinyid
手把手教你開發(fā)easyswoole 接口網(wǎng)站:基礎(chǔ)開發(fā)示例demo地址基礎(chǔ)開發(fā)示例已經(jīng)開源,地址:https:github.comeasy-swooledemotree3.x安裝框架安裝我們先安裝好swooole拓展,執(zhí)行?php --ri swoole
?????框架全局事件├─easyswoole??????????????框架管理腳本├─easyswoole.install??????框架安裝鎖定文件├─dev.php?????????????????開發(fā)配置文件
一周簡報|云適配與微軟達(dá)成合作 共推移動化智能解決方案:有網(wǎng)上辦事大廳了,但由于沒有移動化,使用頻率不高?幾乎所有政府部門、教育機(jī)構(gòu)、企業(yè)事業(yè)單位都已經(jīng)「上網(wǎng)」,各地都在建設(shè)網(wǎng)上辦事大廳,且很多機(jī)構(gòu)不僅有自己的網(wǎng)站,還會通過網(wǎng)站發(fā)布各類信息和資源。
老百姓希望隨時訪問政府網(wǎng)站查閱最新公告和通知,可是用手機(jī)訪問后卻無奈地發(fā)現(xiàn),整個版面亂做一團(tuán),文字和圖片密密麻麻擠在一起,根本看不清,通過頁面辦理業(yè)務(wù)就更困難了……學(xué)校正在推行電子化教學(xué),要求學(xué)生將電子版作業(yè)提交到班級門戶網(wǎng)站
或者針對不同移動平臺開發(fā)原生應(yīng)用,以應(yīng)用的形式提供原本通過網(wǎng)站即可提供的服務(wù)和功能。然而這種做法門檻高,耗時久,后期維護(hù)和更新負(fù)擔(dān)重。
pc站群及門戶移動化解決方案,解決網(wǎng)站移動化大問題云適配基于自主創(chuàng)新的前端適配技術(shù),聯(lián)合微軟 azure云計算平臺打造了一個專業(yè)的“pc 站群及門戶移動化解決方案”,可迅速為政府和企業(yè)構(gòu)建安全、便捷、跨平臺的
在如何利用好大數(shù)據(jù)這一新能源,騰訊云也做出了多方探索。去年7月,騰訊云全面開放騰訊大數(shù)據(jù)能力,推出一站式數(shù)據(jù)分析與挖掘服務(wù)平臺--數(shù)智方略,實現(xiàn)資源生態(tài)共享。
一起名不見經(jīng)傳的勒索事件的啟示:“小心“第三方供應(yīng)商:早在2020 年2 月 25 日,doppelpaymer勒索系統(tǒng)運(yùn)營商開發(fā)了一個網(wǎng)站,以此公布沒有支付贖金的受害者所被盜的文件(勒索系統(tǒng)數(shù)據(jù)泄露已經(jīng)成為現(xiàn)實,此前我們也提到類似maze、sodinokibi
而在3月的最后期限之前,因為visser precision一直拒絕支付贖金,黑客將竊取的文件選取了一部分上傳到可在線公開訪問的網(wǎng)站。
給錢是對勒索系統(tǒng)運(yùn)營商的一種鼓勵,讓他們知道這種錢很好賺。給。為了挽回聲譽(yù)、解密文件以正常開展業(yè)務(wù)和工作,一些企業(yè)選擇交贖金。
提升企業(yè)自身安全的同時,如何防范供應(yīng)鏈安全掉鏈子供應(yīng)鏈安全,不僅要防范來自供應(yīng)鏈上下游企業(yè)帶來的安全漏洞,同樣要防范他們遭受網(wǎng)絡(luò)攻擊后對自身帶來的影響。
在供應(yīng)鏈建立、合作、發(fā)展的過程中,企業(yè)的多個利益相關(guān)部門都會參與,因此,供應(yīng)鏈安全的敏感和基本考慮應(yīng)該通過內(nèi)部標(biāo)準(zhǔn)傳遞給每個相關(guān)部門。
蘋果4.3被拒問題;教你如何解決常見代碼層次的4.3被拒問題:縱觀蘋果4.3問題被拒郵件內(nèi)容,總體的可以概括為以下三種4.3問題猜想,第三種更多是我個人猜想:一、代碼層次的4.3問題二、設(shè)計層次的4.3問題三、設(shè)備、ip、開發(fā)者賬戶、聯(lián)系人、銀行卡綁定等信息關(guān)聯(lián)上的
而設(shè)計層次上的4.3問題,被拒的郵件有不少比例會附上截圖,一般多為首頁。因為啟動過,所以能查詢到審核人員的設(shè)備、ip,瀏覽哪些頁面等等信息。曾經(jīng)試過,收到被拒郵件被附上與某某app的相似信息。
嚴(yán)格來說,這app已經(jīng)通過機(jī)審了,不料其他設(shè)計上雷同,如itc后臺的icon圖標(biāo)/送審截圖/應(yīng)用名后綴版本,又如整體app設(shè)計類同,首頁一模一樣等;很容易造成審核人員直接認(rèn)為克隆包存在。
這也許就是為什么4.3問題被拒郵件內(nèi)容會有首頁截圖的緣由??赡軉栴}又來了,對于蘋果審核人員,日均過審幾百上千的產(chǎn)品,如何做到識別設(shè)計上的雷同。單純說是對某app有印象的解釋,很難讓人滿意信服。
app內(nèi)關(guān)于產(chǎn)品能直接訪問技術(shù)網(wǎng)站官網(wǎng),在官網(wǎng)上能找到隱私協(xié)議等,雖然不知道會不會影響,作假作全套以下是臆想中蘋果審核后臺蘋果4.3被拒問題,純屬是臆想,沒有雷同。設(shè)計比較隨意,沒有經(jīng)過嚴(yán)謹(jǐn)考慮。
程序員修神之路--高并發(fā)下為什么更喜歡進(jìn)程內(nèi)緩存:從前有個機(jī)構(gòu),機(jī)構(gòu)的主人叫做 cpu,這個機(jī)構(gòu)專門派仆人取一些東西然后做相應(yīng)的處理。下面是這個機(jī)構(gòu)日常的場景。
cpu趕緊去我的倉庫l1緩存取點東西仆人主人你要的東西,那里離我們最近,所以很快,但是空間比較小。
仆人主人你要的東西,磁盤這個地方空間太大呀,取點東西很慢呀 cpu居然用了5天,等你這段時間我都能抱團(tuán)來一個周邊游了 cpu有一個叫做互聯(lián)網(wǎng)的國度,趕緊去取點東西 仆人主人你要的東西,互聯(lián)網(wǎng)太遠(yuǎn)了,取點東西太費(fèi)勁了
進(jìn)程內(nèi)緩存性能比較高,延遲會更小,更節(jié)省帶寬,畢竟分布式緩存網(wǎng)絡(luò)調(diào)用的性能和本地調(diào)用比起來慢太多,2. 由于和應(yīng)用程序位于同一進(jìn)程,共享相同的虛擬內(nèi)存,所以在狀態(tài)維護(hù)上更容易一些,3.
其次進(jìn)程內(nèi)的緩存不設(shè)計到網(wǎng)絡(luò)傳輸,所以沒有序列化的過程,在性能上更勝一籌。4. 進(jìn)程內(nèi)緩存的數(shù)據(jù)類型幾乎可以是語言級別支持的任意類型,數(shù)據(jù)類型設(shè)計上比大多數(shù)分布式緩存設(shè)備支持要靈活許多。
基于自然語言處理(語義情感)的香水推薦:自然語言處理(nlp)在推薦系統(tǒng)和信息檢索中有許多有趣的應(yīng)用。作為一名香水愛好者和數(shù)據(jù)科學(xué)家,利基香水社區(qū)使用的不尋常且高度描述性的語言啟發(fā)我使用nlp創(chuàng)建一個模型,幫助我發(fā)現(xiàn)我可能想購買的香水。
我寫了一個python腳本,從一個流行的沙龍香水網(wǎng)站上抓取數(shù)據(jù)。他們似乎并不介意。
圣誕節(jié)香水的建議下面是一些更有趣的例子:?查詢“尋找我的標(biāo)志性海灘氣味”。我打算帶著它去海灘或游泳池。” 返回香水與海鹽,椰子和海藻的香調(diào)。
屬于我自己的海灘香水——湯姆·福特的淡太陽香水,出現(xiàn)在第二名!我可以證明,這種香水聞起來確實像在熱帶度假的海灘上的一天!?“我在找一種香水,想去意大利的一個小島度假?!?如果您想親自嘗試此模型并獲得一些有趣的建議,可以克隆repo并在run_model.ipynb notebook中運(yùn)行chatbot。
@pNdocmVaHP ?- @企業(yè)辦公軟件oa @oa系統(tǒng)免費(fèi) @oa管理軟件系統(tǒng)
轉(zhuǎn)載請注明出處,本站網(wǎng)址:
http://www.zwhvip.com/news/1983.html