车轮Swoole微服务架构--韩天峰@PHPCON2017

2020-02-27 385浏览

  • 1.2017 车轮Swoole微服务架构 @hantianfeng Rango-韩天峰 / 车轮互联
  • 2.关于我 • 车轮互联总架构师 • PHP官方扩展开发组成员 • 微博:@hantianfeng •Github:https://github.com/matyhtf
  • 3.分享内容 一.Service通信框架 二.微服务架构 三.微服务公共组件
  • 4.01 Swoole 实现 Service 服务框架
  • 5.为什么要进行服务化治理(SOA)
  • 6.基于数据库表、Redis实现服务 1. 存储层未隔离,数据不可迁移调整,耦合性极高 2. 扩展性、可维护性极差
  • 7.PHP代码(函数/类)实现服务 1. 客户端必须include/require一个文件 2. 代码修改必须通知所有业务方升级 3. 可能存在不同版本的兼容问题 4. 无法跨语言,不支持C++、Java等其他语言程序
  • 8.HTTP+JSON的Web API 1. 解决了耦合问题,可以提供良好的服务隔离 2. 优点:目前最通用的服务治理方案 3. 缺点:a) Http不支持并发,b) 长连接支持差,c) 不 支持订阅与消息主动推送
  • 9.基于Swoole实现Service方案 1. 基于Swoole提供的包头+包体自动协议处理 2. Server/Client两端无需写任何底层代码 3. 支持单连接并发,客户端只需要与服务器建立一条连接 4. 支持php-fpm中使用TCP长连接,需要依赖swoole扩展 5. 自带Task进程池功能,可直接将慢速请求异步执行 6. 支持跨语言调用,C++、Java等其他语言程序也可以方便使用 7. Server/Client两端可以实现异步
  • 10.REST 1. Domain:dns + host + port 2. Header 3. Cookie 4. Method:GET/POST/DELETE/PUT 5. Parameter:name=rango&value=test#stop 6. POST:form-data格式、urlencode格式
  • 11.微服务理念 1. 轻量:客户端、服务端无需额外工作即可运行 2. 简单:元素少,使用简单,无需培训,无需手册
  • 12.车轮微服务 服务名 接口名 参数 环境信息
  • 13.车轮微服务 :调用方
  • 14.车轮微服务 :串行调用
  • 15.车轮微服务 :并行调用
  • 16.车轮微服务 :提供方
  • 17.
  • 18.
  • 19.
  • 20.为什么不用Thrift、ProtoBuf 1. 优点:解包/打包性能好,IDL,自动生成多语言调用 代码,对静态语言友好 2. 缺点:服务提供者需要编写维护IDL文件,门槛较高, 不方便抓包调试
  • 21.运行环境 1. Server支持 Win/Mac(仅开发)、Linux (生产环境) 2. 服务提供方可以使用 Java、C++、GO 实现接口 3. PHP Client支持 stream、sockets、swoole 3种驱动 4. 支持语言客户端 Java、C++、Node.js、GO、Python
  • 22.02 Swoole 微服务架构
  • 23.服务发现 故障转移 集群管理 微服务 监控报警 负载均衡 调用统计
  • 24.配置中心 1. 每台服务器安装一个NodeAgent程序 2. 配置文件可以拉也可以推 3. 可以根据集群key得到机器列表
  • 25.服务发现 & 负载均衡 1. 服务器程序 onStart 时调用 curlhttp://config'>http://config