原创 Elasticsearch如何做到億級數據查詢毫秒級返回的

問題:ES 在數據量很大的情況下(數十億級別)如何提高查詢效率? 這個問題說白了,就是看你有沒有實際用過 ES,因爲啥?其實 ES 性能並沒有你想象中那麼好的。 很多時候數據量大了,特別是有幾億條數據的時候,可能你會懵逼的發現,跑個搜索怎麼

原创 springboot2.0下的zuul路由網關初探

Zuul作爲微服務系統的網關組件,用於構建邊界服務,致力於動態路由、過濾、監控、彈性伸縮和安全。 爲什麼需要Zuul Zuul、Ribbon以及Eureka結合可以實現智能路由和負載均衡的功能;網關將所有服務的API接口統一聚合,統一對外暴

原创 rabbitMQ實現可靠消息投遞 原

    RabbitMQ消息的可靠性主要包括兩方面,一方面是通過實現消費的重試機制(通過@Retryable來實現重試,可以設置重試次數和重試頻率,但是要保證冪等性),另一方面就是實現消息生產者的可靠投遞(注意消費單冪等),下面主要講下生產

原创 Mysql事務,併發問題,鎖機制 轉

1、什麼是事務 事務是一條或多條數據庫操作語句的組合,具備ACID,4個特點。 原子性:要不全部成功,要不全部撤銷 隔離性:事務之間相互獨立,互不干擾 一致性:數據庫正確地改變狀態後,數據庫的一致性約束沒有被破壞 持久性:事務的提交結果,將

原创 美團外賣訂單中心的演進 轉

前言 美團外賣從2013年9月成交第一單以來,已走過了三個年頭。期間,業務飛速發展,美團外賣由日均幾單發展爲日均500萬單(9月11日已突破600萬)的大型O2O互聯網外賣服務平臺。平臺支持的品類也由最初外賣單品拓展爲全品類。 隨着訂單量

原创 rabbitMq實現延時隊列 原 薦

    rabbitMq是受歡迎的消息中間件之一,相比其他的消息中間件,具有高併發的特性(天生具備高併發高可用的erlang語言編寫),除此之外,還可以持久化,保證消息不易丟失,高可用,實現集羣部署,提供靈活的路由和可靠性,可視化管理等等的

原创 ThreadLocal實現線程安全 轉

Spring通過各種模板類降低了開發者使用各種數據持久技術的難度。這些模板類都是線程安全的,也就是說,多個DAO可以複用同一個模板實例而不會發生衝突。我們使用模板類訪問底層數據,根據持久化技術的不同,模板類需要綁定數據連接或會話的資源。但這

原创 防雪崩利器:熔斷器 Hystrix 的原理與使用 原

前言 分佈式系統中經常會出現某個基礎服務不可用造成整個系統不可用的情況, 這種現象被稱爲服務雪崩效應. 爲了應對服務雪崩, 一種常見的做法是手動服務降級. 而Hystrix的出現,給我們提供了另一種選擇. 服務雪崩效應的定義 服務雪崩效

原创 Spring Boot2.0 Oauth2 服務器和客戶端配置及原理 原

一、應用場景 爲了理解OAuth的適用場合,讓我舉一個假設的例子。 有一個"雲沖印"的網站,可以將用戶儲存在Google的照片,衝印出來。用戶爲了使用該服務,必須讓"雲沖印"讀取自己儲存在Google上的照片。 問題是隻有得到用戶的授權,

原创 Java設計模式之命令模式 原

介紹 命令模式是一種行爲型設計模式。在命令模式中,所有的請求都會被包裝成爲一個對象。 參考了一下其他關於命令模式的文章,其中有談到說是可以用不同的請求對客戶進行參數化。對這句話的理解是,因爲將請求封裝成爲對象,所以客戶的所有操作,其實就是多

原创 spring_cloud config 配置中心及利用Github實現自動化熱加載配置 原

    spring_cloud有着強大的生態支持,其自帶的分佈式配置中心可以有效解決分佈式環境中配置不統一的問題,提供一箇中心化的配置中心。並且依靠其spring_bus(rabbitMq提供訂閱)和github或者gitlab自帶的we

原创 Spring AOP 實現 原

AOP(Aspect Orient Programming),我們一般稱爲面向切面編程,作爲面向對象的一種補充,用於處理系統中分佈於各個模塊的橫切關注點,比如事務、日誌、緩存、分佈式鎖等等。AOP實現的關鍵在於AOP框架自動創建的AOP代理

原创 消息服務在電商中的實踐 轉

1 商品和訂單服務中使用MQ 1.1 同步 在訂單生成的時候直接扣庫存,這是最初等的方式扣庫存,這種方式比較簡單,但是也有一系列的問題: 會造成有很多訂單把產品庫存扣除而並沒有支付,這就需要有一個後臺腳本,將一段時間內沒有支付的訂

原创 Java8並行http請求加快訪問速度 原 薦

背景 1.通常我們在獲取到一個list列表後需要一個挨着一個的進行遍歷處理數據,如果每次處理都需要長時間操作,那整個流程下來時間就是每一次處理時間的總和。 2.Java8的stream接口極大地減少了for循環寫法的複雜性,stream提

原创 redis實現簡單延時隊列 原 薦

    繼之前用rabbitMQ實現延時隊列,Redis由於其自身的Zset數據結構,也同樣可以實現延時的操作     Zset本質就是Set結構上加了個排序的功能,除了添加數據value之外,還提供另一屬性score,這一屬性在添加修改元