原创 記一次服務註冊&服務發現的問題和解決(etcd和k8s同時結合使用情況下)

目錄   背景 分析 原因 總結 背景 早先的都採用基於grpc+etcd做服務註冊和服務發現,都是正常的 後來有部分服務採用k8s部署,爲了新舊兼容,服務會按照老方式把宿主機的ip註冊到etcd上,k8s體系類使用體系類的服務發現,k8

原创 K8s網絡模型

  一、前言 k8s對Pods之間如何進行組網通信提出了要求,k8s對集羣的網絡有以下要求: 所有的Pods之間可以在不使用NAT網絡地址轉換的情況下相互通信 所有的Nodes之間可以在不使用NAT網絡地址轉換的情況下相互通信 每個P

原创 高併發-網絡IO模型

高併發服務器編程經歷了從同步IO到異步IO,從多進程或多線程模型到事件驅動的演變,基於事件的併發編程依賴於操作系統提供的IO多路複用技術。這篇文章從什麼是IO多路複用談起,列舉基於事件的高併發服務器,並且對比了select,poll和ep

原创 mysql的問題解決:dial tcp connect: connection reset by peer

背景 當併發請求高的時候會出現 connection reset by peer 這樣的錯誤,也就是 服務端主動關閉了socket但是客戶端依然再用   分析 正常的tcp 建立連接的時候 tcp connect 請求進來的時候 服務端

原创 grpc 報錯解決 code = Unavailable desc = transport is closing

最近遇到 grpc 客戶端報錯 rpc error: code = Unavailable desc = transport is closing,原因是連接長時間沒有使用,被服務端斷開, 但是看過grpc源碼的都知道,如果failfas

原创 HTTP2協議-二進制幀結構總結

前言:   HTTP2引入了二進制分幀層,將普通的請求/響應,拆解爲幀實現請求和響應的併發。HTTP2規定了10中類型的幀。本文將對這10種類型的幀做總結。 幀的結構:    所有的幀都包含一個9 byte的幀頭 + 可邊長的正文不同。根

原创 MAC地址表、ARP緩存表、路由表及交換機、路由器基本原理

原文鏈接:https://blog.csdn.net/lingedeng/article/details/79412987 MAC地址表     說到MAC地址表,就不得不說一下交換機的工作原理

原创 網絡通信或者LVS相關原理說明-整理

網絡: MAC地址表、ARP緩存表、路由表及交換機、路由器基本原理 TCP/UDP/IP體系結構和協議簡介 IP數據報的分片和組裝原理     LVS-DR(Virtual Server via Direct Routing)原理說明與配

原创 mysql連接池長連接機制無效的問題排查-(go-sql-driver的問題)

背景: golang的mysql庫採用的是驅動模型 Go官方提供了database/sql包來給用戶進行和數據庫打交道的工作,database/sql庫實際只提供了一套操作數據庫的接口和規範,例如抽象好的SQL預處理(prepare),連

原创 各編程語言的值語義和引用語義的區別詳解(golang,c++,php,solidity)

最近在使用 solidity(以太坊ethereum的智能合約的語言)的語言的時候,發現一些問題, 只要是solidity語言中array和struct類型在storage和memory情況下的引用語義的理解問題 另外對於不同語言的引用語

原创 輕鬆籌1.6億註冊用戶的Passport賬戶系統架構

輕鬆籌是全國1.6億人使用的全民衆籌平臺,幾乎所有核心業務都依賴於賬號系統,賬號系統的用戶體驗,安全性,穩定性直接影響着輕鬆籌所有業務的運行; 輕鬆籌的發展非常迅速,已經展開了多條產品線,單點登錄的需求愈加強烈;另外由於歷史包袱的原因,

原创 以太坊的共識算法解讀

TechNeo 技術沙龍第20期有幸參加 51cto這次組織的技術分享,當時接到消息的時候只有兩天了, ppt做的比較倉促TechN目錄在這裏:PPT 放在 這裏了:  https://download.csdn.net/download

原创 golang的垃圾回收(GC)機制

請先閱讀 golang的goroutine調度機制 然後再到這裏   golang的垃圾回收採用的是 標記-清理(Mark-and-Sweep) 算法 就是先標記出需要回收的內存對象快,然後在清理掉; 在這裏不介紹標記和清理的具體策略(

原创 go-ethereum源碼分析-consensus - 共識

源碼包路徑:github.com/ethereum/go-ethereum/consensus/共識算法引擎接口的定義如下type Engine interface { // Author retrieves the Ethereu

原创 go-ethereum源碼分析-miner-挖礦

源碼包路徑:github.com/ethereum/go-ethereum/minerA。 Miner.New 創建一個miner對象需要啓動挖礦cpuagent監聽事件(訂閱sync新塊的start,done,failed三個事件)(要