分布式是写出来的(二)
從單機(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
goland添加環(huán)境變量
Edit congratulation>environment
rabbitmq監(jiān)控
http://127.0.0.1:15672/
總結(jié)
以上是生活随笔為你收集整理的分布式是写出来的(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式是写出来的(一)
- 下一篇: 分布式是写出来的(三)