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

Swoft 框架是首個基於Swoole 原生協程的新時代 PHP高性能協程全棧框架,內置協程網絡服務器及經常使用的協程客戶端,常駐內存,不依賴傳統的 PHP-FPM。php

如何搭建微服務?

首先確保已經能夠正確搭建Swofthtml

不清楚的能夠查看Swoft 官方文檔mysql

鑑於每一個人的開發環境都不一樣laravel

這裏選用官方Docker 做爲開發環境面試

Docker下載地址>>>redis

拉Docker 鏡像

docker pull swoft/swoft 複製代碼

很是的簡單
sql


這樣就是成功了docker

爲了方便理解shell

咱們把swoft 複製兩份bash

命名爲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年資深開發者一塊兒交流學習的話,須要點擊這裏

相關文章
相關標籤/搜索