首先我们用go-micro构建一个服务。
其次定义我们的服务:Register和User。
然后生成执行下面的命令,你会发现在proto文件中多出两个文件,这个在后面会用到。
写业务逻辑,修改handle/user.go文件
最后修改main.go文件,服务发现使用时consul。
简单处理并启动consul。
启动consul的ui。首先打开http://192.168.10.100:8500/ui/dc1/services,
然后写hyperf的代码。按照官方文档安装框架,安装的时候rpc需要选择grpc,
第一次启动的时候官方会要求修改一些php.ini的参数,大家按照要求走就是了。这部分的流程自己参照官方文档,至于一些扩展的安装可以谷歌或者百度。安装好框架之后再根目录下面新建一个grpc和proto的目录,把go-micro里面user.proto文件复制到hyperf项目的proto的目录之下。然后在目录下执行命令。
执行成功之后会发现在grpc目录下多出两个文件夹。接下来我们开始编写client的代码,在hyperf项目的app目录下新建一个Grpc的目录并且新建一个UserClient.php的文件。
新建一个路由Router::addRoute(['GET', 'POST', 'HEAD'], '/grpc', 'App\Controller\IndexController@grpc');编写控制器
这时候还需要吧根目录下的grpc目录加载进来,修改composer.json文件。
然后执行composer dump-autoload命令,并启动hyperf项目,打开浏览器输入http://192.168.10.100:9501/grpc回车,我们就能看到结果了。这时候我们会发现一个问题,那就是consul在client端压根没用到,在代码中我们还是需要指明我们的端口号。然后再看看官方文档其实是支持consul的,那么将代码改造下。
在app下新建一个Register的目录创建一个文件ConsulServices.php,然后开始编写服务发现的代码,安装consul包以后,由于官方提供的consul包没有文档,所以需要自己去看源代码。官方在consul提供的api上面做了简单的封装,如KV、Health等,在实例化话的时候需要穿一个客户端过去。下面提供一个简单的实例。
这时候你会发现一个问题如果每次请求都去请求一次,必然会给consul造成很大的负荷。这时候我们用swoole框架可以在每次swoole启动的时候去请求一次,然后把服务发现的信息存起来。修改配置文件server。
改造一下原来的控制器
最后我们重启服务,这时候然后刷新浏览器。你会发现一个简单的基于go rpc server和php client的微服务就搭建完成了。当然了这时候还没有心跳机制,hyperf官网提供了一个定时器的功能,我们定时去刷服务发现就好了。
六星教育拥有行业内完善的教研团队,雄厚的师资力量,全方位保障学员学习。
添加下方微信号,你就与高薪就业更近了一步
*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜