怎么使用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年资深开发者一块儿交流学习的话,须要点击这里

相关文章
相关标签/搜索