Zan Group 代维——有赞跨语言服务之路

2020-02-27 56浏览

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