(1)当前问题与挑战
A.如何发现应该使用哪个中间件集群?
B.如何监控中间件集群是否可用?
C.如何在中间件集群不可用时,实现行快速失败转移?
D.如何让应用里的中间件客户端内部运行状态可视化?
E.如何从中间件的维度,监控其使用情况?
F.如何简化客户端提供诸多参数的配置?
(2)中间件集群智能管理思考
针对上述问题与挑战,整体解决思路如下:
- 通过“高可用管理”解决A、B与C问题。
- 通过“运行组件可视化”解决D与E问题。
- 通过“组件配置集中管理”来解决F问题。
(3)组件配置集中管理
A)低级阶段:直接在“应用层”进行配置;即通过配置Eean的属性+应用文件配置,优势为Bean配置更简单更直接。
B)终极阶段:通过“配置中心”进行配置;即直接配置中间件集群地址、从应用维度配置参数等,实现组件参数自动装配与中间件服务地址的自动发现。
C)高级阶段:实现“集中统一的配置管理“;即兼顾应用与中间件维度管理配置、服务地址通过命名服务智能路由。
- 组件参数统一配置:可以简化开发配置,提升效率;⾃动⽀持新增属性配置,⽆须代码改动;属性⾃动装配,可以建⽴配置Key/Bean 的绑定关系,⽀持变更热⽣效;⽀持组件视图,概览同⼀组件配置情况等等。
- 中间件命名服务:可以通过serviceType + serviceId⾃动发现中间件服务地址,并注⼊到客户端, 实现智能路由功能;快速感知中间件服务地址的变更并⽣效,实现中间件的⾼可⽤和⾼稳定等等。
(4)运⾏组件内部可视化
- 统一监控接口:针对配置信息、健康情况、运行数据、度量指标进行监控。
- 应用与组件管理:针对组件装配管理、组件配置集中管理、集成中间件命名服务、组件配置运行时变更热生效等管理。
- 应用分析诊断平台:针对运行时内部状态可视化、应用/组件健康检查、应用/组件运行时分析诊断、报表分析和告警等进行告警诊断。
(5)中间件集群高可用管理
(5.1)集群可用性的威胁因素
- 软件故障:占比30%。比如遇到高并发后雪崩,架构设计有问题,代码有bug等。
- 硬件故障:占比40%,比如主板坏了,硬盘坏了,网络故障等。
- 人为因素;占比20%,比如误执行命令“rm - fr”,拔个插头,恶意报复等。
- 系统环境因素:占比10%,比如地震、海啸、台风、火灾等。
(5.2)系统可用性度量
系统可⽤性 = 系统可⽤时间 / (系统可⽤时间 + 系统不可⽤时间) = MTTF / (MTTF + MTTR) = MTTF / MTBF
(5.3)中间件高可用管理
设计:优质的设计需要花费20倍的精力,实现需要花费3倍的精力,部署只需要1.5倍精力。能够实现分而治之,即可复制、垂直分拆、数据分片等。实现面向故障编程,即可开关、可回滚、可管控等。实现可监控、可运维。
监控与故障转移(步骤):
- step one)通过集群智能管理平台的探针,定时对分布式中间件集群进行故障探测。
- step two)通过集群智能管理平台的故障决策器模块,综合对组件监控、系统监控、应用监控等分析得出判断结果。
- step three)根据步骤2)的判断结果,由“故障决策器模块”实现对故障的判定与决策。
- step four)“故障决策器模块”通过命名服务将变更通知传递给业务应用的配置客户端/命名服务。
- step five)由业务应用模块将配置配置客户端的查询地址返回给集群智能管理平台的命名服务,进而完成中间件集群的切换。
(6)SRE的愿望
- 故障预案宇演练
- 事后故障分析
- 平台化、自动化、智能化
- 结构化宇理性决策
链接:移动云开发者社区
来源:移动云官网开发者社区