原创 你能說說我們一般如何應對緩存雪崩以及穿透問題嗎?

1 面試題 瞭解什麼是Redis的雪崩和穿透嗎?Redis崩潰之後會怎麼樣?系統該如何應對這種情況?如何處理Redis的穿透? 2 考點分析 緩存必問題,因爲緩存雪崩和穿透,是緩存最大的兩個問題,要麼不出現,一旦出現就是致命的! 3 緩存

原创 分佈式系統中接口的冪等性該如何保證?比如不能重複扣款?

1、面試題分佈式服務接口的冪等性如何設計(比如不能重複扣款)? 2、面試官心裏分析從這個問題開始,面試官就已經進入了實際的生產問題的面試了 一個分佈式系統中的某個接口,要保證冪等性,該如何保證?這個事兒其實是你做分佈式系統的時候必須要考慮的

原创 Redis 的併發競爭問題是什麼?如何解決這個問題?瞭解 redis 事務的 CAS 方案嗎?

面試官心理分析 這個也是線上非常常見的一個問題,就是多客戶端同時併發寫一個 key,可能本來應該先到的數據後到了,導致數據版本錯了;或者是多客戶端同時獲取一個 key,修改值之後再寫回去,只要順序錯了,數據就錯了。 而且 redis 自己就

原创 哨兵的多個核心底層原理的深入解析(包含slave選舉算法)

一、sdown和odown轉換機制sdown和odown兩種失敗狀態 sdown是主觀宕機,就一個哨兵如果自己覺得一個master宕機了,那麼就是主觀宕機odown是客觀宕機,如果quorum數量的哨兵都覺得一個master宕機了,那麼就是

原创 redis如何在保持讀寫分離+高可用的架構下,還能橫向擴容支撐1T+海量數據

單機redis在海量數據面前的瓶頸。     怎麼才能夠突破單機瓶頸,讓redis支撐海量數據? redis集羣架構 redis cluster 支撐N個redis master node,每個master node都可以掛載多個sla

原创 Redis爲什麼是單線程還支持高併發

Redis爲什麼設計成單線程模式因爲redis是基於內存的讀寫操作,所以CPU不是性能瓶頸,而單線程更好實現,所以就設計成單線程模式 單線程模式省卻了CPU上下文切換帶來的開銷問題,也不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因爲可

原创 HashMap面試必問的數據結構相關知識總結

1:HashMap 的數據結構? A:哈希表結構(鏈表散列:數組+鏈表)實現,結合數組和鏈表的優點。當鏈表長度超過 8 時,鏈表轉換爲紅黑樹。transient Node<K,V>[] table; 2:HashMap 的工作原理?   H

原创 idea連接docker實現一鍵部署

一、修改配置文件,打開2375端口 [root@microservice ~]# vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd-current

原创 @SpringBootConfiguration註解

@SpringBootConfiguration繼承自@Configuration,二者功能也一致,標註當前類是配置類, 並會將當前類內聲明的一個或多個以@Bean註解標記的方法的實例納入到spring容器中,並且實例名就是方法名。 如

原创 @EnableDiscoveryClient 註解如何實現服務註冊與發現

@EnableDiscoveryClient 是如何實現服務註冊的?我們首先需要了解 Spring-Cloud-Commons 這個模塊,Spring-Cloud-Commons 是 Spring-Cloud 官方提供的一套抽象層,類似於

原创 JWT對SpringCloud進行認證和鑑權

JWT(JSON WEB TOKEN)是基於RFC 7519標準定義的一種可以安全傳輸的小巧和自包含的JSON對象。由於數據是使用數字簽名的,所以是可信任的和安全的。JWT可以使用HMAC算法對secret進行加密或者使用RSA的公鑰私鑰對

原创 分佈式文件存儲-FastDFS

1.1 FastDFS簡介 1.1.1 FastDFS體系結構 FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文

原创 Consul的服務註冊與發現(簡單介紹)

Consul的註冊中心的安裝及配置 1、consul下載 2、開發模式啓動consul consul agent -dev 3、驗證測試 通過以下地址可以訪問Consul的首頁: http://localhost:8500 Linux方式

原创 redis命令和lua實現分佈式鎖

Redis分佈式鎖關鍵 SETNX 語法: SETNX key value 如果key不存在,則存儲(key:value)值,返回1 如果key已經不存在,則不執行操作,返回0 因爲這個命令的性質,多個線程競爭時只有一個線程能修

原创 SpringBoot使用Redis做緩存結合自帶註解

配置Spring Cache <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-re