請(qǐng)問GatewayWorker分布式是怎么實(shí)現(xiàn)的呢?例如文檔中的例子,三臺(tái)機(jī)子,看到設(shè)置中沒有配置BusinessWorker什么ip地址和端口,Gateway也沒有設(shè)置具體BusinessWorker所在的機(jī)子ip,BusinessWorker通過什么連上Gateway,代碼上哪里?
三臺(tái)機(jī)器都有配置Config/Store.php,里面配置的redis/memcache存儲(chǔ)
當(dāng)gateway進(jìn)程啟動(dòng)時(shí),每個(gè)gateway進(jìn)程會(huì)開啟一個(gè)內(nèi)部通訊地址(ip:端口),這個(gè)內(nèi)部通訊地址是讓businessWorker連的,gateway進(jìn)程會(huì)把這個(gè)內(nèi)部通訊地址寫到Config/Store.php配置的redis/memcache存儲(chǔ)里面
businessWorker啟動(dòng)的時(shí)候會(huì)讀取Config/Store.php配置,然后從redis/memcache能得到每個(gè)gateway進(jìn)程的內(nèi)部通訊端口,然后嘗試連接,這樣每個(gè)gateway和每個(gè)businessWorker就連起來了,實(shí)現(xiàn)了分布式
所以分布式的重點(diǎn)在于每臺(tái)服務(wù)器上的Config/Store.php配置的redis/memcache是一致的
workerman 2.1.6版本
部署三臺(tái)服務(wù)器(192.168.1.1-3)提供高可用服務(wù)。
memcache服務(wù)器(ip 192.168.1.1 端口11211)做全局?jǐn)?shù)據(jù)共享。
三臺(tái)服務(wù)器Gateway實(shí)例的lanIp與當(dāng)前服務(wù)器內(nèi)網(wǎng)ip一致
三臺(tái)服務(wù)器Applications/Demo/Config/Store.php
public static $driver = self::DRIVER_MC;
public static $gateway = array(
'192.168.1.1:11211',
);
三臺(tái)機(jī)器都能正常啟動(dòng)workerman,但server.log總是有這個(gè)錯(cuò)誤
Worker:CLIENT: CLOSE INNER_CONNECTION
原因是什么?
Hello admin
---------------------------------------GLOBAL STATUS--------------------------------------------
WorkerMan version:2.1.6 PHP version:5.5.7
start time:2015-11-04 16:45:27 run 0 days 1 hours
load average: 0.01, 0.02, 0
1 users 3 workers 35 processes
worker_name exit_status exit_count
BusinessWorker 0 0
Gateway 0 1
Monitor 0 0