PHP写微服务之Hyperf

简介: PHP写微服务之Hyperf

之前我们谈到基于《基于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中配置好接口类的注入类关系。
image.png

注意@方式注解的写法是旧版本的语法


image.png

配置服务


image.png

配置服务中心consul


3、接下来就是服务消费者的编写。为了便于学习研究,我们手动创建消费者类。写完类文件我们在config/autoload/services.php文件做好消费者类的配置。同时,要在依赖关系配置文件config/autoload/dependencies.php中配置好接口类的注入类关系,以便控制器能使用注解依赖注入的方式调用服务消费者的方法(当然如果不使用该方式也可以不绑定)。
image.png

消费者服务客户端

image.png

配置消费者

image.png

4、编写控制器来调用服务消费者客户端来与服务提供者进行通信。
image.png

控制器调用


5、我们使用命令启动服务(一个http服务一个jsonrpc服务)。可以使用配置好的http路由访问控制器,调用到我们的服务提供者的服务。
image.png

启动成功


至此简单的微服务demo已经写好了。还有服务治理,限流,熔断,降级等大家可以参考官网教程继续完善,小马也会继续更新后续的文章哈,敬请期待。

github仓库地址

相关文章
|
4月前
|
Cloud Native PHP Docker
PHP 中的异常处理:提升代码的健壮性云原生时代的微服务架构实践
【7月更文挑战第31天】在PHP开发中,异常处理是确保应用程序稳定性和可靠性的关键。本文将引导您了解如何在PHP中实现有效的异常处理机制,通过实际代码示例展示如何捕获和处理异常,以及如何使用自定义异常类来增强错误管理的灵活性。我们将探索不同的异常处理策略,并讨论它们对提升代码质量的影响。 【7月更文挑战第31天】在数字化浪潮的推动下,云原生技术正成为企业转型的关键。本文将深入探讨如何在云平台上利用微服务架构实现敏捷开发和高效运维,通过具体的代码示例,揭示微服务与容器化部署的协同优势,同时指出在实施过程中可能遇到的挑战及应对策略。
31 1
|
5月前
|
监控 PHP Docker
PHP框架如何应对微服务与容器化趋势
这篇文档讨论了PHP框架如何适应微服务和容器化趋势。主要内容包括:1) 微服务支持,如服务拆分与通信、服务发现与注册、数据持久化与缓存及安全与认证;2) 容器化支持,涉及轻量级与可移植性、自动化构建与部署、环境变量配置及日志与监控。文中通过代码示例展示了如何使用Laravel框架构建微服务和Docker容器化部署。最后,提到了扩展性和容错性在微服务架构中的重要性,并指出实践中还需考虑版本控制、灰度发布等高级功能。
90 0
|
6月前
|
Kubernetes Cloud Native PHP
构建高效云原生应用:基于Kubernetes的微服务治理实践深入理解PHP中的命名空间
【5月更文挑战第28天】 在当今数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为了企业IT架构的重要选择。本文深入探讨了如何在云平台之上,利用Kubernetes这一容器编排工具,实现微服务架构的有效治理。通过分析微服务设计原则与Kubernetes特性的融合,提出了一套系统的微服务部署、监控和管理策略。文章不仅阐述了关键技术点,还提供了具体实施步骤和最佳实践,以期帮助企业构建出既高效又稳定的云原生应用。 【5月更文挑战第28天】在PHP的编程世界中,命名空间是管理代码和避免名称冲突的强大工具。本文将探讨PHP命名空间的核心概念、实现方式及其在现代PHP开发中的应用。通过深
|
6月前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
111 0
|
网络协议 Go API
php-websocket hyperf/websocket-server/client 客户端和服务器实时双向数据传输
php-websocket hyperf/websocket-server/client 客户端和服务器实时双向数据传输
345 0
|
Linux PHP Docker
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
847 0
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
|
PHP 开发者 微服务
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛
255 0
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛
|
存储 消息中间件 NoSQL
PHP 基于 SW-X 框架,搭建RPC微服务支持
SW-X的微服务也可用于优化FPM业务,底层使用了TCP通讯协议,支持基于AES的数据加解密支持,官方提供了Swoole/FPM下的RPC客户端,并提供了纯基于Redis存储管理的RPC服务中心。
|
消息中间件 监控 NoSQL
hyperf | 萌推 PHP 微服务化改造
刚进萌推时输出的一份文档, 现在回头看来, 有不少地方值得推敲. 先放到 blog 上, 权且抛砖引玉吧.
752 0
|
运维 API PHP
php| php 微服务之旅: 配置中心
这篇我们来撸配置中心. 为啥要用配置中心呢? 我用个讨巧的方式来回答这个问题:
597 0