老方式,先練一下審美tcp/ip套接字連線方式是mysql在任何平台都提供的一種連線方式,也是網路中使用最多的一種方式。那麼他們是怎麼連線上的嘞?假設我有兩台伺服器分別部署mysql資料庫客戶端(192.168.0.1)和mysql資料庫例項(192.168.0.2),兩者需要進行通訊,需要建立tcp/ip連線;
檢查許可權表(user表),判斷客戶端的ip有沒有機會和我們的mysql例項建立關係
為啥要用這個進行通訊嘞?
提到通訊,我們需要解決的問題是身份識別問題。就比如兩個人去相親了,首先男方得知道女方叫小王啥的,不能看見乙個女的就上去跟人家談婚論價(沒打錯)吧,那你不是神經病嗎?
對於乙個機器的,我們有作業系統管理,不同的程序作業系統都會給他乙個身份–程序號(pid),這個是可以作為唯一的標識的。
所以本地登入mysql還可以這麼操作:
這裡我們就不需要ip和埠號了,因為我們的圈子就這麼大,穿個馬甲也認識你。
但是網路間進行通訊的時候,pid就不管事了,另外作業系統支援的網路協議可能也是不一樣的。
所以網路間程序通訊需要解決唯一身份標識和網路協議識別問題。(明白你和你小朋友聊天多麻煩了吧)。
這個問題我們的tcp/ip協議可以解決呀,ip層的ip位址可以唯一標識網路計算機身份,好了知道你女朋友住在哪個小區了,傳輸層的「協議+埠」可以唯一表示程序,好了到了你女朋友的家門口了,有了這三樣你就可以見到你的女朋友了。(ip位址、協議、埠號)。
unix socket連線方式其實不是乙個網路協議,所以只能在mysql客戶端和資料庫例項在同一臺伺服器上的情況下使用。你品,你細品這句話,人類的進步就是從偷懶開始的。當然這個通訊是有他的價值的?
存在即合理(勿噴用法)
unix socket的位址是乙個socket型別的檔案在檔案系統中的路徑。不需要經過網路協議棧,不需要打包拆包,計算校驗和,維護序號,路由和應答等;
人家只是簡簡單單的將應用層資料從乙個程序拷貝到另乙個程序,當然這個速度也是要快的
首先說一下,這個協議是人家windows的情侶款**,其他平台不可飼用(沒錯)。
named pips可以在乙個計算機內使用或者同乙個區域網下的計算機進行使用,跟網路協議沒有半毛錢的關係。
使用方法:
允許兩個不相關的程序訪問同乙個邏輯記憶體。enable-named-pipe
這個也是只有人家windows飼用
使用這個協議需要在配置檔案中在啟動的時候使用 –shared-memory引數
可以學習前兩個通訊方式,其他的不需要深入了解。
Socket程式設計的四種通訊方式
tcp協議中伺服器端和客戶端必須建立起連線才能收發資料 udp協議中伺服器端和客戶端不需要建立連線,根據ip和埠號就能收發資料 1.基於連線和不連線 2.對系統資源的要求 tcp較多,udp較少 3.udp結構簡單 4.流模式和資料報模式 5.tcp表示資料正確性,udp可能丟包,tcp保證資料資料...
mysql的四種啟動方式
檢視該版本的相應引數 mysqld verbose help 1 mysqld mysqld defaults file etc my.cnf user mysql 2 mysqld safe mysqld safe defaults file etc my.cnf user mysql 3 mys...
Java 程序間通訊的四種方式
所謂程序通訊,就是不同程序之間進行一些 接觸 這種接觸有簡單,也有複雜。機制不同,複雜度也不一樣。通訊是乙個廣義上的意義,不僅僅指傳遞一些massege。他們的使用方法是基本相同的,所以只要掌握了一種的使用方法,然後記住其他的使用方法就可以了。1 訊號 在我學習的內容中,主要接觸了訊號來實現同步的機...