or在蜂窝业务场景应和探索€¦ · 挂起php-fpm 直处于占状态 ... 测试:...
TRANSCRIPT
-
OR在⻢马蜂窝业务场景应⽤用和探索
2019.05.11 李李培@⻢马蜂窝 武汉
-
0x01 场景选型
0x02 业务实践
0x03 未来规划
0x04 Q&A
-
0x01 场景选型
轻量量⾮非阻塞 性能损耗⼩小
跨语⾔言、平台数据有限集合
上游服务之前
6 1
4 3
25
健壮、⾼高可⽤用
-
0x02 业务实践 - A/B Testing
Why OR?
⾮非OR OR sdk接⼝口,跨语⾔言成本⾼高 header map透传,不不区分语⾔言、平台
20ms - 100ms,偶有超时 1ms-2ms,⽆无超时
侵⼊入业务代码 ⽆无代码侵⼊入
同步阻塞,影响业务 异常⾃自动降级
-
0x02 业务实践 - A/B Testing
How:
-
0x02 业务实践 - A/B Testing
How:
-
0x02 业务实践 - A/B Testing
坑:
注意:回源尽量量⻓长连接
-
0x02 业务实践 - A/B Testing
测试:测试⼯工具:
jmeter测试环境:
16核x2,128G单机并发数:
100持续时⻓长:
300s结论: 使⽤用ABTest响应时⻓长不不超过2ms,随时间推移响应时⻓长和吞吐没有明显变化
-
0x02 业务实践 - A/B Testing
数据:
-
0x02 业务实践 - IM
原: 请求php polling 服务接⼝口,使⽤用Blpop阻塞获取redis服务应⽤用数据(业务需求),导致php进程挂起php-fpm⼀一直处于占⽤用状态,⼤大量量消耗服务器器资源
新: 通过Lua协程来接管必要的⻓长连接,释放php-fpm去做其它事情,节省服务器器资源
-
0x02 业务实践 - IM
⽣生产: 现在单台 = 原来3台物理理机
测试:测试集群设置某台web部署lua脚本后可承载的流量量明显⾼高于原来
最新: websocket + go + lualua 主要前置⼀一些标记位等简单逻辑
注意点:lua_shared_dict 跨 worker只能在 http 上下⽂文中出现lua_shared_dict 写的mutex其实是⾃自旋锁+互斥锁的混合锁reload会清除 shared_dict 的缓存数据,要注意ops 操作对dev业务的影响如果是nginx ingress 在 restart后注意各种配置是否有持久化存储
-
0x03 未来规划
计划:1. JWT2. 链路路追踪3. WAF4. 业务数据逻辑前置upstream
待解决:1. lua部署位置特殊,部署对ops侵⼊入,带来成本与⻛风险
2. nginx < 1.13.11不不⽀支持⽀支持nlb的proxy protol v2
-
0x03 未来规划
待解决问题3:运⾏行行时监控、性能监控、预警待完善
-
ThanksQ&A