康彬 基于微服务的混合云和同城双活实践

文字内容
1. 微服务体系下的混合云&同城双活 实践探索 康彬(robinkang) 乐信/架构总监
4. 康彬(robinkang) 乐信/架构总监 14年研发及管理经验,从0到1组建了乐信架构团队, 主导并推动了乐信集团业务系统从单体应用架构向微服 务架构的演变、从 php 技术栈向 java 技术栈的无缝转 型,从私有云向混合云的进化,及新一代的同城双活技 术架构的研发与落地工作
5. 信用成长成就品质生活
6. • 大促的痛及混合云实践 • 同城双活的探索之路 • 单元化&双活的应用场景 • 未来的规划
7. 大促的痛及混合云实践
8. api-gateway 发布系统 业务服务层 监控告警 系统 前端业务服务 分期乐 桔子理财 鼎盛资管 …… 调用链路 系统 中台服务层 获客 授信 下单 核心交易平台 还款 风控审核平台 服务治理 系统 中间件层 微服务框架 服务发布 服务订阅 服务元数据管理 消息中间件 消息生产 消息消费 消息元数据管理 服务注册 中心 job调度系统 job发布 job调度 mq管理系统 mq管理系统 job元数据管理 job管理系统 资源层 计算资源 (CPU) 存储资源 (内存 磁盘) 网络资源 (ip 端口 带宽) 配置中心
9. 大促的痛 机器准备周期长,紧急 情况无法应对 大促后机器闲置率高,资 源浪费巨大
10. 混合云需求分析 流量大户上云,顶住流量洪峰 01 02 03 机器资源按需 申请 接入层按url调 度流量 服务层set化的 路由策略 04 数据层读请求 上云,写请求 回自建idc
11. 机器器资源按需分配
12. 接入层URL粒度流量调度 DNS app/browser 安全防护 LB https://order.lexin.com/create https://order.lexin.com/query WAF WAF Nginx-Proxy Nginx-Proxy 自建IDC 云IDC
13. 服务化框架的单元化路由 自建IDC 全站服务 registry 云IDC 上云服务
14. 混合云 DNS app/browser LB nginx-Proxy 自 建 机 房 nginx-Proxy registry web web all_service read_service data_proxy data_proxy data(r/w) data(r) 云 机 房
15. 同城双活的探索
16. 未来的担忧 单集群 随着流量越来越大,集群规模 越来越大,怎么破? 单机房 如果发生机房级的灾难怎么办?
17. 单元化&多活的范围 oa prod boss devops 人事系统 销售系统 客服系统 电商 现金 发布系统 财务系统 风控审核 催收系统 信用卡 用户增长 监控系统 招聘系统 政策管理 智能推荐 会员 桔子理财 调用链路 大数据 AI/BI 风控平台 交易平台 日志系统 …… 故障时,只影响内 部办公相关的公司 经营活动,不影响 用户下单交易 …… …… …… 故障时,间接或部分影响用户 下单交易,但有降级方案来缓 冲、减少影响 故障时,直接影响用户下单交 易,且没有降级方案来缓冲、 减少影响 故障时,只影响日 常研发运维活动的 进行,不影响用户 下单交易
18. 美好的愿望 中心机房 单元机房 registry_sync registry registry web web 全站业务服务 电商单元 核心交易平台 风控审核平台 data_proxy data(r/w) 核心交易平台 风控审核平台 data_proxy data(r)
19. 残酷的现实
20. 缺乏按用户维度的流量调度能力 1 4 2 5 3 6 LB 1 Nginx-Proxy Nginx-Proxy 2 6 3 4 5 自建IDC 云IDC
21. 定时任务与普通服务耦合 lsf_registry job service lsf_container job service lsf_container
22. 业务配置与运维配置需求矛盾 biz-config biz-config dba-config1 dba-config2 中心机房 _ConfigCenter 单元机房 _ConfigCenter biz_config biz_config dba_config1 S dba_config2 S
23. MQ缺乏单元化路由能力 中心机房 单元机房 namesrv namesrv producer producer brokermaster brokermaster consumer consumer broker-slave broker-slave
24. 业务板块边界模糊 registry(分期乐) registry(鼎盛) 鼎盛业务服务 鼎盛业务数据 代理 应用 分期乐业务服务 分期乐业务数据 registry(桔子理财) 代理 应用 桔子理财业务服务 桔子理财业务数据
25. 缺乏全链路的系统诊断能力 业务系统 (业务错误码) 服务框架 (请求数、成功率等) 基础组件 (mq、fastdfs、redis、mysql) 操作系统 (CPU、内存、磁盘容量、系统负载)
26. 出师不利后的复盘反思 相对更独立、历史包袱更轻业务板块试点 补齐短板、夯实基础
27. 接入层具备用户维度流量调度能力 uid=1 uid=2 nginx+lua uid%3=1 uid=1 单元1 uid%3=2 uid=2 单元2 uid=3 获取分流策略 更新分流策略 redis uid%3=3 uid=3 单元3 console
28. 统一集团job调度平台、分离service和job lsf_registry job_scheduler service service lsf_container lsf_container job job job_container job_container
29. 跨机房的统一配置中心 跨机房 _ConfigCenter biz-config dba_config1 dba_config2 biz_config dba_config1 S biz_config dba_config2 S
30. mq具备单元化路由及容灾能力 中心机房 单元机房 namesr v producer consume r namesr v producer brokermaster brokerslave brokermaster brokerslave consume r
31. 统一开放网关建设,划清业务板块边界 registry(鼎盛) 内网 DNS 鼎盛业务服务 开放 平台 网关 鼎盛业务数据 registry(分期乐) 内网 DNS registry(桔子理财) 分期乐业务服务 开放 平台 网关 桔子理财业务服 务 分期乐业务数据 桔子理财业务数 据
32. 全链路系统诊断能力建设 链路日志埋点 1 Nginx Api-gateway、CGI、Job调度 在源头为每次请求生产唯一标识traceid 接入层 Api-gateway 服务层 job调度 CGI 2 Application(LSF) 3 中间件 数据层 LSF框架 微服务框架通过RPC调用上下文透传traceid RocketMq mq通过消息属性字段透传traceid RocketMq Mysql Redis 4 Mysql、Redis mysql、redis组件采集请求中包含的traceid
33. 混合云&同城双活 native/wex DNS h5 同城 双活 LB Nginx-Proxy 机房2 web层 web层 data层 混合 云 Nginx-Proxy 机房1 service层 外网 LB 单 元 service层 data层 内网 Nginx-Proxy 云机房 web层 中 心 service层 data层 云 单 元
34. 单元化&多活应用场景
35. 蓝绿发布step1 100 % LB 50 % service1_A service2_A service3_A 50 % service1_B SET_A service2_B service3_B SET_B
36. 蓝绿发布step2 100 % LB 0% service1_A service2_A service3_A 100 % service1_B SET_A service2_B service3_B SET_B
37. 蓝绿发布step3 100 % LB 0%~100% service1_A service2_A service3_A 100%~0% service1_B SET_A service2_B service3_B SET_B
38. 蓝绿发布step4 100 % LB 100% 0% service1_A service2_A service3_A service1_B SET_A service2_B service3_B SET_B
39. 蓝绿发布step5 100 % LB 50% 50% service1_A service2_A service3_A service1_B SET_A service2_B service3_B SET_B
40. 跨机房容灾
41. 数据层跨机房容灾状态1 中心机房 单元机房 app prxoy(r) app prxoy(w) prxoy(w) master slave prxoy(r) slave slave slave slave
42. 数据层跨机房容灾状态2 中心机房 单元机房 app prxoy(r) app prxoy(w) prxoy(w) new_mast er master slave prxoy(r) slave slave slave
43. 未来规划
44. 还有那些优化空间 弹性伸缩 基于全链路诊断体系的自动扩缩容能力 数据单元化 接入层分流+服务层单元+数据单元