yaf && yar微服务镜像初始化 —— k8s从入门到高并发系列教程 (四)

        前面的教程已经在docker镜像 软件 层面上初步安装了企业常用的插件,但目前还没有写任何代码。本教程带你初始化yaf框架,并基于yar框架打包两个微服务代码,在容器间调用。

        用户访问流程图:

yaf && yar微服务镜像初始化 —— k8s从入门到高并发系列教程 (四)_第1张图片

我们先把之前那个lnmp文件夹拷贝两份,一份文件夹为 test_api,另一份文件夹为 test_client1 

cp -r lnmp test_api

cp -r lnmp test_client1

对这两个文件夹下的项目统一做以下操作

修改nginx配置文件

 由于yaf框架要求隐藏入口index.php文件,需要修改conf/default.conf文件,在 location / 下增加 try_files $uri $uri/ /index.php$is_args$args;

    location / {
        root   /src;
        index  index.html index.htm index.php;
        try_files $uri $uri/ /index.php$is_args$args;
    }

使用yaf脚手架初始化项目

克隆yaf项目源码,使用源码中的脚手架工具初始化项目

git clone https://ghproxy.com/https://github.com/laruence/yaf.git /tmp/yaf
/tmp/yaf/tools/cg/yaf_cg -d test_api/www -a test_api

/tmp/yaf/tools/cg/yaf_cg -d test_client1/www -a test_client1

 

创建yar server

在 test_client1 项目中创建一个yar server

application/models/Tserver.php 文件,定义yar server的服务内容

其中 __auth 函数是用来做微服务接口鉴权的,返回true代码鉴权通过

application/controllers/Tserver.php 文件,定义 yar server 的入口

handle();
    
    return false;
  }
  
}

使用yar client 调用 test_client1 微服务

我们在 test_api 项目中创建一个yar client,调用在 test_client1 项目中创建的微服务

application/controllers/Tclient.php 文件,作为yar client 客户端调用 yar server中的服务

SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);
        $client->setOpt(YAR_OPT_PROVIDER, "testprovider");
        $client->setOpt(YAR_OPT_TOKEN, "testtoken");
        $ret = $client->fun1();
        echo $ret;
        return false;
    }

}

 这段代码中使用了微服务调用的token,设置了微服务调用的超时时间

打包镜像

分别进入两个项目文件夹,打包项目代码到镜像中

cd test_api && sudo docker build -t php-fpm:test_api .

cd test_client1 && sudo docker build -t php-fpm:test_client1 .

启动test_client1

sudo docker run --name test_client1 -d php-fpm:test_client1

启动test_api,把test_client1容器关联到test_api容器中

sudo docker run --name test_api \
--link test_client1:test_client1 \
-p 8083:80 -d php-fpm:test_api

浏览器输入 http://127.0.0.1:8083/tclient 测试

你可能感兴趣的:(k8s从入门到高并发,kubernetes)