原创 Hadoop學習(4)——Hive(1)數據倉庫介紹

一、Hive簡介 1.1、什麼是Hive (1)從概念上來看 Hive是基於Hadoop的一個數據倉庫工具,它是MapReduce的一個封裝,底層就是MapReduce程序; Hive可以將結構化的數據文件(eg:按照各字段分類的數據)映

原创 Spark學習(1)——組件介紹

一、架構圖 組件圖:  架構圖:   二、組件介紹 1.Driver driver是一個進程,我們編寫的spark程序運行在driver上,由dirver進程執行,driver是作業的主進程,具有main函數,是程序的入口點,driv

原创 實戰高併發秒殺實現(4):基於責任鏈設模式的網關實現限流

一、理論基礎 1.1、常見限流算法常用的限流算法 (1)令牌桶 實現原理: 以規定的速率往令牌桶中存入Token,用戶請求必須獲取到令牌中的Token纔可以處理請求,如果沒有從令牌桶中獲取到令牌則丟失該請求。 例子:令牌桶中最多隻能存放2

原创 Java線程池深入研究

一、ThreadPoolTaskExecutor和ThreadPoolExecutor有何區別? ThreadPoolTaskExecutor是spring core包中的,而ThreadPoolExecutor是JDK中的JUC,Thr

原创 支付功能實戰(5):使用RabbitMQ解決分佈式事務

一、理論基礎 1.1、基於MQ解決分佈式事務原理 (1)確保生產者(支付服務)一定將增加積分的消息投遞到MQ中——使用確認機制; (2)確保消費者消費消息一定成功——使用手動ack應答模式  。 如果沒有出現異常則通知MQ刪除該消息,有異

原创 網關服務架構:基於建造者模式/責任鏈模式實現互聯網安全架構

一、理論基礎 1.基於網關實現IP黑名單與名單攔截 通過日誌可以發現,比如有個客戶端惡意請求我們接口,可以通過黑名單和白名單,這時可以把這個IP加入黑名單(或者使用Token+過期時間) 類似的功能是通過Hystrix實現IP限流 網關介

原创 RabbitMQ消息確認機制深入研究(Confirm模式和AMQP事務機制模式)

一、理論基礎 1.1、什麼是消息確認機制 RabbitMQ在傳遞消息過程中充當了代理人(broker)角色,生產者發送消息到代理服務器broker默認情況下是不會返回任何消息給生產者的,生產者不知道消息有沒有正常到達代理服務器。MQ提供了

原创 可靠Rabbit方案分析

前言 明確無法採用修改rabbitMq源碼的方式來實現可靠mq。原因有兩點: 1、rabbitMq是用erlang語言編寫,語言不通 2、公司似乎沒有人力專門做這種定製開發   基於以上結論,選擇利用關係型數據庫來實現可靠mq。例如:要發

原创 mysql&es數據同步

想解決的問題 1、search-platform每次更新都是整個文檔的替換,不支持只更新部分字段。所以每次業務服務每次都需要從N個服務讀取數據,構建完整的文檔。如果某個服務出錯了,文檔數據就不完整 2、如果有些數據變更場景沒有發mq,那麼

原创 RabbitMQ管理端代碼(開箱即用)

骨架圖: 以下代碼開箱即用,直接複製即可(注意MQ配置讀取的是個人配置中心的MQ配置信息)   依次介紹:  一、MQ配置:RabbitConfig 通過@Bean注入了Spring  IOC容器中 @Configuration pu

原创 實戰高併發秒殺實現(3):基於Token令牌桶+MQ實現修改庫存

一、理論基礎 1.1、前端優化 使用動靜分離、將靜態資源存放到第三方文件服務器中實現cdn加速,目的減輕秒殺搶購帶寬 當用戶點擊秒殺按鈕的時候,應該將按鈕disabled  防止重複提交 使用複雜的圖形驗證碼防止機器模擬 秒殺詳情頁面,使

原创 純手寫git命令

前言:換了新工作後爲了適應團隊的習慣,常用git命令的方式操作git,以前習慣於用小烏龜客戶端,但是對於命令行還是有點生疏,下邊記一些日常開發中常用的git命令,使用的是Gerrit。 1.首先用命令從倉庫中拉下來的代碼一般是主分支mas

原创 JAVA8——Stream

一、分類  無狀態:指元素的處理不受之前元素的影響;  有狀態:指該操作只有拿到所有元素之後才能繼續下去。  非短路操作:指必須處理所有元素才能得到最終結果;  短路操作:指遇到某些符合條件的元素就可以得到最終結果,如 A || B,只要

原创 實戰高併發秒殺實現(2):防止庫存超賣問題(超詳細)

一、理論基礎 1.1、防止庫存超賣,需要關注的問題 (1)秒殺數據庫的設計; (2)基於數據庫樂觀鎖防止庫存超賣; (3)基於redis實現用戶行爲頻率限制——用戶再次搶購時提示“該用戶操作頻繁,請少稍後重試,一般可設置10秒後才能再次調

原创 RabbitMQ延時隊列和死信隊列實現

一、理論基礎 1.1、RabbitMQ有哪些重要的組件(6個) ConnectionFactory連接管理器:用戶與MQ建立的連接管理器; Channel信道:消息推送使用的通道; Exchange交換機:用於接收、分配消息; Queue