加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

浅谈PHP微服务集群搭建

发布时间:2019-09-18 23:57:13 所属栏目:建站 来源:Jochen
导读:近些年微服务架构大行其道,趁着最近有时间,来捣鼓捣鼓微服务是怎么一回事。 微服务架构 微服务的概念由 Martin Fowler 于2014年3月提出: 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最

对于 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 代码如下:

  1. version: "3" 
  2.  
  3. services: 
  4.   consul-server-leader: 
  5.     image: consul:latest 
  6.     container_name: consul-server-leader 
  7.     command: "agent -server -bootstrap -ui -node=consul-server-leader -client=0.0.0.0" 
  8.     environment: 
  9.       - CONSUL_BIND_INTERFACE=eth0 
  10.     ports: 
  11.       - "8500:8500" 
  12.     networks: 
  13.       - microservice 
  14.  
  15.   microservice-1: 
  16.     build: 
  17.       context: . 
  18.     container_name: "microservice-1" 
  19.     command: "php bin/hyperf.php start" 
  20.     depends_on: 
  21.       - "consul-server-leader" 
  22.     volumes: 
  23.       - ./www/microservice-1:/var/www 
  24.     networks: 
  25.       - microservice 
  26.     tty: true 
  27.  
  28.   microservice-2: 
  29.     build: 
  30.       context: . 
  31.     container_name: "microservice-2" 
  32.     command: "php bin/hyperf.php start" 
  33.     depends_on: 
  34.       - "consul-server-leader" 
  35.     volumes: 
  36.       - ./www/microservice-2:/var/www 
  37.     networks: 
  38.       - microservice 
  39.     tty: true 
  40.  
  41.   app: 
  42.     build: 
  43.       context: . 
  44.     container_name: "app" 
  45.     command: "php bin/hyperf.php start" 
  46.     depends_on: 
  47.       - "microservice-1" 
  48.     volumes: 
  49.       - ./www/web:/var/www 
  50.     ports: 
  51.       - "9501:9501" 
  52.     networks: 
  53.       - microservice 
  54.     tty: true 
  55.  
  56. networks: 
  57.   microservice: 
  58.     driver: bridge 
  59.  
  60. volumes: 
  61.   microservice: 
  62.     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 协议调用加法运算和除法运算的服务获取结果并返回给用户。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读