原创 MySql 索引優化 和 避免索引失效

建表和索引 索引優化法則 全值匹配案例: 最佳左前綴法則: 如果中間斷了,那麼只部分使用了索引,只有前面的的字段使用了索引 不在索引列上做任何操作(計算,函數,…) 索引中範圍條件右邊的列全失效 儘量使用覆蓋索引 覆

原创 RabbitMQ -如果保證消息的可靠性(防止消息丟失,消息重複,消息積壓)

防止消息丟失 做好消息確認機制,publisher(確認消息已被隊列收到並持久化保存) 和 consumer (確認消費者已經消息,手動ack)都要做好消息確認機制 每一個發送的消息都在數據庫做好記錄,定期將失敗的消息在發

原创 RibbitMQ消息確認機制 - 可靠抵達

可靠抵達 可靠抵達- confirmCallback 代碼示例: 配置: 可靠抵達- returnCallback 只有消息投遞到 queue 失敗纔會回調 可靠抵達- Ack消息確認機制 消費端自動ACK 存在問題:

原创 Feign異步調用 丟失上下文問題

問題描述 在微服務中使用Feign 調用,爲了使Feign 調用都是登錄狀態,會把登錄狀態的Cookie信息都攜帶上,使用的 攔截器往請求裏面存儲 cookie 信息 使用RequestContextHolder 使用Feign

原创 Spring 容器創建 源碼分析

Spring 容器的創建主要是 refresh() 源碼如下: @Override public void refresh() throws BeansException, IllegalStateException { s

原创 MySql 優化之 Show Profile進行SQL分析

Show Profile是什麼 分析步驟 1、查看當前mysql版本是否支持 2、開啓功能,默認是關閉,使用前需要開啓 3、運行sql 4、 查看結果, show profiles; 5、 診斷SQL 查詢參數

原创 Spring AOP 源碼分析 詳解

Spring AOP HelloWorld (註解版) 1、導入依賴aop依賴 <dependency> <groupId>org.springframework</groupId> <artifactId>sp

原创 Spring 拓展原理 (BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor、ApplicationListener)

BeanFactoryPostProcessor 執行時機: beanFactory的後置處理器; 在BeanFactory標準初始化之後調用,來定製和修改BeanFactory的內容; 所有的bean定義已經保存加載到beanF

原创 MySQL優化之 慢查詢日誌

慢查詢日誌是什麼 慢查詢日誌開啓 查看當前慢sql 記錄 的時間 查看當前系統中有多少條慢查詢記錄 日誌分析工具 mysqldumpslow 工作常用參考:

原创 分佈式系統事務解決方案選擇

解決方案一: 使用 Alibaba Seata 可以來解決 ,但是該種解決方案 不適合 大併發情況下,會影響性能,(使用於管理後臺各個微服務調用的增刪改查的事務管理) 解決方案二: 使用 MQ 來解決,(保證數據的最終一致性)

原创 MySQL 性能分析 - Explain

MySql Query Optimizer(mysql 查詢優化器) MySql 常見瓶頸 Explain Explain 介紹 Explain 的作用 Explain 的使用 Explain + SQL語句 執行計劃包

原创 分佈式全局唯一ID生成 和 雪花算法

分佈式全局唯一ID業務需求 ID生成規則部分硬性要求 全局唯一 唯一性 趨勢遞增 單調遞增 信息安全 含時間戳 ID生成系統的可用性 一般ID生成方案 UUID 但是UUID入庫性能差 數據庫自增主鍵 單機中:

原创 MySQL優化之Order by 和 Group By 優化

SQL 調優思路 查詢優化 永遠小表驅動大表 Order by 關鍵字優化 order by子句,儘量使用Index方式排序,避免使用FileSort方式排序 儘可能在索引列上完成排序操作 ,遵照索引建的最佳左

原创 MySQL鎖機制 (行鎖和表鎖)

表鎖(偏讀) 特點: 案例分析: 總結 行鎖(偏寫) 特點: 無索引 (索引失效)導致 行鎖升級爲表鎖 在有索引的列操作,導致索引失效,那麼行鎖就會升級爲表鎖 間隙鎖的危害 如何鎖定一行 行鎖分析

原创 接口冪等性 (重複提交) 問題

什麼是冪等性 哪些情況需要防止冪等性 什麼情況需要冪等性 冪等性解決方案 1、token 機制 2、各種鎖機制 3、各種唯一約束 4、防重表 5、全局請求唯一ID 微服務 feign 調用 防重 可以使用