[手把手教你] 用Swoft 搭建微服务(TCP RPC)
序言
Swoft Framework
基于 Swoole 原生协程的新时代 PHP 全栈式协程框架
Swoft 是什么?
Swoft 框架是首个基于Swoole 原生协程的新时代 PHP高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM
全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield,有类似 Go 语言的协程,灵活的注解
强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等
上面是官网描述, 感觉太官方, 我总结一下:
- 常驻内存
- 协程
- 学习曲线平滑
- 国内框架
- 开箱即用的RPC
如何搭建微服务?
首先确保已经可以正确搭建Swoft
不清楚的可以查看Swoft 官方文档
鉴于每个人的开发环境都不同
这里选用官方Docker 作为开发环境
拉Docker 镜像
docker pull swoft/swoft
非常的简单
这样就是成功了
为了方便理解
我们把swoft 复制两份
命名为swoft-rpc和swoft-http
swoft-rpc只开启TCP 服务 swoft-http只开启Http 服务
修改配置文件
把根目录的.env.example复制一份为.env
.env 文件为swoft 配置文件, 最高优先级(覆盖config 下配置)
http 用到的配置
# ServerPFILE=/tmp/swoft.pidPNAME=php-swoftTCPABLE=false //是否同时启动TCP 服务器,这里用不到改为falseCRONABLE=falseAUTO_RELOAD=trueAUTO_REGISTER=false...# HTTPHTTP_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=10USER_POOL_MAX_WAIT=20USER_POOL_TIMEOUT=200USER_POOL_MAX_WAIT_TIME=3USER_POOL_MAX_IDLE_TIME=60USER_POOL_USE_PROVIDER=falseUSER_POOL_BALANCER=randomUSER_POOL_PROVIDER=consul
RPC 用到的配置
# TCPTCP_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 服务器
有的同学RPC 和TCP 的关系可能还没弄清楚
这里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
http://blog.leanote.com/post/zcmzcm/Swoft-RPC
大功告成!
[手把手教你] 用Swoft 搭建微服务(TCP RPC)的更多相关文章
- netty系列之:来,手把手教你使用netty搭建一个DNS tcp服务器
目录 简介 搭建netty服务器 DNS服务器的消息处理 DNS客户端消息请求 总结 简介 在前面的文章中,我们提到了使用netty构建tcp和udp的客户端向已经公布的DNS服务器进行域名请求服务. ...
- 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)
背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
- Spring Cloud和Docker搭建微服务平台
用Spring Cloud和Docker搭建微服务平台 This blog series will introduce you to some of the foundational concepts ...
- 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)
本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程 ...
- 手把手教你认识并搭建Nginx
手把手教你认识并搭建Nginx Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor ...
- 手把手教你用webpack3搭建react项目(开发环境和生产环境)(一)
开发环境和生产环境整个配置源码在github上,源码地址:github-webpack-react 如果觉得有帮助,点个Star谢谢!! (一)是开发环境,(二)是生产环境. 一.首先创建packag ...
- 手把手教你使用 VuePress 搭建个人博客
手把手教你使用 VuePress 搭建个人博客 有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunchencc/vu ...
- SpringCloud学习之手把手教你用IDEA搭建入门项目(三)
本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(二)>,不清楚的请到我的博客空间查看后再看本篇博客,上面两篇博客成功创建了一个简单的SpringCloud项目 ...
随机推荐
- 关于java分布式系统开关功能设计(服务升降级)
首先讲一下开关的由来,例如东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A.B.C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时 ...
- 【AMQ】之JMS Mesage structure(JMS消息结构)
Δ消息体:JMS API 定义了5种消息格式也叫消息类型,可以使用不同形式发送和接收数据,并可以兼容现有的消息格式 TextMessage,MapMessage,ByteMessage,StreamM ...
- vue父子组件(1.0)
1.父子组件 在上一篇随笔中展示了vue的组件,当我们继续在组件中写组件,形成组件嵌套的时候,就是我们所说的父子组件了. <!DOCTYPE html> <html lang=&qu ...
- JavaScript之图片操作5
本次的图片操作是要实现模仿天猫淘宝的放大镜效果,如下图所示: 其实现原理其实很简单,主要就是定位的运用,在上面的图中,左边是一个div,它的大小就是左边图片的大小,我们称为左窗口(原图),红色部分我们 ...
- Scrapy学习篇(八)之settings
Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...
- 百度地图 android SDKv2.2.0
首先创建自己的KEY http://lbsyun.baidu.com/apiconsole/key 然后点击设置 参照官网文档点击下面连接 官网文档 http://developer.baidu.c ...
- win7颜色反转
win7屏幕太亮,整天看电脑看的头疼 利用放大镜实现颜色反转 打开控制面板 //也可'开始'处直接输入输入放大镜进入 选择轻松访问 启用放大镜 选择设置 启用颜色反转 win+'+'增加放大镜的放大倍 ...
- Socket传输简单的信息以及粘包问题的解决
一.简单的socket程序——传输简短文字: # -*- coding: utf-8 -*- # -*- Author: WangHW -*- import socket whw_client = s ...
- sklearn获得某个参数的不同取值在训练集和测试集上的表现的曲线刻画
from sklearn.svm import SVC from sklearn.datasets import make_classification import numpy as np X,y ...
- Getting Physical With Memory.CPU如何操作内存
原文标题:Getting Physical With Memory 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下 ...