| 
                         对于 Java 开发者来说,有技术相当成熟的 Dubbo 和 Spring Cloud 微服务框架可供选择。作为一名 PHPer,我用 Google  查了一下「PHP + 微服务」,发现有用的相关内容少之又少 ,没有什么实质性的参考价值,无限惆怅。。。幸好,有大神在基于 Swoole  扩展的基础上,实现了高性能、高灵活性的 PHP 协程框架 Hyperf ,并提供了微服务架构的相关组件。 
Hyperf 是基于 Swoole 4.3+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM  的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换  与 可复用 的。 
于是,我在学习了微服务架构相关的基础知识之后,使用 Hyperf 框架构建了一个基于 PHP  的微服务集群,这是项目源码地址:https://github.com/Jochen-z/p...。该项目使用 Dokcer  搭建,docker-compose.yml 代码如下: 
- version: "3" 
 -  
 - services: 
 -   consul-server-leader: 
 -     image: consul:latest 
 -     container_name: consul-server-leader 
 -     command: "agent -server -bootstrap -ui -node=consul-server-leader -client=0.0.0.0" 
 -     environment: 
 -       - CONSUL_BIND_INTERFACE=eth0 
 -     ports: 
 -       - "8500:8500" 
 -     networks: 
 -       - microservice 
 -  
 -   microservice-1: 
 -     build: 
 -       context: . 
 -     container_name: "microservice-1" 
 -     command: "php bin/hyperf.php start" 
 -     depends_on: 
 -       - "consul-server-leader" 
 -     volumes: 
 -       - ./www/microservice-1:/var/www 
 -     networks: 
 -       - microservice 
 -     tty: true 
 -  
 -   microservice-2: 
 -     build: 
 -       context: . 
 -     container_name: "microservice-2" 
 -     command: "php bin/hyperf.php start" 
 -     depends_on: 
 -       - "consul-server-leader" 
 -     volumes: 
 -       - ./www/microservice-2:/var/www 
 -     networks: 
 -       - microservice 
 -     tty: true 
 -  
 -   app: 
 -     build: 
 -       context: . 
 -     container_name: "app" 
 -     command: "php bin/hyperf.php start" 
 -     depends_on: 
 -       - "microservice-1" 
 -     volumes: 
 -       - ./www/web:/var/www 
 -     ports: 
 -       - "9501:9501" 
 -     networks: 
 -       - microservice 
 -     tty: true 
 -  
 - networks: 
 -   microservice: 
 -     driver: bridge 
 -  
 - volumes: 
 -   microservice: 
 -     driver: local 
 
  
这里启动了一个 Consul 容器 consul-server-leader 作为服务注册和服务发现的组件,容器 microservice-1 和  microservice-2 分别提供了加法运算和除法运算的服务。容器 app 作为服务调用方,配置了 consul-server-leader 容器的  URL,通过访问 consul-server-leader 获取 microservice-1 和 microservice-2 服务的 IP 地址和端口,然后  app通过 RPC 协议调用加法运算和除法运算的服务获取结果并返回给用户。                         (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |