有赞跨语言服务之路--大门@PHPCON2017

2020-02-27 119浏览

  • 1.有赞跨语⾔言服务化之路路 @代维
  • 2.About me • Zan Group负责⼈人 • PHP官⽅方PECL开发组成员 • 有赞PHP框架组负责⼈人
  • 3.I. 架构演进史 II. 跨语⾔言服务化 III. 架构详情 IV. :)
  • 4.Part I 架构演进史
  • 5.第⼀一阶段 APP H5 外部接⼊入(Nginx) ★ 结构简单 ★ 开发效率高 YAF PHP ( Nginx + FPM ) 会员 店铺 商品 分销 营销 交易易 ⽀支付 ★ 维护成本低 MySQL Redis … X 可用性 X 扩展性 X 伸缩性 X 协作 X 耦合
  • 6.第⼆二阶段 H5 ISV APP 外部接⼊入(Nginx) Iron PHP Framework (70+) 展现 WWW WAP ★ 扩展 业务逻辑 会员 店铺 Cobar MySQL Cluster 商品 Redis 交易易 团队协作 X 隔离 X 可用性 X 黑盒 OPEN ★ 分层 ★ 解耦 X 营销 分销 NSQ ⽀支付 … ElasticSearch Canal
  • 7.第三阶段 H5 APP ISV 接⼊入层 消 息 平 台 Iron PHP Framework ZanPHP ( Http Server ) Carmen (Open Platform) 迁移中… WWW 服 务 接 ⼊入 WAP 业务逻辑(SOA Framework) 营销 商品 交易易 会员 ⻔门店 批发 ⽀支付 … Shiva(Data Storage) Codis( Cache) RDS MQ Search KVDS Wagon ⽇日志平台 Task 配 置 管 理理 Job Watchman ⼤大数据 ⻛风控 监 控 平 台 运 维 平 台 研 发 平 台
  • 8.Part II 跨语⾔言服务化
  • 9.What? ⾯面向服务的架构(SOA)是⼀一个组件模型,它将应⽤用程序的不不同功能 单元(称为服务)通过这些服务之间定义良好的接⼝口和契约联系起来。 PHP Java ……
  • 10.Why? • 松耦合 • 协作效率 • 可⽤用性 • 伸缩性 • 发挥多语⾔言优势
  • 11.How? Event 请 求 ⼊入 ⼝口 Session Cookie Trace Env … Context go(callable) defer(callable) parallel($calls) getContext() setContext() … Filters HTTP Service Bo Vo Dao … TCP Core App 协程调度 Event Di Config Domain … Console Resource 连接池 Mysql Kv Nsq Syslog Nova … syscall Response Terminators view html json jsonp jpg csv … 监控 资源清理理 … controller Acl Trace … PHP协程 MQ worker Apps …… View composer Layout Components jsVar JsLoader CssLoader JsMinifier Form … 分布式⽇日志 调⽤用链监控 配置中⼼心 容灾 框 架 层 vendors RPC(nova, thrift, pb, …) 服务发现 ext 请 求 处 理理 层 …… S O A
  • 12.Part III 架构详情
  • 13.服务发现 protocol + namespace + appname + host + port 服务注册中心 服务注册中心 Registry heartbeat subscribe notify Consumer LB soft LB && invoke register 服务注册中心 服务注册中心 provider Provider
  • 14.RPC Nova协议(TCP) Consumer IDL IDL 连接复⽤用 Provider
  • 15.RPC Nova(基于Thrift) REST RPC ⽐比HTTP更更快的TCP协议 IDL⽂文件可以通过⼯工具快速⽣生成最准确的⽂文档 跨语⾔言⽀支持(语⾔言特性,数据类型) 像本地调⽤用⼀一样使⽤用 IDE⽀支持,⽅方法参数提示 调试?不不是问题
  • 16.负载均衡 服务注册中心 服务注册中心 Registry 动态变更更 • 动态权重 • 加权轮询(Weighted Round-Robin) heartbeat subscribe notify Consumer LB • soft LB && invoke register 服务注册中心 服务注册中心 provider Provider
  • 17.调⽤用链
  • 18.调⽤用链
  • 19.监控 • 基础机器器指标监控 • 应⽤用全局监控 • 单应⽤用⻆角度监控 • 链路路监控
  • 20.限流降级 • 对上游应⽤用限流(QPS) • 对上游应⽤用拒绝服务 • 对上游应⽤用按⽐比例例丢弃请求
  • 21.熔断隔离 Consumer Provider1 ❌ ❌ Provider2 ❌ ❌ 触发熔断 熔断⽣生效
  • 22.熔断隔离
  • 23.Part IV Zan* Open Source By Zan Group
  • 24.Zan ⼀一个底层⽹网络库,通过PHP扩展⽅方式使⽤用 完全遵循Apache协议,基于Swoole 1.8.5版本分⽀支重构研发 ⼤大量量模块解耦拆分 修复⼤大量量Bug、逻辑缺陷(内存泄露露、释放逻辑) 内置通⽤用连接池 异步接⼝口⽀支持超时 ⽀支持时间轮算法
  • 25.Zan 增强Mysql client安全性(预处理理、事务) Nova协议⽀支持 ⽀支持平滑重启 接⼝口单元测试覆盖率100% 实时、全⾯面的API⽂文档 ……
  • 26.提供能⼒力力 100+应⽤用 2000+服务 300+机器器 ZanPHP + Zan 300,000,000+⽇日请求 99.99%+可⽤用性
  • 27.提供能⼒力力 昨天、今天 开源RPC调试⼯工具 完美⽀支持PHP7.1 Zan Group专业的⽀支持
  • 28.对未来的期望 逐步开放更更全⾯面的服务化能⼒力力,怀着开放的⼼心态做好开源。 —— Zan Group全体成员
  • 29.谢谢Github:http://github.com/youzan开源官⽹网:http://zanphp.ioQQ交流群: 115728122