蚂蚁金服金融级paas平台构建之道

http://www.infoq.com/cn/presentations/antgroup-build-financial-class-paas-platform?utm_source=presentations_about_internet-finance&utm_medium=link&utm_campaign=internet-finance

看到 16 min

负载均衡。使用软负载做负载均衡。消除单点;提升性能,因为直接点对点,不需要裹负载均衡设备。

  • 应用启动的时候,到配置中心注册我需要的服务,以及我提供的服务;实际调用是 P2P 的,不需要过配置中心。
  • 配置中心提供健康检查,更新 list 推给 subscribe 方。
  • 线上环境、测试环境的配置文件维护很麻烦,使用配置中心的好处,只用知道配置中心在哪里就可以了。惊呆。

分布式事物 DTS - 传统两阶段提交,不侵入业务,但是当并发上万时,锁会带来严重的性能问题。 - 需要业务方提供 commit 和 rollback ,需要 transaction monitor,几十分钟人工干预一次。 - 转账 try 转出方 冻结,转入方 加入待转表,commit 转出方 扣除 转入方 加入,rollback 。 - 上线前的严格测试。

豆瓣服务化

合并代码冲突 不能独立伸缩 全局错误

错误发现 优雅降级 静默保护 自动恢复

服务自治

服务化三剑客

  • PIDL 定义了接口

    导出复杂对象 RPC框架 优雅降级 pickle 二进制协议 以牺牲语言无关性为代价,换取尽可能少的代码修改。

  • 通信用 pidl proxy,golang 实现的

    服务发现,请求路由,合并连接 超时判定,负载均衡。

  • fusible

    接口级的断路器。 静默后,定时放出哨兵请求。

  • redeye 声明式的动态数据接口。

    服务端维护一个沙箱,沙箱中也只能访问 pidl 暴露出来的接口。

    为什么说客户端有个沙箱,

  • kenshin / shuai 复杂度管理

拆分服务

  • 尝试在 A 的接口层和 A 组件之间引入本地 PIDL 协议,看工作有没有问题,找出热点在哪里,需要预备预备多少资源等。
  • 确保 B 对 A 的调用可以正确降级? TODO 怎么做降级的测试?
  • 中间有很多尝试和失败。
  • 在正确的事情把事情落实下去。
  • 工具优先,开源工具优先。
  • 为了高性能,破坏了资源隔离。