hyperf+nacos服务注册示例
nacos直接用集成的环境,传送门docker-nacos
- 配置
//server.php 里面
[
'name' => 'jsonrpc-http',
'type' => Server::SERVER_HTTP,
'host' => '0.0.0.0',
'port' => 9502,
'sock_type' => SWOOLE_SOCK_TCP,
'callbacks' => [
Event::ON_REQUEST => [Hyperf\JsonRpc\HttpServer::class, 'onRequest'],
],
],
新增或修改一个服务就得新增或修改消费代码,比如下面这套服务和消费
CalculatorService.php CalculatorServiceInterface.php
CalculatorServiceConsumer.php
测试:http://自己的域名/test/test_nacos/test_nacos
新增或修改一个服务可以不需要新增或修改消费代码,下面两组服务对比
DefaultService.php DefaultServiceInterface.php
DefaultServiceConsumer.php
DefaultServiceOther.php DefaultServiceInterface.php
DefaultServiceOtherConsumer.php
测试:http://自己的ip/test/test_nacos/test_nacos_default
测试:http://自己的ip/test/test_nacos/test_nacos_other
//配置 server.php
[
'name' => 'jsonrpc',
'type' => Server::SERVER_BASE,
'host' => '0.0.0.0',
'port' => 9503,
'sock_type' => SWOOLE_SOCK_TCP,
'callbacks' => [
Event::ON_RECEIVE => [Hyperf\JsonRpc\TcpServer::class, 'onReceive'],
],
'settings' => [
'open_eof_split' => true,
'package_eof' => "\r\n",
'package_max_length' => 1024 * 1024 * 2,
],
],
TcpFooService.php TcpFooServiceInterface.php
TcpFooServiceConsumer.php TcpDefaultServiceConsumer.php
测试:http://自己的ip/test/test_nacos/test_nacos_jsonrpc_tcp
- 需要一定的swoole 基础,
- hyperf 一个swoole框架,从hyperf-skeleton 骨架修改
- php74,除了开启基本的扩展外,还需要安装swoole,msgpack,amqp,pcntl,redis,sockets
#swoole >=4.5,开启openssl,编译的时候添加参数 "--enable-openssl" #msgpack >=2.1.2 #redis >=4.0, 开启序列化,"--enable-redis-msgpack"
- mysql5.7
- nginx
- docker环境可参考dnmp,进入根目录 docker-compose up
- 开发时就不用频繁开关服务了,会热更自动重启(了解更多看hyperf文档 )
#安装扩展 composer require hyperf/watcher --dev #发布配置 php bin/hyperf.php vendor:publish hyperf/watcher #启动(代替 php bin/hyperf.php start) php bin/hyperf.php server:watch
配置目录:/config/autoload/logger.php
- 标准输出(控制台输出的日志:)
- 异常抛出的日志
- sql执行的日志
- 正常记录的日志
#
域名/test/test_log/test_log
#
域名/test/test_log/test_mysql_log
#
域名/test/test_log/test_exception_log
#测试国际化翻译
域名/test/test_trans/test_trans
#测试国际化翻译和枚举错误结合
域名/test/test_trans/test_tran2
- 默认缓存用 缓存的cache.php需要配置为redis驱动,还可以缓存mysql表的数据
- 做持久化数据库redis
- 做session存储
# 做普通缓存缓存
域名/test/test_redis/test_redis_cache
# 测试普通缓存-缓存mysql table数据
域名/test/test_redis/test_redis_cache_mysqlTable
#测试redis做持久化数据库
域名/test/test_redis/test_redis_persist
#测试session
域名/test/test_redis/test_redis_session
- amqp
- 生产和消费消息可以在不同系统内完成,完全可以独立
- 配置文件:/config/amqp.php
- 注意:必须先第一次启动消费者后才能启动生产者,不然可能会没有对应的队列和通道导致数据丢失
- @Consumer 注解对应的字段来替换对应的 exchange、routingKey 和 queue。
#测试发生mq数据
域名/test/test_mq/test_mq_send_data