積分系統(tǒng)開發(fā)總結(jié).潘洪亮_第1頁
積分系統(tǒng)開發(fā)總結(jié).潘洪亮_第2頁
積分系統(tǒng)開發(fā)總結(jié).潘洪亮_第3頁
積分系統(tǒng)開發(fā)總結(jié).潘洪亮_第4頁
積分系統(tǒng)開發(fā)總結(jié).潘洪亮_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

積分系統(tǒng)開發(fā)總結(jié)匯報人:潘洪亮云施工我的QQ:8797575揚帆起航http:///itnms/bloghongliangpan@代碼就是文檔.我們程序員最煩兩件事:1,寫代碼的時候還要寫文檔,太tm麻煩!2,接手別人的代碼,tn的居然沒有文檔!借用童心童老大微信里的一句話自己不愛寫文檔抱怨別人沒文檔平等對待自己和別人,養(yǎng)成寫作總結(jié)的習(xí)慣文檔不只是代碼變大變小.1,打電話的時候變小!2,看視頻、玩游戲、看書時變大!奇酷手機發(fā)布小機機15%打電話、小手機85%大屏才過癮空空才能做到只有孫悟空和cj空能做到目錄積分系統(tǒng)介紹1設(shè)計2開發(fā)3工具4積分?3積分、等級、榮譽、云幣商城積分云幣榮譽等級對用戶進行激勵就是為了讓用戶更多的使用其產(chǎn)品或者服務(wù),這樣才能實現(xiàn)產(chǎn)品的價值。而積分體系就是比較常用的一種對用戶的激勵方式。通過積分、等級、云幣可以鼓勵用戶使用產(chǎn)品,并且是按產(chǎn)品提供者想要的方式去使用產(chǎn)品。積分系統(tǒng)介紹1采集各個產(chǎn)品的用戶動作行為,根據(jù)系統(tǒng)的規(guī)則,獎勵用戶積分、評定用戶經(jīng)驗等級和榮譽等級,并進行云幣獎勵;通過系統(tǒng)進行簡單的行為分析。主要功能它包括一個靜態(tài)的制度體系,和一個動態(tài)的引導(dǎo)過程。積分規(guī)則就是靜態(tài)活動就是一種動態(tài)引導(dǎo)的過程積分商業(yè)價值表現(xiàn)圖積分商業(yè)價值增加用戶黏性了解用戶的誠信度滿足用戶虛榮心讓用戶按產(chǎn)品提供者想要的方式去使用產(chǎn)品開發(fā)具有商業(yè)價值的增值服務(wù)積分系統(tǒng)的整體結(jié)構(gòu)1.規(guī)則模型2.動作數(shù)據(jù)采集3.積分計算4.統(tǒng)計查詢5.積分商業(yè)價值提升體系6.積分消費體系積分兌換云幣云幣商城產(chǎn)品動作參數(shù)產(chǎn)品端云施工論壇、微博終端實時計算經(jīng)驗、榮譽每日限額、有效時段、等比計算TopN、BottomN使用率排名計算插件個推趨勢分析熱點分析占比分析數(shù)據(jù)匯總保持活躍度促進互動等級計算、獎勵云幣經(jīng)驗等級榮譽等級升級規(guī)則云幣獎勵規(guī)則活動排名北斗積分名稱級別結(jié)構(gòu)圖積分名稱級別【經(jīng)驗或榮譽】1級2級3級(大師)翻樣達人最多求助哥最多求助姐大財主最能分享者樂于助人哥樂于助人姐積分獲取方式積分獲取方式每個產(chǎn)品定義自己的行為動作和業(yè)務(wù)動作用戶注冊手機、郵箱、實名認證在線時間上傳術(shù)語回復(fù)求助日志評論、相冊評論、投票參與、留言回復(fù)分享信息好友邀請信息加精目錄積分系統(tǒng)介紹1設(shè)計2開發(fā)3工具4系統(tǒng)設(shè)計2設(shè)計.積分系統(tǒng),作為公司級通用系統(tǒng),可以進行系統(tǒng)級復(fù)用。主要功能,采集異構(gòu)產(chǎn)品的用戶動作行為,根據(jù)系統(tǒng)的規(guī)則,計算用戶積分、評定用戶經(jīng)驗等級和榮譽等級,并進行云幣獎勵;支持靈活的積分計算規(guī)則。目標設(shè)計原則概要設(shè)計接口設(shè)計采集代理方案數(shù)據(jù)庫設(shè)計隊列解耦機制熱點分離機制預(yù)計算原則 多級緩存 以空間換時間以時間換空間分區(qū)機制 插件機制 異步處理 對象池批量存儲無鎖并發(fā)設(shè)計原則.業(yè)務(wù)邏輯.業(yè)務(wù)邏輯:加解密、數(shù)據(jù)采集、動作轉(zhuǎn)積分、每日限額、有效時段、項目增量差值計算、實時積分計算、積分明細日志、等級變化、獎勵云幣、自定義插件、數(shù)據(jù)匯總;實時排名;緩存維護一致性隊列解耦機制.內(nèi)存隊列、無鎖內(nèi)存隊列Ringbuffer、EventBus、分布式隊列kafka生產(chǎn)者生產(chǎn)數(shù)據(jù)入隊列=>隊列緩存=>消費者取數(shù)據(jù)

隊列采用先進先出的阻塞隊列,隊列前后分別有至少一個線程,前一線程負責(zé)往隊列中放數(shù)據(jù),后一線程負責(zé)從隊列中取數(shù)據(jù)進行分析處理等操作。同MQ類似,隊列機制是進程內(nèi)的消息總線,各種隊列相當于消息通道。生產(chǎn)者消費者模式并發(fā)難點在哪高效、穩(wěn)定、可擴展多線程、鎖、競態(tài)條件死鎖、加鎖肯定慢變大變小的需求又來了有沒有無鎖的并發(fā)?無鎖并發(fā).Disruptor(無鎖并發(fā)框架)Ringbuffer無鎖隊列Akkaactor消息驅(qū)動、事件驅(qū)動。CAS

CAS(比較與交換,Compareandswap)

是一種有名的無鎖(lock-free)非阻塞算法樂觀鎖原子計數(shù)AtomicLongcompareAndSet

CAS存款例子A+100selectmoneyfromtablewhereid=?updatetableSETmoney=oldMoney+100whereid=?同時向一個賬號存款:B+500selectmoneyfromtablewhereid=?updatetableSETmoney=oldMoney+500whereid=?結(jié)果可能是:100500600無鎖隊列ringbuffer維護兩個指針,“next”和“cursor”。寫:基于CAS的“get-and-increment”操作,將“next”指針進行自增canal無鎖隊列定義了3個cursorPut:Sink模塊進行數(shù)據(jù)存儲的最后一次寫入位置Get:數(shù)據(jù)訂閱獲取的最后一次提取位置Ack:數(shù)據(jù)消費成功的最后一次消費位置CAS操作AKKA分布式消息傳遞-事件驅(qū)動、分而治之無鎖無阻塞、無共享內(nèi)存就像發(fā)郵件一樣簡單熱點分離機制.熱點分離機制.熱點分離機制.將系統(tǒng)頻繁訪問的數(shù)據(jù),獨立存儲或內(nèi)存緩存。如:用戶的積分、活動的最新數(shù)據(jù)、最近15分鐘數(shù)據(jù)等,可以冗余存儲,以空間換時間。短信發(fā)送,重要數(shù)據(jù)、及時數(shù)據(jù)獨立通道發(fā)送。高頻15%熱點85%我不叼你剛需、痛點、高頻預(yù)計算原則.預(yù)先計算、預(yù)先匯總、預(yù)先組織好所需要的數(shù)據(jù)。頁面應(yīng)用中經(jīng)常訪問的數(shù)據(jù),預(yù)先匯總計算好,提高查詢效率。比如:最新采集時間、最大值、最小值、最新數(shù)據(jù)等。天周月的數(shù)據(jù)匯總邏輯飯在鍋里,女人在床上多級緩存.支持多級緩存分布式redis、local緩存等全量map、loadingmap、table、queue、單例1.數(shù)據(jù)量小,全量緩存,如產(chǎn)品動作指標2.數(shù)據(jù)量大的,延遲加載,如用戶信息、最新數(shù)據(jù)、每日限額、項目動作數(shù)據(jù);活躍用戶的數(shù)據(jù)在內(nèi)存,lru淘汰3.Rsa非對稱解密key的緩存解密后的key緩存,減少每次解密的時間成本要求客戶端,請求key不要總變化;4.表達式解析的緩存,節(jié)省表達式解析時間緩存是必填項緩存無處不在以時間換空間.增加存取時間、節(jié)省存儲空間??臻g或io:內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬時間增加空間減少日志文件的壓縮傳輸數(shù)據(jù)的壓縮以時間換空間.數(shù)據(jù)壓縮傳輸,增加壓縮時間,節(jié)省傳輸帶寬;文件滾動記錄并壓縮存儲,節(jié)省存儲空間、傳輸帶寬;日志文件、文本文件等rollingPolicy(TimeBasedRollingPolicy){FileNamePattern=LOG_FILE+‘point-%d{yyyyMMdd}.zip'}時空穿越入口處Nginx網(wǎng)卡瓶頸:gzip壓縮,硬件升級增加帶寬空間以空間換時間.緩存,內(nèi)存增加效率提升;占用內(nèi)存空間天周月數(shù)據(jù)匯總,增加存儲空間,提升查詢效率;占用數(shù)據(jù)庫表空間、磁盤空間主從、讀寫分離數(shù)據(jù)冗余存儲;磁盤空間積分歷史數(shù)據(jù)、積分最新數(shù)據(jù);存儲多份時空穿越月報和年報數(shù)據(jù)冗余存儲緩存和持久化多份存儲分布式文件系統(tǒng)分片分庫分表.自動分區(qū)http:///1GFNwh插件機制.為方便采集不同產(chǎn)品、不同來源的數(shù)據(jù),適應(yīng)不同項目的二次開發(fā)需求,系統(tǒng)框架提供plugin機制。應(yīng)用只需實現(xiàn)插件接口,滿足平臺的插件規(guī)范,就可以發(fā)布到系統(tǒng)中,進行數(shù)據(jù)采集分析。積分計算規(guī)則的動態(tài)擴展支持熱部署,不重啟server插件機制.積分計算規(guī)則的動態(tài)擴展支持熱部署,不重啟server批量存儲.計時計數(shù):300條一提交或一分鐘已提交批量提交新員工參見智慧建筑體驗館一個一個看30個人一起看3000人一起看并發(fā)異步.并行最終一致性流程:數(shù)據(jù)采集--接收--緩存--分發(fā)--處理器--入庫--呈現(xiàn)靜態(tài)數(shù)據(jù)接近用戶、動態(tài)數(shù)據(jù)接近計算.【移動計算、而非移動數(shù)據(jù)】應(yīng)用產(chǎn)品端:緩存積分信息、積分規(guī)則云端:緩存活躍用戶積分、全量緩存熱點小表對象池.單例對象池:線程池、連接池Rrd、ringbuffer采集代理設(shè)計把生命浪費在美好的事物上把時間浪費在美好的事物上生活,就是和喜歡的一切在一起復(fù)用北斗方案.時間延遲3 產(chǎn)品端接入流程1.注冊產(chǎn)品、配置策略、北斗建表同步數(shù)據(jù)2.產(chǎn)品埋點3.驗證測試4.打包安裝5.FAQ等產(chǎn)品埋點過程四個方法1.先初始化、2.構(gòu)建動作json數(shù)據(jù)、3.記錄數(shù)據(jù)、4.發(fā)送數(shù)據(jù)[到緩存]數(shù)據(jù)庫設(shè)計把生命浪費在美好的事物上把時間浪費在美好的事物上生活,就是和喜歡的一切在一起數(shù)據(jù)庫開發(fā)過程1.業(yè)務(wù)對象分析【對象及依賴關(guān)系】2.數(shù)據(jù)庫腳本3.生成word文檔或schemaspy文檔4.生成80%代碼5.開發(fā)20%的特殊邏輯Navicat、SQLyog數(shù)據(jù)庫工具LiquibaseFlywaynotepad++、代碼生成工具1234工具箱EA、

Schemaspy、DBExportDoc數(shù)據(jù)庫開發(fā)規(guī)范-初稿.明確業(yè)務(wù)對象及關(guān)聯(lián)關(guān)系不要急于表的設(shè)計先分析業(yè)務(wù)對象,參與者及關(guān)系安全檢查產(chǎn)品積分的ER圖產(chǎn)品動作等級規(guī)則積分產(chǎn)品簡單設(shè)計.腳本不是word文檔,內(nèi)容完全一致目錄積分系統(tǒng)介紹1設(shè)計2開發(fā)3工具4開發(fā)

代碼生成工具1有規(guī)律,就可以用工具生成。表及注釋生成代碼開發(fā)基于數(shù)據(jù)庫表生成后臺代碼生成對象、Mybatis映射文件、服務(wù)特殊邏輯自己處理開發(fā)這都是生成的方法自動生成的方法技術(shù)棧.Guava18:谷歌開源的工具庫,jdk8部分功能參考其實現(xiàn)?!綥oadingCache、Service、Resources、 EventBus、Closable、集合、Throwables、Preconditions、Strings等】Fastjson:阿里開源的最快json工具庫Druid:阿里開源最快的連接池Jxls:excel文件導(dǎo)出Netty4:rpc通信Protostuff:序列化,速度快,基于protobuf;沒有kryo快Groovy:動態(tài)插件,熱部署;joda-time:簡單的日期工具類quartz:定時任務(wù)調(diào)度logback:性能優(yōu)于log4jjQuery1.10、SpringMVC4、Mybatis3.2.7Apachecommons、Slf4j-logback、gauva、quartz、groovyFastjson、druid、jxls-reader-1.0.3、netty、protostuff、joda-time技術(shù)棧.服務(wù)器:Tomcat8【生產(chǎn)】、jetty9【開發(fā)】、mysql5.6jdk8【Java7終止公共更新】、ideaMaven、svn、jiraApp-core框架及代碼生成工具

aesKey采用非對稱加密【16或32位字符,經(jīng)過base64+rsa加密】數(shù)據(jù)部分采用對稱加密【base64+aes加密】…SQL注入SELECT*FROMAWHEREa=?參數(shù):'1'or'1'='1'Delete?轉(zhuǎn)義字符SELECT*FROMAWHEREa='1''or''1''=''1‘或'1\'or\'1\'=\'1'###druid

WallFilter可以防止sql注入,可以設(shè)置黑白名單,并能監(jiān)控記錄如:允許或拒絕訪問的schema、function、variablemybatis對于sql注入的解決方案:避免使用$寫法,使用#表達式引擎jexl 表達式引擎初始化-單例驗證表達式解析元數(shù)據(jù)也就是變量計算緩存動態(tài)解析表達式元數(shù)據(jù),并緩存排名匯總規(guī)則數(shù)據(jù)匯總:原始數(shù)據(jù)=>天=>周=>月=>總計base=>day=>week=>month=>total可以按照順序匯總,也可以跳過匯總,如周數(shù)據(jù),可以來源于原始數(shù)據(jù)、也可以來源于天數(shù)據(jù)。來源是base的可以實時排名;來源于天以上的統(tǒng)計數(shù)據(jù)每天排名;只要有一條天數(shù)據(jù),就有周數(shù)據(jù);…保證實時和最終一致橫表縱表—最新數(shù)據(jù)表橫表:開發(fā)工作多,查詢更容易;縱表開發(fā)容易,查詢復(fù)雜橫表帶來問題是,innodb行級鎖,不能并發(fā)更新,需要鎖同步性能優(yōu)化性能:fastjson、druid連接池、logback、緩存、隊列內(nèi)存溢出問題處理滾動文件記錄UUID性能優(yōu)化,重排序表分區(qū),按照時間分區(qū)緩存全量map、loadingmap、table、queue、單例產(chǎn)品動作指標,全量緩存【數(shù)據(jù)量小】延遲加載【數(shù)據(jù)量大的】,如最新數(shù)據(jù)、每日限額、項目動作數(shù)據(jù);活躍用戶的數(shù)據(jù)在內(nèi)存Rsa非對稱解密key的緩存解密后的key緩存,減少每次解密的時間成本要求客戶端,請求key不要總變化;表達式解析的緩存節(jié)省表達式解析時間單例UUID_GENERATOR只初始化一次,不能方法調(diào)用時每次都初始化表達式引擎RSA內(nèi)存泄露內(nèi)存溢出分析案例.彎路一般分析,自己寫的對象增減情況如:過濾com.ysg開頭的包其實rsa解密的溢出,是java.security其他成果開發(fā)框架完善復(fù)用;簡單封裝的零配置服務(wù)框架代碼生成工具、服務(wù)的封裝、簡單rpc、數(shù)據(jù)分區(qū)、任務(wù)調(diào)度、工具類【配置文件、比如滾動

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論