隨筆分類 - Spring全家桶
摘要:背景 最近在項(xiàng)目上遇到個問題。項(xiàng)目就是普通的spring cloud,spring cloud在spring boot的基礎(chǔ)上多了一些東西,比如支持bootstrap上下文(通過bootstrap.yml/properties配置)。另外呢,我們這邊要求上線的時候,要把配置文件里的敏感配置如密碼,進(jìn)
閱讀全文
摘要:背景 在feign中,一般是通過eureka、nacos等獲取服務(wù)實(shí)例,但有時候調(diào)用一些服務(wù)時,人家給的是ip或域名,我們這時候還能用Feign這一套嗎? 可以的。 有兩種方式,一種是直接指定url: 這種是服務(wù)端自己會保證高可用、負(fù)載均衡那些。 但也可能對方給了多個url(一般不會這樣,但是在ap
閱讀全文
摘要:背景 我們上一篇介紹了feign調(diào)用的整體流程,在@FeignClient沒有寫死url的情況下,就會生成一個支持客戶端負(fù)載均衡的LoadBalancerClient。這個LoadBalancerClient可以根據(jù)服務(wù)名,去獲取服務(wù)對應(yīng)的實(shí)例列表,然后再用一些客戶端負(fù)載均衡算法,從這堆實(shí)例列表中選
閱讀全文
摘要:背景 經(jīng)過前面幾篇的理解,我們大致梳理清楚了FeignClient的創(chuàng)建、Feign調(diào)用的大體流程,本篇會深入Feign調(diào)用中涉及的另一個重要組件:loadbalancer,了解loadbalancer在feign調(diào)用中的職責(zé),再追溯其是如何創(chuàng)建的。 在講之前,我先提個重點(diǎn),本文章的前期是引用了na
閱讀全文
摘要:背景 前面幾篇分析了Feign的初始化過程,歷經(jīng)艱難,可算是把@FeignClient注解的接口對應(yīng)的代理對象給創(chuàng)建出來了。今天看下在實(shí)際Feign調(diào)用過程中的一些源碼細(xì)節(jié)。 我們這里Feign接口如下: @FeignClient(value = "echo-service-provider") /
閱讀全文
摘要:背景 前面兩篇講了下,在一個典型的引入了feign、loadbalancer、nacos等相關(guān)依賴的環(huán)境中,會有哪些bean需要創(chuàng)建。 其中第一篇講了非自動配置的bean,第二篇是自動配置的bean。第一篇中提到,@FeignClient這個注解,就會創(chuàng)建一個beanDefinition,類型為Fe
閱讀全文
摘要:背景 上一篇介紹了Feign源碼初始化的一部分,內(nèi)容主要是,@EnableFeignClients、@FeignClient這些注解,都支持設(shè)置一些自定義的配置類: A custom @Configuration for all feign clients. Can contain override
閱讀全文
摘要:前言 打算系統(tǒng)分析下Feign的代碼,上一篇講了下Feign的歷史,本篇的話,先講下Feign相關(guān)的beanDefinition,beanDefinition就是bean的設(shè)計圖,bean都是按照beanDefinition來制造的。 Feign相關(guān)的bean不少,有一些是因?yàn)槲覀兊腇eign相關(guān)注
閱讀全文
摘要:背景 本意是想寫個feign中l(wèi)oadbalancer組件和nacos相遇后,一個兼容相關(guān)的問題,后面發(fā)現(xiàn)Feign這套東西很深,想一篇文章寫清楚很難,就先開一篇,講歷史。 Feign、OpenFeign、Spring Cloud OpenFeign Feign Feign是Java生態(tài)中的一個庫,
閱讀全文
摘要:背景 組內(nèi)人不少,今年陸陸續(xù)續(xù)研發(fā)了不少系統(tǒng),一般都會包括一個后臺管理系統(tǒng),現(xiàn)在問題是,每個管理系統(tǒng)都有RBAC那一套用戶權(quán)限體系,實(shí)在是有點(diǎn)浪費(fèi)人力,于是今年我們搞了個統(tǒng)一管理各個應(yīng)用系統(tǒng)的RBAC的系統(tǒng),叫做應(yīng)用權(quán)限中心,大致就是: 各個應(yīng)用在我們系統(tǒng)注冊,并錄入應(yīng)用支持的各類權(quán)限(如菜單權(quán)限、
閱讀全文
摘要:ribbon中,發(fā)現(xiàn)一段比較有水平的代碼 簡介 有個類,com.netflix.loadbalancer.PollingServerListUpdater,主要功能是,獲取服務(wù)的instance列表。 這也是ribbon中的核心代碼。 public class PollingServerListUp
閱讀全文
摘要:前言 這篇其實(shí)是對一年前的一篇文章的補(bǔ)坑。 @Java Web 程序員,我們一起給程序開個后門吧:讓你在保留現(xiàn)場,服務(wù)不重啟的情況下,執(zhí)行我們的調(diào)試代碼 當(dāng)時,就是在spring mvc應(yīng)用里定義一個api,然后api里,進(jìn)行如下定義: /** * 遠(yuǎn)程debug,讀取參數(shù)中的class文件的路徑,
閱讀全文
摘要:背景 在我們的項(xiàng)目中,比較廣泛地使用了ThreadLocal,比如,在filter層,根據(jù)token,取到用戶信息后,就會放到一個ThreadLocal變量中;在后續(xù)的業(yè)務(wù)處理中,就會直接從當(dāng)前線程,來獲取該ThreadLocal變量,然后獲取到其中的用戶信息,非常的方便。 但是,hystrix 這
閱讀全文
摘要:曹工雜談:我們的應(yīng)用,啟動就要去其他服務(wù)拉數(shù)據(jù),那其他服務(wù)掛了,我們就起不來了? 前言 在大家的項(xiàng)目中,想必都有那種,啟動時候要去其他服務(wù)拉一些數(shù)據(jù)的情況,如果我們啟動時,其他服務(wù)沒啟動,按豈不是就起不來了嗎,如果這段拉數(shù)據(jù)的代碼,并不是核心業(yè)務(wù),那你這就有點(diǎn)說不過去了:不能因?yàn)閷Ψ經(jīng)]啟動,我們也不
閱讀全文
摘要:前言 前一陣開發(fā)過程遇到的問題,用的 發(fā)送消息,消息body里的時間是比當(dāng)前時間少了8小時的,這種一看就是時區(qū)問題了。 就說說為什么出現(xiàn)吧。 之前的配置是這樣的: 要發(fā)送出去的消息vo是這樣的: 然后,出現(xiàn)的問題就是,消息體里,時間比當(dāng)前時間少了8個小時。 {"testDate":"2019 12
閱讀全文
摘要:前言 昨天,我開發(fā)的代碼,又收獲了一個bug,說是界面上列表查詢時,正常情況下,可以根據(jù)某個關(guān)鍵字keyword模糊查詢,后臺會去數(shù)據(jù)庫 %keyword%查詢(非互聯(lián)網(wǎng)項(xiàng)目,沒有使用es,只能這樣了);但是,當(dāng)輸入%字符時,可以模糊匹配出所有的記錄,就好像,好像這個條件沒進(jìn)行過濾一樣。 原因很簡單
閱讀全文
摘要:前言 問:標(biāo)題說的什么意思? 答:簡單說,一個spring boot應(yīng)用(我這里,版本升到2.1.7.Release了,沒什么問題),默認(rèn)使用了tomcat作為底層容器來接收和處理連接。 我這里,在依賴中排除了tomcat,使用Netty作為了替代品。優(yōu)勢在于,啟動飛快,線程數(shù)量完全可控(多少個ne
閱讀全文
摘要:前言 最近在項(xiàng)目中做了一項(xiàng)優(yōu)化,對業(yè)務(wù)代碼進(jìn)行解耦。我們部門做的是警用系統(tǒng),通俗的說,可理解為110報警。一條警情,會先后經(jīng)過接警員、處警調(diào)度員、一線警員,警情是需要記錄每一步的日志,是要可追溯的,比如報警人張小三在2019-12-02 00:02:01時間報警,接警員A在1分鐘后,將該警情記錄完成
閱讀全文
摘要:前言 最近發(fā)了好幾篇,都是覆蓋框架源碼,但是spring的代碼,我是從沒覆蓋過,畢竟,如果方便擴(kuò)展,沒誰想去改源碼,而spring就是不需要改源碼的那個,真的是“對擴(kuò)展開放,對修改關(guān)閉”的典范。 就我說曾經(jīng)用過的,spring的擴(kuò)展點(diǎn),就包括了 、`beanFactoryPostProcessor
閱讀全文
摘要:一、前言 最近有個需求,其實(shí)這個需求以前就有,比如定義了一個vo,包含了10個字段, 在接口A里,要返回全部字段; 但是在接口B里呢,需要復(fù)用這個 vo, 但是只需要返回其中8個字段。 可能呢,有些同學(xué)會選擇重新定義一個新的vo,但這樣,會導(dǎo)致vo類數(shù)量特別多;你說,要是全部字段都返回吧,則會給前端
閱讀全文

浙公網(wǎng)安備 33010602011771號