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