or在蜂窝业务场景应和探索€¦ · 挂起php-fpm 直处于占状态 ... 测试:...

14
OR在蜂窝业务场景应和探索 2019.05.11 @蜂窝 武汉

Upload: others

Post on 15-Aug-2020

1 views

Category:

Documents


0 download

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