日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

分布式是写出来的(二)

發(fā)布時(shí)間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式是写出来的(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從單機(jī)存儲(chǔ)進(jìn)化為接口和存儲(chǔ)的分離

概述

接口服務(wù)層對(duì)外提供REST服務(wù),數(shù)據(jù)服務(wù)層提供數(shù)據(jù)存儲(chǔ)功能。兩者之間通過消息隊(duì)列進(jìn)行通信,數(shù)據(jù)服務(wù)層的所有數(shù)據(jù)服務(wù)注冊(cè)dataServer Exchange, 以便client給接口服務(wù)層發(fā)消息后,接口服務(wù)收到GET請(qǐng)求時(shí),定位對(duì)象被保存在哪一個(gè)數(shù)據(jù)服務(wù)節(jié)點(diǎn),通過dataServer Exchange找到對(duì)應(yīng)的數(shù)據(jù)服務(wù)。為保證dataServer Exchange中所有的數(shù)據(jù)服務(wù)都是有效,也為了讓接口服務(wù)層知道數(shù)據(jù)服務(wù)節(jié)點(diǎn)。建立另一個(gè)apiServers Exchange作為心跳檢測(cè),由每一個(gè)數(shù)據(jù)服務(wù)節(jié)點(diǎn)持續(xù)發(fā)送心跳消息。

架構(gòu)圖

測(cè)試代碼及步驟

配置好unbuntu環(huán)境后

2010 sudo apt install golang-go2011 sudo apt install gccgo-go 2012 sudo apt-get install rabbitmq-server2014 sudo rabbitmq-plugins enable rabbitmq_management2015 wget localhost:15672/cli/rabbitmqadmin2017 python3 rabbitmqadmin declare exchange name=apiServers type=fanout2018 python3 rabbitmqadmin declare exchange name=dataServers type=fanout2019 sudo rabbitmqctl add_user test test2020 sudo rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

配置運(yùn)行環(huán)境變量

export GOPATH=~/go-implement-your-object-storage-master go get github.com/streadway/amqp sh ./tools/starttestenv.sh chapter2

測(cè)試代碼

輸入
curl -v 10.29.2.2:12345/objects/1234.txt -XPUT -d “add test 123”
查看
curl -v 10.29.2.2:12345/objects/1234.txt
定位在哪個(gè)服務(wù)器存儲(chǔ)
curl -v 10.29.2.2:12345/locate/1234.txt
從服務(wù)器10.29.2.2:12345直接拿數(shù)據(jù)
curl -v 10.29.1.2:12345/objects/1234.txt

$ curl -v 10.29.2.2:12345/objects/1234.txt -XPUT -d "add test 123" * Trying 10.29.2.2... * TCP_NODELAY set * Connected to 10.29.2.2 (10.29.2.2) port 12345 (#0) > PUT /objects/1234.txt HTTP/1.1 > Host: 10.29.2.2:12345 > User-Agent: curl/7.58.0 > Accept: */* > Content-Length: 12 > Content-Type: application/x-www-form-urlencoded > * upload completely sent off: 12 out of 12 bytes < HTTP/1.1 200 OK < Date: Fri, 10 Apr 2020 12:35:21 GMT < Content-Length: 0 < * Connection #0 to host 10.29.2.2 left intact kou@ubuntu:~/go-implement-your-object-storage-master$ curl -v 10.29.2.2:12345/objects/1234.txt * Trying 10.29.2.2... * TCP_NODELAY set * Connected to 10.29.2.2 (10.29.2.2) port 12345 (#0) > GET /objects/1234.txt HTTP/1.1 > Host: 10.29.2.2:12345 > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 10 Apr 2020 12:35:27 GMT < Content-Length: 12 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host 10.29.2.2 left intact add test 123kou@ubuntu:~/go-implement-your-object-storage-master$ curl -v 10.29.2.2:12345/locate/1234.* Trying 10.29.2.2... * TCP_NODELAY set * Connected to 10.29.2.2 (10.29.2.2) port 12345 (#0) > GET /locate/1234.txt HTTP/1.1 > Host: 10.29.2.2:12345 > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 10 Apr 2020 12:35:35 GMT < Content-Length: 17 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host 10.29.2.2 left intact "10.29.1.2:12345" $curl -v 10.29.1.2:12345/objects/1234.txt * Trying 10.29.1.2... * TCP_NODELAY set * Connected to 10.29.1.2 (10.29.1.2) port 12345 (#0) > GET /objects/1234.txt HTTP/1.1 > Host: 10.29.1.2:12345 > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 10 Apr 2020 12:38:13 GMT < Content-Type: text/plain; charset=utf-8 < Transfer-Encoding: chunked < * Connection #0 to host 10.29.1.2 left intact

goland添加環(huán)境變量

Edit congratulation>environment

rabbitmq監(jiān)控

http://127.0.0.1:15672/

總結(jié)

以上是生活随笔為你收集整理的分布式是写出来的(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。