滴滴代驾微服务介绍

2020-03-01 794浏览

  • 1.滴滴代驾微服务介绍 赵伟 2016年10月
  • 2.
  • 3.目录 1、微服务理解 2、微服务实践 3、微服务回顾
  • 4.2、微服务理解 XXX 应用 API Server Dao 存储 B Service API Server Dao 存储 ......... XXX Service 服务注册/ 发现
  • 5.1、微服务实践 我们为什么要微服务? 1. 简化业务复杂度。 2. 服务可复用。 3. 对调用方透明,屏蔽业务复杂度。 4. 提供无限可扩展性能。 5. 发布相对单体服务来说简单。 6. 方便技术体系改造。 代驾什么时候开始微服务? 滴滴代驾在开创初期就按微服务架构理念进行架构设计。
  • 6.2、 微服务实践:架构规范 Ø 每个服务单进程,无状态。 Ø 服务职责单一,通过API暴露服务能力。 Ø 核心服务存储独立,外部服务必须通过接口访问数据。 Ø 查询数据库时单表查询。 Ø 服务间调用关系为树状关系,下层服务向上层服务回溯结果时建 议采用异步消息方式回溯。
  • 7.2、微服务实践:总体架构 监控告警 微服务 日志检索 接入层服务 运营/客服类服务 API网关 业务监 控告警 TCP网关 统一登录平台 CRM 业务服务 综合服务 组合服务 收银台 BOSS 营销 订单 快付 地推服务 用户 LBS 支付网关 司管服务 判责 司机在线时长 …… …… 系统监 控告警 消息队列 服务注册发现 中间件 ……… 存储层 MySQL MongoDB 远程调用 分库分表 Cache Logstash Elastic search Kibana 配置管理
  • 8.2、微服务实践:微服务架构 API Gateway Api Api Server API Server Dao Server Dao Dao A Service Api Api Server API Server Dao Server Dao Dao B Service Mongo Cache MYSQL Mongo Cache MYSQL ......... 服务注册/发现 XXX Service
  • 9.2、微服务实践 代驾在微服务实践过程中在外部接入、安全、可用性等 方面的考虑: Ø 网关实践: APP如何快速接入API Gateway 。 Ø 安全实践:数据安全。 Ø 降级实践:流控及故障降级、本地化降级、同步改 异步降级。
  • 10.2、微服务实践: API Gateway API Gateway Cache Https JSON Nginx Http JSON API API gateway Gateway gateway MQ Gateway 管理后台 MYSQL Obj XXX Service XXX Service XXX Service 发现 注册 服务注册发现
  • 11.2、微服务实践:数据安全 “数据资产等级划分 + 敏感信息脱敏”实现数据资产安全。 数据资产级别 C1­ ~不 限 制 …… 分级依据 XXX事业部 XXX事业部 适合于公开的数据。不会对滴滴(用户,司机,员工)的财 产、形象、名誉、人身安全以及合法利益造成影响的数据。 C2 ~ 限制 不适合对外公开,但是对公司内部人员访问基本无限制。 API Gateway 该等级数据一旦被泄露或者公开,不会对数据主体造成直 接损害,但是作为数据管者,有责任对这些信息进行保护。 外部 内部 C3 ~ 机密 适合于部分人可见的数据,丢失或不当使用此类数据将显 著影响部门开展业务和提供服务等。该等级数据一旦被泄 API鉴权配置 露或者公开,会对数据主体造成直接或者间接损害。 C4 ~ 绝密 适合于极少数人可见的数据,信息不安全可能导致公司面 Gateway XXX Service 临法律风险。该等级数据一旦被泄露或者公开,会对数据 XXX Service 管理后台 主体造成重大损失。 XXX Service
  • 12.2、微服务实践:雪崩与降级 流控 用 户 请 求 用 户 请 求 异步 降级 B Service 用 户 请 求 A降级 Service 降级 C Service 本地 降级 用 户 请 求 用 户 请 求 故障 降级 D Service
  • 13.2、微服务实践:网关流控 Ø API Gateway流控策略 1. API + IP流控。 2. API + User ID流控。 3. APP级别流控。 4. 黑白名单(IP 或 User ID)。 5. 通过正则表达式进行流控操作。
  • 14.2、微服务实践:故障降级 XXX 服务 其它服务 正常逻辑 降级逻辑 降级判断 业务处理 降级点 Service Degradation System SDS客户端Jar包 降级预案 更新策略 阈值、降级 比例等属性 心跳线程 SDS 服务 配置降级预案 异常量/异常率 设定阈值
  • 15.2、微服务实践:本地降级 司机登录、鉴权 登录 登录 Token 失败则 本地登录 登录 登录 Gateway Token Token Token Token 鉴权 鉴权接口宕 机本地鉴权 XXX Service XXX Service XXX Service 滴滴 用户中心 鉴权
  • 16.2、微服务实践:异步请求 取消订单 内部服务 支付 外部服务 订单 高危用户判断 判责结果 判责结果 消息队列异步调用 消单信息 CRM 判责 消息队列异步调用 高危用户 判断 用户画像 ......... 地图
  • 17.3、回顾 服务粒度 • 服务拆分 • 服务合并 研发效率之测试 • 单元测试 • 持续集成
  • 18.3、回顾:服务粒度 业务场景 酒后代驾 包司机 用户 商户 订单 代保养 支付 普通服务 …… 营销 发单 圈司机 派单 计费 分润 …… 基础服务池
  • 19.3、回顾:持续集成 Ø 问题: 1. 服务越来越多,测试工作量越来越大,测试压力也越来 越大。 2. 如何证明团队开发出的软件在任何时候都可以正常运行, 对外输出保持不变,功能没有退化。
  • 20.3、回顾:持续集成 每5分钟 触发一次 源码库 开 发 分 支 A Merge分支 开 发 分 支 B Jenkins Trigger JOB2 执行测试用例 合并 Trigger 合并 JOB1 编译、部署 CI环境
  • 21.THANK YOU 北京市海淀区东北旺路8号院尚东·数字山谷B1号楼