微服务框架 - 模块功能设计篇
概述
从微服务各个模块的需求侧,及功能设计,实践选型与落地三个方面理解微服务框架。
本篇:从各个主要模块功能设计角度分析,需要哪些功能,满足什么特点
1:配置中心
1.1 功能
注册配置与反注册(取消)
配置项查询:模糊与精确查找
修改:单个与批量修改
多级别配置:配置重用与覆盖--apoll支持
配置存储结构:分组+组内kv格式。
配置内容:服务参数,资源:(ip,服务分组),开关等
配置获取:推,拉,变更与订阅
推模式:及时,但可能丢失
拉模式:可靠,但可能不及时,
可两者结合.Apollo采用推拉结合模式
1.2 特性
配置中心的可用性与一致性
配置是否在本地缓存-启动服务即便配置中心不可用也可以启动
配置的优先级:程序内置,本地缓存,启动命令,配置中心 多优先级。
配置的版本化支持:记录历史版本,不同服务版本可用不同配置值等
2:通信框架
1.1 基础功能
通信协议的实现:通信,协议解析,安全,压缩,序列化
http 与RPC选择。
集成SDK:消费者与服务提供者集成SDK
协议描述转换:如果可支持跨语言的RPC需要提供跨语言接口描述转换。
1.2 高级功能
服务注册与发现
通信框架紧密相关的服务治理功能:健康检查,负载均衡,失败重试,服务分组,路由策略
这部分经常内置到通信框架中。
自动生成客户端--gRPC 的核心亮点
3:通信框架的配套-服务注册与发现
服务注册与发现
服务注册:3角色,注册中心,消费者,服务提供者。
3.1 功能
注册中心功能
1:服务登记
服务提供者登记服务:登记内容包括服务地址,分组,服务名,服务调用信息(失败重试等),版
本,一般用json格式存储。
服务消费者:获取可用服务列表。
2:注册方式
应用内自注册,应用外注册(外部监听服务)
3:服务变更
服务提供者反注册服务
服务消费者:获取服务失效通知
4:健康检查
注册中心检查到服务失效
服务消费者上报服务失效
5: 服务的路由
注册中心按条件下发或消费者按条件筛选:距离就近,负载均衡。
版本符合:版本管理与灰度发布
路由规则可是条件或脚本。
流量切换:IDC级别故障-流量切换(RPC分组|DNS解析),功能上服务分组调用,读写分离。
服务发现功能
进程内置LB:程序有侵入-需要依赖服务发现程序包-sdk。多语言支持升级成本高
独立的负载均衡器:多了一跳有性能消耗,LB可能存在单点问题
主机独立的负载均衡模式:运维成本高
3.2 特性
注册中心的特性要求
高可靠性与一致性选择:CA还是CP
多注册中心支持
并行订阅,批量注册问题(idc故障)
4:服务治理
服务治理功能部分由通信框架解决,部分在通信框架外解决。如果用http通信,服务治理可都在框架在解决。云原生下k8s也提供部分服务治理功能。
4.1 功能
服务端
服务降级:自动降级与手动降级
限流:阀值设置
重启:重启条件,重启策略
客户端
熔断:熔断条件,熔断后探测与恢复
失败重试:快速失败,重试,稍后重试,失败通知-查询与重试。
服务代理
消费者调用服务代理,服务代理转到服务消费者。
服务代理对消费者隐藏服务调用的复杂性,治理逻辑都放在代理上。
服务网格(service mesh)就是一种服务代理。
健康检查:目的:探测服务可用性,实现故障节点摘除与恢复
方法:注册中心负责,管理节点负责
消费者上报。
4.2 特性
提供自动触发与手动干预,阀值配置等功能可灵活调整
故障问题与处理要记录,或接入监控系统
5:服务监控
有些是将运营需要的业务指标归到统计系统
而用于发现系统问题的服务监控与基础设施监控放在监控系统。
用两套或多套系统实现不同内容的监控。
5.1 功能
多来源多层次收集:用户端,业务,服务,基础服务,基础设施
查询展示:多维的多指标查询,合适的展示方式
关联与报警:关联日志系统方便定位,关联报警系统自动报警
5.2 特性
监控系统本身的权限控制
扩展性:监控是动态调整扩展的,要有灵活的扩展性,方便接入更多的监控内容。
来源格式与数量:监控统计的数据源头来源多,格式多,数量大。
做好适配多种来源,格式转换,海量存储。
查询高效:海量数据中高效检索。
搭建完善的监控系统是个技术含量高的任务,而且很重要。
没有监控出了问题就是瞎猜。监控某种问题能防患于未然。
6:日志收集与调用追踪
6.1 功能
日志收集:按机器及服务收集日志,方便统一处理与查询
日志分析:异步分析日志,输出分析结果,存储分析结果
日志追踪:按调用链传递调用轨迹信息,方便追踪串联。
最好有统一系统提供追踪信息查询。
6.2 要求
日志同一个服务的调用日志输出要与执行顺序一致
日志附带关键统一上下文方便按需排查与分析
部分业务数据打点输出
可视化展示, 报表,依赖图
客户端侵入成本低-埋点方式
7:网关
8:容器化与devops
8.1 功能
服务自动化打包,集成,测试
基础设施云化管理
服务部署容器化
容器化调度服务
8.2 要求
容器化部署与配置结合
扩展,重启等与监控系统关联
9: 统一管理平台
版权声明: 本文为 InfoQ 作者【superman】的原创文章。
原文链接:【http://xie.infoq.cn/article/42c016be32caeb0adfd533e97】。文章转载请联系作者。
评论