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

PHPConChina

2017/06/21 发布于 编程 分类

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

PHPCon2017 

文字内容
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.io QQ交流群: 115728122