?這可能是最中肯的Redis使用規(guī)范了碼哥,昨天我被公司Leader批評了。我在單身紅娘婚戀類型互聯(lián)網(wǎng)公司工作,在雙十一推出下單就送女朋友的活動。誰曾想,凌晨12點之后,用戶量暴增,出現(xiàn)了一個技術(shù)故障,用戶無法下單,當(dāng)時老大火冒三丈!經(jīng)過查找發(fā)現(xiàn)Redis報Couldnotgetaresourcefromthepool。獲取不到連接資源,并且集群中的單臺Redis連接量很高。于是各種更改最大連接數(shù)、連接等待數(shù),雖然報錯信息頻率有所緩解,但還是持續(xù)報錯。后來經(jīng)過線下測試,發(fā)現(xiàn)存放Redis中的字符數(shù)據(jù)很大,平均1s返回數(shù)據(jù)。?碼哥,可以分享下使用Redis的規(guī)范么?我想做一個唯快不破的真男人!R...
作者:vivo互聯(lián)網(wǎng)服務(wù)器團(tuán)隊-ZhangLin一、業(yè)務(wù)背景目前移動端的使用場景中會用到大量的消息推送,push消息可以幫助運營人員更高效地實現(xiàn)運營目標(biāo)(比如給用戶推送營銷活動或者提醒APP新功能)。對于推送系統(tǒng)來說需要具備以下兩個特性:消息秒級送到用戶,無延時,支持每秒百萬推送,單機(jī)百萬長連接。支持通知、文本、自定義消息透傳等展現(xiàn)形式。正是由于以上原因,對于系統(tǒng)的開發(fā)和維護(hù)帶來了挑戰(zhàn)。下圖是推送系統(tǒng)的簡單描述(API->推送模塊->手機(jī))。二、問題背景推送系統(tǒng)中長連接集群在穩(wěn)定性測試、壓力測試階運行一段時間后隨機(jī)會出現(xiàn)一個進(jìn)程掛掉的情況,概率較?。l率為一個月左右發(fā)生一次),這會影響部分客戶...
1、前言微服務(wù)的注冊中心目前主流的有以下五種:ZookeeperEurekaConsulNacosKubernetes那么實際開發(fā)中到底如何選擇呢?這是一個值得深入研究的事情,別著急,今天陳某就帶大家深入了解一下這五種注冊中心以及如何選型的問題。2、為什么需要注冊中心?隨著單體應(yīng)用拆分,首當(dāng)面臨的第一份挑戰(zhàn)就是服務(wù)實例的數(shù)量較多,并且服務(wù)自身對外暴露的訪問地址也具有動態(tài)性。可能因為服務(wù)擴(kuò)容、服務(wù)的失敗和更新等因素,導(dǎo)致服務(wù)實例的運行時狀態(tài)經(jīng)常變化,如下圖:商品詳情需要調(diào)用營銷、訂單、庫存三個服務(wù),存在問題有:營銷、訂單、庫存這三個服務(wù)的地址都可能動態(tài)的發(fā)生改變,單存只使用配置的形式需要頻繁的變...
來源:https://blog.csdn.net/liuzhirou1/article/details/117649569一、項目目標(biāo)支付中心架構(gòu)將各業(yè)務(wù)的公共交易、支付、財務(wù)等沉淀到支付中心,并主要解決了以下三個主要問題:建立基礎(chǔ)訂單、支付、財務(wù)統(tǒng)一體系,抽象和封裝公共處理邏輯,形成統(tǒng)一的基礎(chǔ)服務(wù),降低業(yè)務(wù)的接入成本及重復(fù)研發(fā)成本;構(gòu)建安全、穩(wěn)定、可擴(kuò)展的系統(tǒng),為業(yè)務(wù)的快速發(fā)展和創(chuàng)新需求提供基礎(chǔ)支撐,解決業(yè)務(wù)「快」和支付「穩(wěn)」之間的矛盾;沉淀核心交易數(shù)據(jù),同時為應(yīng)用端、物業(yè)公司、用戶提供數(shù)據(jù)支撐。二、具體調(diào)用流程在目標(biāo)的指導(dǎo)下,我向集采、o2o、收費易三個項目組的相關(guān)開發(fā)咨詢了業(yè)務(wù)邏輯,再結(jié)...
平滑發(fā)布的介紹?背景?單位的云辦公相關(guān)系統(tǒng)沒有成熟的平滑發(fā)布方案,導(dǎo)致每一次發(fā)布都是直接發(fā)布,dll文件或配置文件的變更會引起站點的重啟。?云辦公系統(tǒng)的常駐用戶有10000,即使短短半分多鐘,也會收到一堆投訴?;诖?,我們梳理了一套平滑發(fā)布的方案。實施方案1、跟nginx代理服務(wù)器約定了一個健康檢查的接口2、通過接口返回的http狀態(tài)碼來讓ngx是否分流用戶請求(這個我們單位的技術(shù)部那邊有標(biāo)準(zhǔn)的做法)3、根據(jù)提供的這個服務(wù)健康檢查的接口:nginx判斷只要某個實例的接口返回5xx的狀態(tài)碼,即把該實例下線(nginx不會把流量轉(zhuǎn)發(fā)到該實例)???發(fā)布流程目的主要是為了發(fā)布的時候能夠平滑發(fā)布,所以...
前言Jlink可以將Hex文件下載到單片機(jī)內(nèi),也可以將未加密單片機(jī)內(nèi)部的程序文件讀出。本篇文章介紹,如何使用JFlash來讀取單片機(jī)的程序,學(xué)習(xí)單片機(jī)程序文件的讀取,不是為了破解別人的程序,而是學(xué)習(xí)破解的原理,從而更好保護(hù)自己的程序不被破解,希望大家也能尊重他人的勞動成果。JFlash的下載和安裝首先,安裝JFlash軟件,安裝完成后,會默認(rèn)安裝JLink驅(qū)動程序,主要包含以下幾個工具:JFlash,主要用于程序下載和讀取。JFlashLite,JFlash的Mini版JFlashSPI,用于給SPI存儲器下載程序,如W25Q128。JLinkGDBServer,用于第三方軟件的調(diào)試器,如使用...
大家好,我是小林。我之前寫過CPU緩存一致性MESI協(xié)議:10張圖打開CPU緩存一致性的大門。然后期間挺多人對MESI協(xié)議的轉(zhuǎn)換有疑問,其實我在文章中把MESI協(xié)議狀態(tài)切換的各個過程都總結(jié)成了一個表格,可能內(nèi)容太多,很多小伙伴沒有仔細(xì)看。就在昨天,我發(fā)現(xiàn)個可以「在線體驗?MESI?協(xié)議狀態(tài)轉(zhuǎn)換」過程的網(wǎng)站,地址如下:https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESIHelp.htm我先給大家復(fù)習(xí)下MESI協(xié)議,然后再跟大家講一些這個網(wǎng)站怎么用。MESI協(xié)議MESI協(xié)議其實是4個狀態(tài)單詞的開頭字母縮寫,分別是:Modified,已修改...
艾倫·麥席森·圖靈(1912-1954)在一間小黑屋里,有這樣三個角色:一個人類評審員,兩個受試者A和B。其中一個受試者是計算機(jī)的人工智能程序,另一個受試者是人類。評審員無法直接看到受試者,只能通過打字的方式,與兩名受試者進(jìn)行提問溝通。經(jīng)過多次的詢問和回答,最后由評審員來判斷:哪一個受試者是人類,哪一個受試者是計算機(jī)。如果評審員判斷錯誤的幾率超過30%,那就說明計算機(jī)成功地偽裝成人類,騙過了受試者,從而可以認(rèn)為這樣的計算機(jī)已經(jīng)具備了一定的思考能力。像這樣六位整數(shù)的乘法運算,普通人類根本不可能在短時間內(nèi)計算出來,如果受試者在一秒內(nèi)就給出了正確結(jié)果,那就太不自然了,顯然是計算機(jī)程序的回答。所以,要...
什么是網(wǎng)絡(luò)編程?用一句話概括,就是對網(wǎng)絡(luò)協(xié)議的落地。?落地,意味著對實戰(zhàn)的要求更高。所以,一些朋友更喜歡用類似Netty這種封裝好的框架——快速,高效。確實,跟開發(fā)細(xì)節(jié)相比,我們常常更看重開發(fā)效率。?可日常的項目里,我們也不得不面對極端的網(wǎng)絡(luò)性能考驗。沒人喜歡堵車,但應(yīng)對大量請求時,如果網(wǎng)絡(luò)性能處理不佳,數(shù)據(jù)、業(yè)務(wù)就會面臨大塞車。?舉個正向的例子,之前在綠盟有個信息安全產(chǎn)品,叫黑洞,是當(dāng)時市場上最成功的DDOS過濾設(shè)備。這玩意最大的技術(shù)難點就在于:當(dāng)攻擊報文洪水到達(dá)時,每秒要過濾掉幾十萬攻擊請求。在那之前,我從沒想過通過程序代碼,對網(wǎng)絡(luò)報文的處理效率,竟然能達(dá)到如此強(qiáng)悍的地步。?早些年尚且如此...
點擊上方“小麥大叔”,選擇“置頂/星標(biāo)公眾號”福利干貨,第一時間送達(dá)大家好,我是小麥,以前用單片機(jī)做用戶交互的菜單的時候,都比較痛苦,如何寫一個復(fù)用性高,方便維護(hù),可擴(kuò)展性高的GUI框架呢?當(dāng)然可以自己動手寫一個,這個過程充滿了艱辛和挑戰(zhàn),現(xiàn)在我推薦一個很棒的框架,直接拿來用就行,也可以借鑒和學(xué)習(xí)其中的思路,一定會收獲頗豐。知道有多少人折騰過液晶顯示的菜單,我覺得很多人都應(yīng)該搞過,我還記得以前大學(xué)參加電子設(shè)計競賽獲獎的作品,我就用到了一個12864,里面有菜單功能。以前可能覺得菜單高大上,其實并不是想象中的復(fù)雜,本文為大家分享一個用單色屏做的菜單框架。代碼托管在github:https://g...
事件起因我們的系統(tǒng)中有數(shù)據(jù)導(dǎo)入的功能,可以把特定的格式的excel數(shù)據(jù)導(dǎo)入到系統(tǒng)中來由于客戶電腦的文件比較多,很多文件的名字也比較相近,客戶在導(dǎo)入excel時選錯了文件這個錯誤的excel文件的格式恰好能被系統(tǒng)解析,客戶也沒及時發(fā)現(xiàn)導(dǎo)錯了文件,所以就將6萬多條沒用的數(shù)據(jù)導(dǎo)入到了系統(tǒng)中這6萬多條數(shù)據(jù)對系統(tǒng)來說就是無用的數(shù)據(jù),不會影響系統(tǒng)的運行,最多也就是占用一點數(shù)據(jù)庫空間而已客戶只需要把正確的excel重新導(dǎo)入,就可以繼續(xù)完成他的業(yè)務(wù)了但是,客戶是一個重度強(qiáng)迫癥患者,他覺得在管理平臺看到這6萬多條沒用的數(shù)據(jù)令他抓狂客戶想要把這些數(shù)據(jù)刪除,我們系統(tǒng)又沒有提供批量刪除功能,只能單個刪除,這無疑是一個...
最近幾位朋友一起吃飯,聊到盡興時,談起了一個大家都非常感興趣的話題,薪資,就簡單寫篇隨筆記錄一下。工作以來,我感覺自己變得有些佛系了,很少去打探同齡人的薪水狀況。每年的秋招季,不少同事都會抑制不住心情的好奇心,在各類互聯(lián)網(wǎng)社區(qū)去查看應(yīng)屆生的薪資情況,以推測自己的薪資所處的位置。要是薪資比應(yīng)屆生還低,一些覺得薪資沒有達(dá)到預(yù)期的同學(xué),可能就會動了好好學(xué)習(xí),年后跳槽的心思,而且這部分比例還不會太小。因此,每年如果應(yīng)屆生的薪資出現(xiàn)了較大幅度的增長,公司為了穩(wěn)住人心,也會相應(yīng)的提升今年的普調(diào)(一般指員工薪資每年的正常增長)幅度。征求了當(dāng)事人的同意之后,這里簡單的分享一下他們的薪資水準(zhǔn),也許對大家來說,會...
大家好,我是小林。我寫技術(shù)文章畫的圖片是保存到GitHub的,沒別的原因,就是因為免費,但是GitHub訪問的速度大家都懂的,訪問的速度很慢。所以我會用CDN來加速圖片的訪問,也就是我的圖床的方案是GitHubjsdelivrCDN,使用很簡單,只需要把域名地址替換一下就行。那為什么訪問GitHub會很慢呢?GitHub離國內(nèi)就近的服務(wù)器是在新加波,距離我這有2600公里,也就是說,訪問GitHub上的一張圖片,一個數(shù)據(jù)包就要走2600公里這么遠(yuǎn)!而且,互聯(lián)網(wǎng)從邏輯上看是一張大網(wǎng),但實際上是由許多小網(wǎng)絡(luò)組成的,每個網(wǎng)絡(luò)絡(luò)中還存在許多的路由器、網(wǎng)關(guān),數(shù)據(jù)每經(jīng)過一個節(jié)點,都要處理一下,在二層、三層...
今天又是被傾盆的需求淹沒的一天。有沒有人知道,那種“我用3句話,就讓產(chǎn)品為我砍了18個需求”的雞湯課在哪報名,想報。"聽懂掌聲"的那種課就算了,太費手了。扯遠(yuǎn)了,回到我們今天的正題,我們了解下這篇文的目錄。目錄代碼執(zhí)行send成功后,數(shù)據(jù)就發(fā)出去了嗎?回答這個問題之前,需要了解什么是Socket緩沖區(qū)。Socket緩沖區(qū)什么是socket緩沖區(qū)編程的時候,如果要跟某個IP建立連接,我們需要調(diào)用操作系統(tǒng)提供的socketAPI。socket在操作系統(tǒng)層面,可以理解為一個文件。我們可以對這個文件進(jìn)行一些方法操作。用listen方法,可以讓程序作為服務(wù)器監(jiān)聽其他客戶端的連接。用connect,可以作...
來源:翻譯自:NicklasMillard的文章《BetterSoftwareWithoutIf-Else》注:本文并不肯定或者否定哪一種寫法,僅僅為大家提供一些其他的編碼思路或者一些值得借鑒的點子,希望大家能在公眾號的每一篇文章中都能有所收獲,同時歡迎探討!設(shè)計更好的軟件,替換If-Else的5種方法。入門到高級示例讓我直接說這句話:If-Else通常是一個糟糕的選擇。它導(dǎo)致設(shè)計復(fù)雜,代碼可讀性差,并且可能導(dǎo)致重構(gòu)困難。但是,If-Else已成為事實上的代碼分支解決方案,這確實是有道理的。這是向所有有抱負(fù)的開發(fā)人員講授的第一件事。不幸的是,許多開發(fā)人員從來沒有前進(jìn)到更合適的分支策略。有些人的...