原创 優化生產者連接工廠(帶有session緩存)

之前的連接工廠中,JmsTemlate每次發送消息時都會重新創建connection、session、productor等對象,從而導致性能的下降,是否有類似pool的連接池協助我們提高性能呢?答案必然是肯定的。 本章概要 1、緩衝連接

原创 實現生產者P2P&subpub兼容模式

在《實現應用內分佈式事務管理(生產者)》章節其實已經對JmsTemplate進行了重新註冊,在源碼JmsAutoConfiguration可以看到如下代碼設置: jmsTemplate.setPubSubDomain(this.prope

原创 Consul-Template&Nginx實現Consul集羣高可用

前言 在《構建Consul集羣》章節中介紹瞭如何實現consul集羣的構建,通過對consul的進一步瞭解,其並沒有提供的對cluster直接操作的client-api,故需要針對Consul集羣構建一個統一入口,但這個並不需要我們過多的

原创 SpringCloudGateway中ratelimiter源碼分析

本章概要前言正文Redis分佈式限流的核心組件如何配置路由如何處理請求如何刷新路由配置總結 前言 在SpringCloudGateway中官方默認提供了基於Redis的分佈式限流方案,對於大部分的場景開箱即用。但實際應用場景下,針

原创 Spring-Retry應用

前言spring retry是從spring batch獨立出來的一個能功能,主要實現了重試和熔斷。對於重試是有場景限制的,不是什麼場景都適合重試,比如參數校驗不合法、寫操作等(要考慮寫是否冪等)都不適合重試。遠程調用超時、網絡突然中斷可

原创 Stream進階篇-StreamListener實現多個方法調度

前言在《Stream進階篇-實體對象數據的生產消費與轉換》章節,已經展示瞭如何獲取header信息,本小節將更加具體的展示其特性,並結合@StreamListener註解的condition參數實現多個監聽者方法的選擇調度。場景描述:如上

原创 Hystrix實現ThreadLocal上下文的傳遞

前言Hystrix提供了基於信號量和線程兩種隔離模式,通過在Hystrix基礎章節中已經驗證過,通過@HystrixCommand註解的方法體將在新的線程中執行,這樣會帶來些什麼意想不到的意外呢,先來看一個示例:1、定義一個webapi,

原创 Stream進階篇-實體對象數據的生產消費與轉換

前言 在各微服務通信中,主要以json字符串作爲內容載體,在實際業務中,通常會自定義實體亦或是構造Map、List等數據作爲生產消費對象,SpringBoot通過對MessageConvertor的實現,已經很好的協助我們完成了Json與

原创 Stream基礎篇-Stream入門應用

Spring Cloud Stream是什麼? Spring Cloud Stream是一個用來爲微服務應用構建消息驅動能力的框架。它可以基於Spring Boot來創建獨立的、可用於生產的Spring應用程序。它通過使用Spring

原创 Mono入門應用

前言 Flux 和 Mono 是 Reactor 中的兩個基本概念。Flux 表示的是包含 0 到 N 個元素的異步序列。在該序列中可以包含三種不同類型的消息通知:正常的包含元素的消息、序列結束的消息和序列出錯的消息。當消息通知產生時,訂

原创 Guava-Retry實踐

前言在實際業務中,有非常多場景需要我們進行重試操作,編碼中通過採用各種回調的方式來抽象重試的實現,但都不是那麼理想。通過簡單的調研,目前主要有Guava-Retry和Spring-Retry作爲三方庫比較流行,本章節將介紹Guava-Re

原创 Spark在Win10下的環境搭建

前言本章將介紹如何在WIN10下實現spark環境搭建。本章概要1、版本說明2、環境準備:jdk配置;scala安裝與配置;spark安裝與配置;hadoop安裝與配置;版本說明jdk:1.8scala:2.11.8spark:2.3.0

原创 Zinkin進階篇-Zipkin-dependencies的應用

前言 之前章節中已經實現了zipkin數據持久化至elasticsearch,但其帶來了一個負面作用,無法正常顯示dependencies。通過閱讀zipkin在github說明,可以看到已經有了解決方案,本章將介紹如何實現並驗證。 本

原创 Feign集成Hystrix源碼分析以及擴展

前言在《Hystrix源碼淺析》中分析過request cache的相關源碼實現,而在Feign中集成了Ribbon與Hystrix兩個重要組件,但很遺憾其默認設計中並沒有對hystrix request cache的實現。故而本章節將從

原创 基於IDEA構建Spark應用並部署

前言本章將介紹如何通過IDEA構建Spark應用,並最終部署。構建應用Java應用1、新建一個maven項目,並在POM中添加如下依賴:<properties> <project.build.sourceEncoding>UTF-