PHP大规模服务化的实践过程 丁盼盼 PHPCon2020

  • 41 浏览

PHPConChina

2020/10/25 发布于 技术 分类

文字内容
2. PHPConChina 历年完整 PPT 下载: https://github.com/ThinkDevelopers/PHPConChina 视频回看地址: https://www.itdks.com/Home/Act/apply?id=5366 PPT 版权归属 PHPCon 组委会和嘉宾本人所有,请勿通过其他渠道提供下载
3. PHPConChina 官方渠道 • • • • • 官网:http://www.phpconchina.com/?o=ppt 公众号:PHPCon 纪念品购买:https://k.weidian.com/H3=4lVho 客服咨询:PHPConChina(个人微信号) 官方QQ群: 34449228( 加群注明 PHPCon ) 扫码关注了解行业最新动态
4. TARS基金会Ambassador TARS开源项目核心贡献者 丁盼盼
6. SOA
7. 微服务化 整合人力资源 建设通用业务 推进架构统一
8. 微服务化前期准备 打通数据 用户中心 内容与创作平台 统一稿酬体系 开发通用型内部RPC服务
9. 引入成熟的RPC服务体系
10. 当时TARS技术栈 C++ Java Nodejs 体系完善 PHP C# Python 只有少量功能
11. 通用型内部RPC服务 内容服务 增值消费服务 榜单服务 搜索服务 ........
12. 切换到微服务 逐步迭代老功能到新服务 VS 一刀切直接重新设计产品
13. 微服务规模 1000+微服务 php c++ java nodejs 1.9亿MAU
14. 微服务单个接口
15. 微服务优势 进一步降低了单个服务的复杂度 更细的服务粒度,使服务拥有更高的可复用性 针对不同业务,采用不同的编程语言
16. 微服务缺点 需要建设更自动化的服务管理平台 微服务拆分取舍、单个服务质量要求更高 更复杂的整体技术体系,建设成本高
17. tarsphp建设阶段1 基于php迭代器的swoole自研框架 tars协议解析&通信部分代码自动生成 其他继承自C++的基础服务改成php扩展
18. tarsphp建设阶段2 初步接入tars平台,实现发布、启停 改造自研框架,方便现有服务快速改造升级
19. tarsphp建设阶段3 由于tars开源了,能接触到源码&文档 采用轻量级设计,兼容开源和内部tars 实现完整的tars能力,开源tarsphp
20. 新需求按什么维度拆分服务 业务是否有状态&体量的评估 中台团队支持力度 业务可投入的开发资源
21. 监控微服务 服务自身&依赖服务 超时 报错 流量剧烈变化 具体到服务的接口或特性指标 及时响应 快速定位
22. 监控微服务
23. 监控微服务
24. 微服务日志
25. 具体开发 合适的框架 连接池 熔断流控降级 毫秒级响应时间 本地开发环境
26. tarsproxy
27. tarsproxy
28. tarsproxy 请求包体 struct RequestPacket { 1 require short iVersion; 2 optional byte cPacketType; 3 optional int iMessageType; 4 require int iRequestId; 5 require string sServantName; 6 require string sFuncName; 7 require vector sBuffer; 8 optional int iTimeout; 9 optional map context; 10 optional map status; }; //版本号 //包类型 //消息类型 //请求ID //servant名字 //函数名称 //二进制buffer //超时时间(毫秒) //业务上下文 //框架协议上下文
29. tarsproxy
30. 自动扩容缩容 策略 资源池 标签 资源利用率 物理机裁撤 服务访问权限自动授权
31. 自动扩容 业务模块不满足最小容错节点数 MEM高负载 机器CPU高负载 机器故障
32. 自动缩容 最近N天负载过低 最近N天没有手动扩容&自动缩容
33. K8STARS
34. K8STARS 保持tars原生的开发框架能力 支持tars的名字服务自动注册和配置删除 支持原有tars服务平滑迁移到k8s等容器平台 支持Kubernetes HPA 无侵入性设计,与运行环境无偶合关系
35. PaaS
36. 分布式KV DCache是一个基于TARS框架开发的分布式NoSQL存储系统 数据采用内存存储,支持连接后端DB实现数据持久化。 DCache采用集群模式,具有高扩展、高可用的特点。 DCache在腾讯内部有大量业务使用,日访问总量超万亿次。
37. 分布式KV 高性能存储引擎,支持key-value,k-k-row,list,set,zset 支持数据持久化落地后端DB 集群模式,高扩展,高可用,支持异地镜像,就近接入 通过名字访问,支持同步、异步、单向RPC调用 高效运维平台,在线完成服务部署、扩缩容、迁移 业务无须和直接和mysql交互, DCache会自动缓写DB
38. 分布式KV
39. 分布式数据库 TDSQL 基于MySQL/MariaDB 内核分支 金融级分布式架构 自动水平拆分 高度兼容 MySQL 语法 不停机弹性扩展 强同步复制
40. 最终一致性 接口幂等 基于mq实现最终一致性 没有使用TCC XA
41. TarsGateway TarsGateway是基于tars框架开发的一套通用api网关。 请求为http协议,后端同时支持tars-tup&tars-tars、tars-json。 除了协议转发之外,还支持流量控制,黑白名单等功能
42. TarsGateway
43. TarsGateway
44. TarsGateway