摘要:
我不排除微服務,但是我想說不要為微服務而微服務。曾經在一個公司做一個物流系統,每天的單都不到100 200單,直接上微服務,除了高大上和給公司帶來更大的支出外,別無好處,這個量直接單體應用都撐得住。有時候簡單就是最有效的,能讓代碼在單線程的環境中跑就不要搞多線程,單體應用能搞定也不一定要微服務。 單
閱讀全文
posted @ 2025-11-04 23:35
阿古達芝麻開門
閱讀(5)
推薦(0)
摘要:
Spring Cloud 強調應用層解決方案,開發友好,適合 JVM 業務邏輯集中的團隊;Kubernetes 原生(配合 Service/Ingress、Envoy/istio 等)傾向平臺化、基礎設施側解決,適合容器化、跨語言、大規模生產環境。1. 核心理念Spring Cloud:庫/框架級微
閱讀全文
posted @ 2025-11-04 23:17
阿古達芝麻開門
閱讀(4)
推薦(0)
摘要:
先監控與告警:暴露線程池/線程數、隊列長度、請求并發、響應時間、GC/CPU 等指標(Micrometer/Prometheus/Grafana)。設置閾值告警(線程數、隊列溢出、長時間 blocking)。采集運行時診斷信息(盡量在線收集,避免重啟):常用命令:jstack -l <pid> >
閱讀全文
posted @ 2025-11-04 22:35
阿古達芝麻開門
閱讀(6)
推薦(0)
摘要:
volatile關鍵字的主要作用是限制JVM進行指令重排,保證變量對其他線程的可見性,可以避免創建對象才完成了一半就被其他線程引用到這個對象,保證創建完成后才對其他線程可見。 static class Value { int x; // 默認 0 Value() { // 模擬耗時初始化(增加重排序
閱讀全文
posted @ 2025-11-04 22:22
阿古達芝麻開門
閱讀(5)
推薦(0)
摘要:
開始之前了解一下:Linux事件驅動模型 IO Server啟動流程大概如下: 創建ServerSocket并監聽端口 不斷監聽Socket,如果有Socket進來則創建一個線程去處理這個Socket. NIO Server啟動流程大概如下: ServerSocketChannel監聽端口并注冊到S
閱讀全文
posted @ 2021-06-14 16:48
阿古達芝麻開門
閱讀(67)
推薦(0)
摘要:
Netty是一個NIO框架,它將IO通道的建立、可讀、可寫等狀態變化,抽象成事件,以責任鏈的方式進行傳遞,可以在處理鏈上插入自定義的Handler,對感興趣的事件進行監聽和處理 首先來一段Netty Server的sample: ServerBootstrap是一個啟動輔助類; group(boss
閱讀全文
posted @ 2021-06-14 16:46
阿古達芝麻開門
閱讀(107)
推薦(0)
摘要:
我們主要了解 Client端的消息發送流程 服務端消息接收以及處理流程 如何理解Reactor反應堆(沒有看懂boss是如何給worker分配任務的) 從上一章節中,我們知道Server啟動后,會不斷輪詢是否有IO事件,如果有則會調用NioEventLoop#processSelectedKeys(
閱讀全文
posted @ 2021-06-14 16:43
阿古達芝麻開門
閱讀(412)
推薦(0)
摘要:
在服務啟動的時候,Spring啟動完成刷新的動作后(finishRefresh)會發布一個ContextRefreshedEvent事件 在dubbo的OneTimeExecutionApplicationContextEventListener監聽了這個時間并啟動Dubbo啟動的相關流程,并在Du
閱讀全文
posted @ 2021-06-14 16:41
阿古達芝麻開門
閱讀(89)
推薦(0)
摘要:
服務調用端: 當我們調用服務的時候Dubbo會生成一個代理對象,然后調用InvokerInvocationHandler#invoke方法 AbstractClusterInvoker#invoke:設置負載均衡器 FailoverClusterInvoker#doInvoke:處理集群容錯,負載均
閱讀全文
posted @ 2021-06-14 16:39
阿古達芝麻開門
閱讀(377)
推薦(0)
摘要:
最近花了兩個周末,完成了IT Manager重構,由SpringBoot單機版改成了SpringCloud版本,服務沒有拆分的很細(只是為了上SpringCloud),只是把desktop api和mobile api單獨抽了出來,前端頁面放到了網關層,同時新增了單點登陸模塊并采用Redis存儲to
閱讀全文
posted @ 2021-06-14 16:35
阿古達芝麻開門
閱讀(268)
推薦(0)
摘要:
分布式有可能會帶來很多額外的技術問題,如分布式事務,分布式鎖,全局唯一ID等問題,假如從設計層面可以避免這些問題,建議還是從設計層面避免。 安裝: 首先下載https://github.com/seata/seata/releases/ 1.4.2的版本,修改file.conf和registry.c
閱讀全文
posted @ 2021-06-14 16:30
阿古達芝麻開門
閱讀(192)
推薦(0)
摘要:
在Java中,同一個JVM里面可以用synchronized關鍵字和ReentrantLock可重入鎖解決多線程對同一資源的并發訪問控制,但是隨著分布式的快速發展,本地的加鎖往往不能滿足我們的需要,在我們的分布式環境中上面加鎖的方法就會失去作用。 現在Spring Boot 分布式鎖開箱即用,支持主
閱讀全文
posted @ 2021-06-14 16:27
阿古達芝麻開門
閱讀(89)
推薦(0)
摘要:
其實,這個全局唯一ID的問題,我并沒有覺得很特別,甚至我覺得,如果生成全局唯一ID的時候,能把用戶ID+時間戳也基本可以滿足大部分業務的“全局唯一”的需求了。確實,生成全局ID的方法有很多,適應不同的場景、需求以及性能要求,所以即便是同一個系統,你也根據不同的業務場景設計不同的ID生成策略。 UUI
閱讀全文
posted @ 2021-06-14 16:25
阿古達芝麻開門
閱讀(242)
推薦(0)
摘要:
Arthas是強大的Java應用在線診斷工具,先來瀏覽一下常用命令及用途: dashboard:查看當前進程的信息概覽 thread:打印線程的棧 jad:反編譯class vmtool:從jvm里查詢對象,執行forceGc monitor:方法執行監控 watch:方法執行數據觀測,如方法入參及
閱讀全文
posted @ 2021-06-14 16:23
阿古達芝麻開門
閱讀(78)
推薦(0)
摘要:
CPU 負載特別高的問題 show-busy-java-threads.sh# 從 所有的 Java進程中找出最消耗CPU的線程(缺省5個),打印出其線程棧。show-busy-java-threads.sh -c <要顯示的線程棧數>show-busy-java-threads.sh -c <要顯
閱讀全文
posted @ 2021-06-14 16:21
阿古達芝麻開門
閱讀(225)
推薦(0)
摘要:
編碼規范:是否遵守了團隊編碼規范,降低維護代碼的成本。 可讀性:每個方法都必須有注釋,改動的時候最好說明因為什么問題改動,改動的關鍵代碼加上注釋,加上改動者和相關Jira ID ,避免很多時候時間久了自己都看不懂自己的代碼 ; 另外,檢測可讀性的另一個辦法就是讓別人review你的代碼,如果別人能看
閱讀全文
posted @ 2021-06-14 16:17
阿古達芝麻開門
閱讀(745)
推薦(0)