1. 程式人生 > 程式設計 >怎麼使用Swoft 搭建微服務(TCP RPC)PHP中高階進階

怎麼使用Swoft 搭建微服務(TCP RPC)PHP中高階進階

Swoft 框架是首個基於Swoole 原生協程的新時代 PHP高效能協程全棧框架,內建協程網路伺服器及常用的協程客戶端,常駐記憶體,不依賴傳統的 PHP-FPM。

如何搭建微服務?

首先確保已經可以正確搭建Swoft

不清楚的可以檢視Swoft 官方檔案

鑑於每個人的開發環境都不同

這裡選用官方Docker 作為開發環境

Docker下載地址>>>

拉Docker 映象

docker pull swoft/swoft 複製程式碼

非常的簡單


這樣就是成功了

為了方便理解

我們把swoft 複製兩份

命名為swoft-rpcswoft-http

swoft-rpc只開啟TCP

服務
swoft-http只開啟Http 服務

修改配置檔案

把根目錄的.env.example複製一份為.env

.env 檔案為swoft 配置檔案,最高優先順序(覆蓋config 下配置)

http 用到的配置

# Server
PFILE=/tmp/swoft.pid
PNAME=php-swoft
TCPABLE=false //是否同時啟動TCP 伺服器,這裡用不到改為false
CRONABLE=false
AUTO_RELOAD=true
AUTO_REGISTER=false
...
# HTTP
HTTP_HOST=0.0.0.0 //監聽的網路卡
HTTP_PORT=80 //監聽的埠
HTTP_MODE=SWOOLE_PROCESS    //不用管
HTTP_TYPE=SWOOLE_SOCK_TCP   //不用管
...//mysql 和redis 略過
# User service (demo service)
USER_POOL_NAME=user //別名 USER_POOL_URI=192.168.1.214:8099,192.168.1.214:8099 //負載均衡,URI填寫為RPC 的地址,注意Docker和宿主之間的關係 USER_POOL_MIN_ACTIVE=5 //下面都不用管 USER_POOL_MAX_ACTIVE=10 USER_POOL_MAX_WAIT=20 USER_POOL_TIMEOUT=200 USER_POOL_MAX_WAIT_TIME=3 USER_POOL_MAX_IDLE_TIME=60 USER_POOL_USE_PROVIDER=false USER_POOL_BALANCER=random USER_POOL_PROVIDER=consul複製程式碼


RPC 用到的配置

# TCP
TCP_HOST=0.0.0.0 //監聽的網路卡
TCP_PORT=8099 //監聽的埠
TCP_MODE=SWOOLE_PROCESS     //不用管
TCP_TYPE=SWOOLE_SOCK_TCP    //不用管
TCP_PACKAGE_MAX_LENGTH=2048 //最大連結數
TCP_OPEN_EOF_CHECK=false //不用管複製程式碼

啟動Docker 容器

docker run -it --rm -p 8099:8099 -v E:\WWW\swoft-rpc:/var/www/swoft  swoft/swoft /bin/bash複製程式碼


這裡用-it-v方便除錯


這樣就是成功啟動了

啟動RPC 服務

php bin/swoft rpc:start複製程式碼

RPC 服務只需要單獨啟動TCP 伺服器

有的同學RPCTCP 的關係可能還沒弄清楚

這裡RPC 服務和TCP 伺服器可以類比為Web 服務和HTTP 伺服器

監聽HTTP 來實現Web 服務
監聽TCP 來實現RPC 服務

就這樣理解吧


這樣就是成功啟動了

啟動Web服務

也就是啟動HTTP 伺服器XD

新開一個終端來建立新容器

docker run -it --rm -p 9501:80 -v E:\WWW\swoft-http:/var/www/swoft swoft/swoft /bin/bash複製程式碼

這裡埠改成9501,因為本地開發環境已經用了80了:b

php bin/swoft server:start 複製程式碼


因為在之前把自動開啟TCP 伺服器禁用了

所以顯示Disabled

這樣也就是成功了!

訪問一下http://127.0.0.1:9501/看下有沒有問題

沒問題的話,可以看下官方提供的RPC demo http://127.0.0.1:9501/rpc/call


phper在進階的時候總會遇到一些問題和瓶頸,業務程式碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、伺服器效能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell指令碼、Docker、微服務、Nginx等多個知識點高階進階乾貨需要的可以免費分享給大家,需要請戳這裡

最後,祝所有大家在面試中過關斬將,拿到心儀offer。如果想與一群3-8年資深開發者一起交流學習的話,需要點選這裡