关于hyperf:hyperf-框架完善之枚举类和公共函数库连载中

转发自白狼栈:查看原文 明天咱们来看两个问题,枚举类和公众函数库的引入。 枚举类上节课最初咱们抛出的问题其实就是如何自定义 code 的问题。 为了方便管理错误码,咱们利用 hyperf 的枚举类进行治理。 枚举类参考 https://hyperf.wiki/3.0/#/zh-...枚举类依赖 hyperf/constants 组件,composer require 进行装置。 composer require hyperf/constants:3.0.*生成枚举类 php bin/hyperf.php gen:constant ErrorCode生成好的 ErrorCode 类批改如下: <?phpdeclare(strict_types=1);namespace App\Constants;use Hyperf\Constants\AbstractConstants;use Hyperf\Constants\Annotation\Constants;#[Constants]class ErrorCode extends AbstractConstants{ /** * @Message("Server Error!") */ const SERVER_ERROR = 500; /** * @Message("params.id_invalid") */ const PARAMS_ID_INVALID = 100001;}如上,咱们减少了 PARAMS_ID_INVALID=100001 用来定义“id有效”,能够应用 ErrorCode::getMessage(ErrorCode::PARAMS_ID_INVALID) 来获取对应错误信息。 IndexService::info 批改如下: use App\Constants\ErrorCode;public function info(int $id){ if ($id <= 0) { // throw new BusinessException(trans('params.id_invalid')); throw new BusinessException(ErrorCode::getMessage(ErrorCode::PARAMS_ID_INVALID)); } return ['info' => 'data info'];}curl 后果如下: ...

November 25, 2022 · 2 min · jiezi

关于hyperf:hyperf-框架完善之国际化多语言连载中

转发自白狼栈:查看原文 明天咱们来看一下如何让 hyperf 反对国际化。 所谓的国际化就是多语言,比方后面抛出的异样信息“id有效”,咱们心愿客户端抉择中文的时候提醒“id有效”,抉择英文的时候提醒“id is invalid”,抉择日语的时候提醒“ID が無効です”等等,这里的国际化指的并不是全站内容的国际化,比方用户发问的问题内容。 首先多语言须要依赖 hyperf/translation 组件,容器内应用 composer 装置。 composer require hyperf/translation:3.0.*生成 Translation 组件的配置文件 config/autoload/translation.php。 /data/project/questions # php bin/hyperf.php vendor:publish hyperf/translation[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\Config\Listener\RegisterPropertyHandlerListener listener.[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\ExceptionHandler\Listener\ExceptionHandlerListener listener.[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\DbConnection\Listener\RegisterConnectionResolverListener listener.[hyperf/translation] publishes [config] successfully.config/autoload/translation.php 内容如下: <?phpdeclare(strict_types=1);return [ // 默认语言 'locale' => 'zh_CN', // 回退语言,当默认语言的语言文本没有提供时,就会应用回退语言的对应语言文本 'fallback_locale' => 'en', // 语言文件寄存的文件夹 'path' => BASE_PATH . '/storage/languages',];其中 path 指的是语言文件寄存的门路,默认配置在 storage/languages 上面。 ...

November 25, 2022 · 2 min · jiezi

关于hyperf:hyperf-框架完善之异常处理连载中

转发自白狼栈:查看原文 上一节课咱们封装了对立响应的办法,敲过一遍代码的小伙伴可能会发现一个显著的问题,对于业务逻辑的解决,咱们往往会写在 Service 中,比方像上面这样: App\Service\IndexService (自行创立)如下: <?phpdeclare(strict_types=1);namespace App\Service;class IndexService{ public function info(int $id) { if ($id <= 0) { throw new \Exception("id有效"); } return ['info' => 'data info']; }}这个时候就须要咱们在 IndexController::info 办法内通过 try/catch 捕捉解决了,如下: use App\Service\IndexService;use Hyperf\Di\Annotation\Inject;use Hyperf\HttpServer\Annotation\AutoController;#[AutoController]class IndexController extends AbstractController{ /** * @var IndexService */ #[Inject] public $indexService; public function info() { try { return $this->response->success($this->indexService->info($id)); } catch (\Throwable $e) { return $this->response->fail(500, $e->getMessage()); } }}其中,IndexService 是通过 #[Inject] 注解注入由 @var 注解申明的属性类型对象。依赖注入参考 [https://hyperf.wiki/3.0/#/zh-... ](https://hyperf.wiki/3.0/#/zh-...)这样看似解决了被动抛异样的问题,然而也带来了新的问题,比方每个办法都要用 try/catch 捕捉,无疑减少了很多麻烦。 ...

November 25, 2022 · 2 min · jiezi

关于hyperf:hyperf-框架完善之接口统一响应连载中

转发自白狼栈:查看原文 上节课咱们曾经胜利启动了 hyperf,咱们的目标是利用 hyperf 实现一套问答零碎的接口开发。 在开发需要之前,为了让咱们的框架更加欠缺,先看几个问题。 接口对立响应异样类对立解决国际化反对枚举类和公共函数库的引入明天咱们先来看第一个问题。 在接口开发中,固定数据结构的响应内容十分有利于客户端解析,所以咱们有必要先定义一套对立响应的数据格式。 例如申请失败时,对立返回 { "code": 错误码, "message": "Not Found"}申请胜利时,对立返回 { "code": 0, "data": []}程序抛出异样时,对立返回,无论是被动抛出还是零碎抛出的异样 { "code": 错误码, "message": "xxx"}来看下实现步骤: 1、Controller 的父类 AbstractController 减少 success 和 fail 办法如下: public function success($data = []){ return $this->response->json([ 'code' => 0, 'data' => $data, ]);}public function fail($code, $message = ''){ return $this->response->json([ 'code' => $code, 'message' => $message, ]);}2、App\Controller\IndexController 减少 AutoController 注解以及测试方法如下: <?phpdeclare(strict_types=1);namespace App\Controller;use Hyperf\HttpServer\Annotation\AutoController;#[AutoController]class IndexController extends AbstractController{ public function info($id) { if ($id > 0) { return $this->success(['info' => 'data info']); } else { return $this->fail(500, 'id有效'); } }}[AutoController] 参考 https://hyperf.wiki/3.0/#/zh-...3、容器内重启我的项目 ...

November 25, 2022 · 2 min · jiezi

关于hyperf:hyperf-实战之安装连载中

转发自白狼栈:查看原文 首先,我本地的环境是 Mac + PHP 7.4.21 + Swoole Version => 4.6.7 + Composer version 2.4.4,作为学习,倡议大家对立抉择官网的 docker 镜像。 咱们先在本地创立一个目录,这个目录会间接映射到 hyperf 容器的 /data/project 目录。 ~ » cd /data/work/data/work » mkdir questions_learn执行上面的命令装置 hyperf 镜像,可能须要期待几分钟等待时间(如果本地没有这个镜像的话)。 docker run --name hyperf-php-8.0 \-v /data/work/questions_learn:/data/project \-p 9501:9501 -it \--privileged -u root \--entrypoint /bin/sh \hyperf/hyperf:8.0-alpine-v3.15-swoole在这一步中,大家记得把 -v 前面的 "/data/work/questions_learn" 改成你本地的目录,其余的放弃不变。 下面的装置命令执行胜利后,咱们就曾经在 hyperf 容器内了,来一起看下 hyperf 容器内的环境。 / # php -vPHP 8.0.18 (cli) (built: Apr 22 2022 22:53:40) ( NTS )Copyright (c) The PHP GroupZend Engine v4.0.18, Copyright (c) Zend Technologies with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies/ # php --ri swooleswooleSwoole => enabledAuthor => Swoole Team <team@swoole.com>Version => 5.0.0Built => Aug 2 2022 03:09:01coroutine => enabled with boost asm contextepoll => enabledeventfd => enabledsignalfd => enabledspinlock => enabledrwlock => enabledopenssl => OpenSSL 1.1.1q 5 Jul 2022dtls => enabledhttp2 => enabledjson => enabledcurl-native => enabledpcre => enabledzlib => 1.2.12brotli => E16777225/D16777225mutex_timedlock => enabledpthread_barrier => enabledasync_redis => enabledDirective => Local Value => Master Valueswoole.enable_coroutine => On => Onswoole.enable_library => On => Onswoole.enable_preemptive_scheduler => Off => Offswoole.display_errors => On => Onswoole.use_shortname => Off => Offswoole.unixsock_buffer_size => 8388608 => 8388608/ # composer -VComposer version 2.2.1 2021-12-22 22:21:31/ # composer config -gl[repositories.packagist.org.type] composer[repositories.packagist.org.url] https://repo.packagist.org......(省略了其余代码)将 Composer 镜像设置为阿里云镜像,减速国内下载速度composer config -g repo.packagist composer https://mirrors.aliyun.com/composer能够看到,官网镜像默认反对了很多扩大,如果你抉择本人本地的环境,请至多确保你的运行环境达到了以下要求: ...

November 25, 2022 · 4 min · jiezi

关于hyperf:hyperf-实战之问答系统接口开发概述连载中

转发自白狼栈:查看原文 对于 Hyperf 的形容咱们就不做过多的介绍了。官网文档参考 https://hyperf.wiki/3.0/#/README。 因为咱们迟迟等不到 hyperf 3.0 的正式包(预计快了,截止目前(2022-11-02)曾经发了13个 rc 包了)。然而丝毫不影响咱们基于 docker + hyperf 3.0 进行学习。 这个系列咱们次要讲什么呢? 咱们次要模拟 http://funqas.com/ 这个网站,利用 hyperf 实现一套问答零碎的接口开发,包含 hyperf 框架的搭建、各个功能模块的实现以及前期的部署,手把手教你如何基于 hyperf 框架进行开发。 这套教程次要蕴含但不限于以下知识点: hyperf 框架的配置、异样解决、对立响应、国际化反对、表单验证、jwt、中间件、队列、邮件、事件、模型、缓存、全文检索 elasticsearch、redis、swagger文档、mongodb、task机制、协程交互、七牛文件治理、阿里云日志服务、内存透露检测、链路追踪、aop、自动化部署(单机以及集群部署)等等。 此外,大家在学习的过程中有任何问题或者有什么想学的,欢送在 http://funqas.com/这个网站上进行留言。 最初,学习本教程前,你须要做哪些筹备? 注册一个七牛的账号并实名认证(咱们会演示第三方存储以及协程的交互)有一个阿里云的账号(咱们会用到阿里云的日志服务、链路追踪)最好有一个域名(存储空间以及我的项目上线须要,如果没有,能够关注"白狼栈"公众号向我申请收费试用)最好有一台服务器(前期实战部署)有一些根底的编程教训、对 docker 和 linux 有一些理解该教程更多的是针对想全面学习 hyperf 框架的用户,如果你对 php 的微服务感兴趣,举荐大家去理解 hyperf 微服务系列。 注:前端的模板页面我曾经上传到 github 了,大家能够自行下载。(https://github.com/bailangzha...) 补充:这里说一下后续课程的安顿吧。 先把框架欠缺起来,至多跑起来能用;简略的知识点,文中会交叉官网文档的入口,大家肯定要联合文档学习,重要且难懂的知识点咱们肯定会细说,比方协程;前端的模板刚刚曾经预留过了,页面其实就是咱们的需要,后续咱们会划分功能模块,一个一个的实现;功能模块都实现之后,咱们再具体介绍怎么线上部署的,包含单机、集群;学习的过程中有任何问题,欢送留言。

November 25, 2022 · 1 min · jiezi

关于hyperf:Hyperledger-Cactus一架构初探

【摘要】 Hyperledger cactus是一个区块链集成框架,可能在多个分布式账本上执行交易,最大的特点是灵便可插拔的架构,官网定义:SDK of SDKs。Cactus 当初曾经反对的分布式账本有Hyperledger Besu、Corda、Corda OS、Hyperledger Fabric、Go-Ethereum、Quorum、Hyperledger Sawtooth等,均通过账本插件的... Hyperledger cactus是一个区块链集成框架,可能在多个分布式账本上执行交易,最大的特点是灵便可插拔的架构,官网定义:SDK of SDKs。 Cactus 当初曾经反对的分布式账本有Hyperledger Besu、Corda、Corda OS、Hyperledger Fabric、Go-Ethereum、Quorum、Hyperledger Sawtooth等,均通过账本插件的形式实现。 对于分布式账本的操作反对部署账本、执行交易、获取共识协定、判断是否具备最终性,如下接口定义所示。 所有的分布式账本接入cactus都须要实现此接口 插件化的架构如下图所示: 左下角的business logic plugin是业务逻辑插件,用于实现具体的业务逻辑,由web服务或者智能合约来实现,比方供应链溯源、工夫哈希锁转移资产等等。 右下角的validator是具体连贯分布式账本的模块,包含对上文的IPluginLedgerConnector的实现,一方面,validator用于执行对区块链的操作,另一方面,validator也会开启一个monitor,监听区块链的事件和区块,用于验证交易是否胜利。为了防止validator作恶,cactus现有的平安机制也有对应的预防措施,比方validator是能够被敞开的,一旦发现validator作恶,能够在不扭转部署架构的状况下敞开某些validator,以及对于同一条区块链,能够部署多个validator由多个参与方独特构建,升高被攻打的危险。 想理解更多华为云产品相干信息,请分割咱们,电话:950808按0转1

August 31, 2022 · 1 min · jiezi

关于hyperf:记一次hyperf-微服务实践

简略的业务模型图 这里对分层进行简略的阐明: 接口层 提供对立的http申请入口验证用户身份和申请的参数,对用户申请进行过滤。通过rpc调用业务层的办法来组织业务逻辑自身不对数据层进行间接操作从consul/etcd中发现服务提供方业务层 实现业务逻辑,并且为接口层提供rpc调用服务定时工作,音讯队列的生产和生产应用数据层将业务的后果长久化保留到数据库中将服务注册到consul/etcd中数据层 mysql 数据库提供次要的数据存储能力和事务处理能力mongo 数据库提供数据归档能力amqp 提供音讯队列反对elasticsearch 提供搜寻服务和日志存储公共服务 接口层和业务层都可能会用到redis提供缓存接口层和业务层都须要进行日志的收集和长久化注册发现 这里因为hyperf框架的反对,抉择应用consul作为服务的注册和发现开发阶段应用注册发现有很多不便,这里就通过svc的节点的形式进行rpc调用示例源码api我的项目仓库: https://gitee.com/diablo7/hyp...svc我的项目仓库:https://gitee.com/diablo7/hyp...公共设施仓库:https://gitee.com/diablo7/docker从官网demo开始说起上面是官网实例的一个服务调用 <?phpnamespace App\JsonRpc;use Hyperf\RpcClient\AbstractServiceClient;class CalculatorServiceConsumer extends AbstractServiceClient implements CalculatorServiceInterface{ protected $serviceName = 'CalculatorService'; protected $protocol = 'jsonrpc-http'; public function add(int $a, int $b): int { return $this->__request(__FUNCTION__, compact('a', 'b')); }}咱们看他的__request办法: protected function __request(string $method, array $params, ?string $id = null){ if (! $id && $this->idGenerator instanceof IdGeneratorInterface) { $id = $this->idGenerator->generate(); } $response = $this->client->send($this->__generateData($method, $params, $id)); if (is_array($response)) { $response = $this->checkRequestIdAndTryAgain($response, $id); if (array_key_exists('result', $response)) { return $response['result']; } if (array_key_exists('error', $response)) { return $response['error']; } } throw new RequestException('Invalid response.');}如果依照这个例子去组织代码你就会发现一个问题,如果result中也蕴含error外面的字段该怎么办? ...

March 18, 2022 · 5 min · jiezi

关于hyperf:hyperf-如何对AMQP消息进行手动消费

转发自白狼栈:查看原文 在应用 hyperf 官网自带的 AMQP 队列时你会发现,不须要咱们再额定启动过程对音讯进行生产。这是因为默认状况下,应用 @Consumer 注解时,hyperf 会为咱们主动创立子过程启动消费者,并且会在子过程异样退出后,从新拉起。 来看一个简略的例子。 1、创立producer php bin/hyperf.php gen:amqp-producer DemoProducer2、投递音讯 namespace App\Controller;use App\Amqp\Producer\DemoProducer;use Hyperf\Amqp\Producer;use Hyperf\Utils\ApplicationContext;class IndexController extends AbstractController{ public function index() { $user = $this->request->input('user', 'Hyperf'); $data = [ 'message' => "Hello {$user}.", ]; $message = new DemoProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); $producer->produce($message); return 'ok'; }}3、创立消费者 php bin/hyperf.php gen:amqp-consumer DemoConsumer4、测试 启动我的项目,浏览器拜访 http://127.0.0.1:9501/ ,咱们能够在控制台看到打印的音讯输入。 Array( [method] => GET [message] => Hello Hyperf.)[DEBUG] 1 acked.这个是 hyperf 自启动过程对音讯进行生产。 ...

January 10, 2022 · 2 min · jiezi

关于hyperf:hyperf如何使用自定义连接池pool

文档地址https://hyperf.wiki/2.2/#/zh-... 如何定义连接池?依照文档的要求在app/Pool门路下PHP文件MyConnectionPool.php。此时文件内容 <?phpnamespace App\Pool;use Hyperf\Contract\ConnectionInterface;use Hyperf\Pool\Pool;use Pheanstalk\Pheanstalk;class MyConnectionPool extends Pool{ public function createConnection(): ConnectionInterface { return new MyConnection(); }}在办法createConnetion返回的是一个接口ConnectionInterface,所以须要咱们自定义MyConnection类并实现接口ConnectionInterface <?phpnamespace App\Pool;use Hyperf\Contract\ConnectionInterface;use Hyperf\Pool\Pool;use Pheanstalk\Pheanstalk;class MyConnectionPool extends Pool{ public function createConnection(): ConnectionInterface { return new MyConnection(); }}class MyConnection implements ConnectionInterface{ public function getConnection(): Pheanstalk { // TODO: Implement getConnection() method. return Pheanstalk::create(env('BEANSTALK_HOST'), env('BEANSTALK__PORT')); } public function reconnect(): bool { return true; // TODO: Implement reconnect() method. } public function check(): bool { return true; // TODO: Implement check() method. } public function close(): bool { return true; // TODO: Implement close() method. } public function release(): void { // TODO: Implement release() method. }}在下面代码的示例中实现了对beanstalkd的连贯的创立。 ...

December 10, 2021 · 1 min · jiezi

关于hyperf:Docker容器下快速搭建Hyperf框架在Windows系统的本地开发环境

Hyperf框架介绍Hyperf是一个高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量罕用的组件,性能较传统基于PHP-FPM的框架有质的晋升,提供超高性能的同时,也放弃着极其灵便的可扩展性,规范组件均基于PSR规范实现,基于弱小的依赖注入设计,保障了绝大部分组件或类都是可替换与可复用的。Docker下开发假如您的本机环境并不能达到Hyperf的环境要求,或对于环境配置不是那么相熟,那么您能够通过以下办法来运行及开发Hyperf我的项目,这里咱们次要阐明在Windows操作系统下的开发。 下载并装置docker在Windows零碎中进行开发,咱们须要先装置docker for windows,首先间接进入docker官网:https://www.docker.com 而后顺次点击:Get started -> Download for Windows,即可下载docker 下载包可能比拟大,如果网络不太好的话须要急躁期待一下,待下载结束后间接下一步装置 启动报WSL2问题装置结束后,第一次关上可能会报WSL2问题,间接依照提醒里的URL地址关上, ,下载实用于x64计算机的WSL2 Linux内核更新包 ,下载结束后也是间接装置而后重启docker客户端即可 拉取docker镜像(hyperf官网)这里咱们应用的命令行工具是powershell,同时按win + r,再输出powershell后回车,即可关上命令行工具 而后在命令行中输出:docker pull hyperf/hyperf:7.4-alpine-v3.11-swoole,下载完docker镜像后,咱们能够应用docker image ls查看镜像列表,也能够在docker客户端的Images看到。 将本机我的项目目录绑定到镜像内的目录假如在我本机电脑的目录D:\project\hyperf下是hyperf的我的项目,并且端口是默认的9501,当初咱们将这个目录绑定到docker镜像中,即可实现在docker中开发,命令如下: docker run -d --name hyperf -v D:\project\hyperf:/data/hyperf -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole 因为咱们后面曾经拉取了镜像,所以这个命令会创立一个名为hyperf的容器,咱们应用命令dcoker ps即可看到咱们刚运行的容器的NAMES为hyperf,而且端口号是9501 进入容器后面咱们曾经创立了一个名为还有hyperf的我的项目,所以咱们须要执行命令docker exec -it hyperf bash即可进入我的项目镜像中 在容器内装置Composer首先下载composer.phar,能够通过以下形式下载,composer不同版本的查看地址https://github.com/composer/composer/releases: wget https://github.com/composer/composer/releases/download/2.1.12/composer.phar php -r "readfile('https://getcomposer.org/installer');" | php 下载实现后,再执行命令chmod u+x composer.phar给加上执行权限 再运行命令行mv composer.phar /usr/local/bin/composer,将composer.phar挪动至/usr/local/bin目录下并改名为composer,即可实现全局调用了 而后运行命令composer,即可测试是否装置胜利 设置Composer国内镜像阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer 腾讯云镜像 composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer 国内Composer镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com 接触镜像绑定并复原到官网镜像 composer config -g --unset repos.packagist ...

November 30, 2021 · 1 min · jiezi

关于hyperf:hyperf-微服务系列教程

Hyperf 是一个高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量罕用的组件,性能较传统基于 PHP-FPM 的框架有质的晋升,提供超高性能的同时,也放弃着极其灵便的可扩展性,规范组件均基于 PSR 规范 实现,基于弱小的依赖注入设计,保障了绝大部分组件或类都是 可替换 与 可复用 的。 在这个系列中,咱们次要基于 hyperf 2.2 进行解说。 hyperf微服务概述传统架构(一)—— 分层架构集群之高可用、高并发和高性能传统架构(二)——集群架构垂直架构、分布式架构和微服务架构hyperf垂直拆分案例hyperf从零开始构建微服务(一)——构建服务提供者hyperf从零开始构建微服务(二)——构建服务消费者hyperf从零开始构建微服务(三)—— hyperf对立响应服务注册与发现以及CAP准则和BASE实践hyperf服务注册与发现之初识consulhyperf服务注册与发现之consul的应用hyperf服务注册与发现之consul集群hyperf源码剖析——服务注册hyperf源码剖析——服务发现之负载平衡hyperf服务注册与发现之初识nacoshyperf服务注册与发现之nacos集群hyperf配置核心之nacoshyperf服务限流hyperf服务降级和服务熔断hyperf分布式链路追踪之zipkin实战【完结】hyperf服务监控之Prometheus+Grafana我的项目实战

November 3, 2021 · 1 min · jiezi

关于hyperf:hyperf从零开始构建微服务二构建服务消费者

浏览目录构建服务消费者装置json rpc依赖装置JSON RPC客户端server配置编写业务代码编写服务消费者类consumer配置配置 UserServiceInterface编写UserControllerpostman测试主动配置服务消费者配置优化对立后果解决咱们说过,服务提供者能够提供各种服务,它能够和数据库进行交互;服务消费者是纯生产的服务,只须要近程拜访服务提供者即可。 上面咱们按步骤构建消费者模块。 源码已上传至github,https://github.com/bailangzha...1、构建服务消费者除了对时区进行设置,其余的组件临时都不装置,抉择“n”即可。 composer create-project hyperf/hyperf-skeleton shop_consumer_user Creating a "hyperf/hyperf-skeleton" project at "./shop_consumer_user"Installing hyperf/hyperf-skeleton (v2.2.1) - Installing hyperf/hyperf-skeleton (v2.2.1): Extracting archiveCreated project in /data/web/test/hyperf-rpc/shop_consumer_user> @php -r "file_exists('.env') || copy('.env.example', '.env');"> Installer\Script::installSetting up optional packagesSetup data and cache dirRemoving installer development dependencies What time zone do you want to setup ? [n] Default time zone for php.iniMake your selection or type a time zone name, like Asia/Shanghai (n):Asia/Shanghai Do you want to use Database (MySQL Client) ? [y] yes [n] None of the above Make your selection or type a composer package name and version (yes): n Do you want to use Redis Client ? [y] yes [n] None of the above Make your selection or type a composer package name and version (yes): n Which RPC protocol do you want to use ? [1] JSON RPC with Service Governance [2] JSON RPC [3] gRPC [n] None of the above Make your selection or type a composer package name and version (n): n Which config center do you want to use ? [1] Apollo [2] Aliyun ACM [3] ETCD [4] Nacos [n] None of the above Make your selection or type a composer package name and version (n): n Do you want to use hyperf/constants component ? [y] yes [n] None of the above Make your selection (n): n Do you want to use hyperf/async-queue component ? (A simple redis queue component) [y] yes [n] None of the above Make your selection or type a composer package name and version (n): n Do you want to use hyperf/amqp component ? [y] yes [n] None of the above Make your selection or type a composer package name and version (n): n Do you want to use hyperf/model-cache component ? [y] yes [n] None of the above Make your selection or type a composer package name and version (n): n Do you want to use hyperf/elasticsearch component ? [y] yes [n] None of the above Make your selection or type a composer package name and version (n): n Do you want to use hyperf/tracer component ? (An open tracing protocol component, adapte with Zipkin etc.) [y] yes [n] None of the above Make your selection or type a composer package name and version (n): n2、装置json rpc依赖cd shop_consumer_usercomposer require hyperf/json-rpc3、装置 JSON RPC 客户端shop_consumer_user 不须要对外提供服务,所以咱们只装置客户端,不须要装置hyperf/rpc-server组件 ...

September 15, 2021 · 4 min · jiezi

关于hyperf:hyperf微服务概述

转发自白狼栈:查看原文 Hyperf 是一个高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量罕用的组件,性能较传统基于 PHP-FPM 的框架有质的晋升,提供超高性能的同时,也放弃着极其灵便的可扩展性,规范组件均基于 PSR 规范 实现,基于弱小的依赖注入设计,保障了绝大部分组件或类都是 可替换 与 可复用 的。 在这个系列中,咱们次要基于mac+hyperf 2.2进行解说,wondows用户也能够基于docker进行学习,该系列次要涵盖以下内容: 分层架构、集群架构、垂直架构、微服务架构cap准则和base实践负载平衡服务注册与发现 consul和nacos 以及各种集群服务降级、服务熔断jmeter模仿申请服务重试、服务流控配置核心链路追踪服务监控学习过程中咱们还会交叉hyperf框架的外围概念,包含注解、事件、AOP切面编程等。

August 26, 2021 · 1 min · jiezi