写点什么

微服务框架 - 模块功能设计篇

用户头像
superman
关注
发布于: 2020 年 08 月 14 日

概述

从微服务各个模块的需求侧,及功能设计,实践选型与落地三个方面理解微服务框架。



本篇:从各个主要模块功能设计角度分析,需要哪些功能,满足什么特点



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: 统一管理平台

发布于: 2020 年 08 月 14 日阅读数: 77
用户头像

superman

关注

还未添加个人签名 2018.07.20 加入

还未添加个人简介

评论

发布
暂无评论
微服务框架 - 模块功能设计篇