微服務使用rpc協議
每個服務被封裝成進程,都是獨立的
進程和進程之間通信,可以使用不同的協議 包括但不限于(php go java python c/c++) 比如php對接以太坊平臺就是典型使用
### 1. RPC簡介
遠程過程調用(Remote Procedure Call,RPC)是一個計算機通信協議
該協議允許運行于一臺計算機的程序調用另一臺計算機的子程序,而程序員無需額外地為這個交互作用編程
如果涉及的軟件采用面向對象編程,那么遠程過程調用亦可稱作遠程調用或遠程方法調用
*** 像調用本地函數一樣調用遠程函數 ***
通過rpc協議,傳遞函數名,函數參數,達到在本地調用遠端函數的返回值到本地的目標
### 2. go socket
遠程----網絡!!!
service端:
net.Listen() ----- listener監聽者 創建監聽器
listener.Accept() ---- conn套接字 啟動監聽 建立連接
conn.read()
conn.writer()
conn.Close()
defer listener.Close() // 延遲關閉
client端:
net.Dial()---- conn
con.Write()
conn.Read()
defer conn.Close()
### 3.rpc使用步驟
服務端:
1 注冊rpc服務對象,給對象綁定方法 (1 定義類 2 綁定類方法)
rpc.RegisterName("服務名",回調對象)
2 創建監聽器
listener,err := net.Listen()
3 建立連接
conn,err := listener.Accept()
4 將連接綁定rpc服務
rpc.ServeConn(conn)
客戶端:
1 用rpc連接服務器
conn,err := rpc.Dial()
2 調用遠程函數
conn.Call("服務名.方法名",傳入參數,傳出參數)
### TCP/IP 四層模型
1 應用層
2 傳輸層
3 網際層
4 網絡訪問層
### OSI七層模型
1 應用層
網絡服務與最終用戶的一個接口。
協議有:**HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
2 表示層
數據的表示、安全、壓縮。
格式有,**JPEG、ASCll、EBCDIC、加密格式等
3 會話層
建立、管理、終止會話。
對應主機進程,指本地主機與遠程主機正在進行的會話
4 傳輸層
定義傳輸數據的協議端口號,以及流控和差錯校驗。
協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層
5 網絡層
進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
協議有:ICMP IGMP IP(IPV4 IPV6)
6 數據鏈路層
建立邏輯連接、進行硬件地址尋址、差錯校驗\等功能。(由底層網絡定義協議)
將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正。
7 物理層
建立、維護、斷開物理連接。(由底層網絡定義協議)
- 環境安裝
- 基礎學習
- 基礎語法
- 判斷語句
- 數組
- 切片
- 函數
- 協程Goroutine
- 管道channel
- 結構體
- gin框架
- gin安裝
- gin模板加載
- gin加載靜態文件
- gin路由分組
- gin獲取get參數
- gin獲取post參數
- gin中cookie會話
- gin中session會話
- beego框架
- rpc
- gorm
- gorm安裝
- protobuf
- 安裝
- 編譯
- grpc
- grpc安裝
- 創建proto文件
- 創建服務端
- 創建客戶端
- 服務發現consul學習
- consul安裝
- consol結合grpc的服務端示例
- consol結合grpc的客戶端示例
- go-micro
- go-micro安裝
- micro命令創建項目