从单机存储进化为接口和存储的分离
概述
接口服务层对外提供REST服务,数据服务层提供数据存储功能。两者之间通过消息队列进行通信,数据服务层的所有数据服务注册dataServer Exchange, 以便client给接口服务层发消息后,接口服务收到GET请求时,定位对象被保存在哪一个数据服务节点,通过dataServer Exchange找到对应的数据服务。为保证dataServer Exchange中所有的数据服务都是有效,也为了让接口服务层知道数据服务节点。建立另一个apiServers Exchange作为心跳检测,由每一个数据服务节点持续发送心跳消息。
架构图
测试代码及步骤
配置好unbuntu环境后
2010 sudo apt install golang-go
2011 sudo apt install gccgo-go
2012 sudo apt-get install rabbitmq-server
2014 sudo rabbitmq-plugins enable rabbitmq_management
2015 wget localhost:15672/cli/rabbitmqadmin
2017 python3 rabbitmqadmin declare exchange name=apiServers type=fanout
2018 python3 rabbitmqadmin declare exchange name=dataServers type=fanout
2019 sudo rabbitmqctl add_user test test
2020 sudo rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
配置运行环境变量
export GOPATH=~/go-implement-your