之前我们谈到基于《基于VirtualBox搭建Hyperf开发环境》,那么我们使用Hyperf主要是为了啥呢?好多同学说我主要用Hyperf来提速,只是把它当作swoole框架来写PHP,比传统的PHP运行模式性能高出好几倍呀,那么也行吧。不过小马今天要谈的是,如何使用Hyperf来开发微服务。
基于上一篇文章搭建的环境,我们继续根据官网的教程来进入微服务开发的demo之旅。
要进行微服务开发呢首先自然要先熟悉微服务的一些基本概念,诸如分布式,服务治理,网关,RPC等等。这里官网也相当友好,作了一番小解释。
首先我们选择Hyperf目前支持比较好的JSON RPC 服务,当然有兴趣的话你也可以选择其他的RPC服务。
JSON RPC 是一种基于 JSON 格式的轻量级的 RPC 协议标准,易于使用和阅读。在 Hyperf 里由 hyperf/json-rpc 组件来实现,可自定义基于 HTTP 协议来传输,或直接基于 TCP 协议来传输。
跟随教程,以下只作了demo实战中关键代码段的演示,详细的代码在文末小马会共享github仓库地址给大家嗷。
1、跟随教程,我们首先使用composer安装依赖。
2、定义服务提供者。写CalculatorService服务提供类,并在config/server.php文件内配置启动一个jsonrpc服务。 CalculatorService服务提供类中通过使用注解将服务提供者进行服务注册或者可以直接注册到consul服务中心(这里注意需要先安装consul和和依赖组件并在config/autoload/services.php文件中做好服务驱动consul的相关配置)。如有必要,在依赖关系配置文件config/autoload/dependencies.php中配置好接口类的注入类关系。
注意@方式注解的写法是旧版本的语法
配置服务
配置服务中心consul
3、接下来就是服务消费者的编写。为了便于学习研究,我们手动创建消费者类。写完类文件我们在config/autoload/services.php文件做好消费者类的配置。同时,要在依赖关系配置文件config/autoload/dependencies.php中配置好接口类的注入类关系,以便控制器能使用注解依赖注入的方式调用服务消费者的方法(当然如果不使用该方式也可以不绑定)。
消费者服务客户端
配置消费者
4、编写控制器来调用服务消费者客户端来与服务提供者进行通信。
控制器调用
5、我们使用命令启动服务(一个http服务一个jsonrpc服务)。可以使用配置好的http路由访问控制器,调用到我们的服务提供者的服务。
启动成功
至此简单的微服务demo已经写好了。还有服务治理,限流,熔断,降级等大家可以参考官网教程继续完善,小马也会继续更新后续的文章哈,敬请期待。