阿里微服务布道师:详解微服务架构设计( 四 )


阿里微服务布道师:详解微服务架构设计

文章插图
 
服务依赖
阿里微服务布道师:详解微服务架构设计

文章插图
 
服务框架
  1. 服务注册、发现、负载均衡和健康检查 , 假定采用进程内LB方案 , 那么服务自注册一般统一做在服务器端框架中 , 健康检查逻辑由具体业务服务定制 , 框架层提供调用健康检查逻辑的机制 , 服务发现和负载均衡则集成在服务客户端框架中 。
  2. 监控日志 , 框架一方面要记录重要的框架层日志、metrics和调用链数据 , 还要将日志、metrics等接口暴露出来 , 让业务层能根据需要记录业务日志数据 。在运行环境中 , 所有日志数据一般集中落地到企业后台日志系统 , 做进一步分析和处理 。
  3. REST/RPC和序列化 , 框架层要支持将业务逻辑以HTTP/REST或者RPC方式暴露出来 , HTTP/REST是当前主流API暴露方式 , 在性能要求高的场合则可采用Binary/RPC方式 。针对当前多样化的设备类型(浏览器、普通PC、无线设备等) , 框架层要支持可定制的序列化机制 , 例如 , 对浏览器 , 框架支持输出Ajax友好的JSON消息格式 , 而对无线设备上的Native App , 框架支持输出性能高的Binary消息格式 。
  4. 配置 , 除了支持普通配置文件方式的配置 , 框架层还可集成动态运行时配置 , 能够在运行时针对不同环境动态调整服务的参数和配置 。
  5. 限流和容错 , 框架集成限流容错组件 , 能够在运行时自动限流和容错 , 保护服务 , 如果进一步和动态配置相结合 , 还可以实现动态限流和熔断 。
  6. 管理接口 , 框架集成管理接口 , 一方面可以在线查看框架和服务内部状态 , 同时还可以动态调整内部状态 , 对调试、监控和管理能提供快速反馈 。Spring Boot微框架的Actuator模块就是一个强大的管理接口 。
  7. 统一错误处理 , 对于框架层和服务的内部异常 , 如果框架层能够统一处理并记录日志 , 对服务监控和快速问题定位有很大帮助 。
  8. 安全 , 安全和访问控制逻辑可以在框架层统一进行封装 , 可做成插件形式 , 具体业务服务根据需要加载相关安全插件 。
  9. 文档自动生成 , 文档的书写和同步一直是一个痛点 , 框架层如果能支持文档的自动生成和同步 , 会给使用API的开发和测试人员带来极大便利 。Swagger是一种流行Restful API的文档方案 。
微服务系统底座一个完整的微服务系统 , 它的底座最少要包含以下功能:
  • 日志和审计 , 主要是日志的汇总 , 分类和查询
  • 监控和告警 , 主要是监控每个服务的状态 , 必要时产生告警
  • 消息总线 , 轻量级的MQ或HTTP
  • 注册发现
  • 负载均衡
  • 部署和升级
  • 事件调度机制
  • 资源管理 , 如:底层的虚拟机 , 物理机和网络管理
以下功能不是最小集的一部分 , 但也属于底座功能:
  • 认证和鉴权
  • 微服务统一代码框架 , 支持多种编程语言
  • 统一服务构建和打包
  • 统一服务测试
  • 微服务CI/CD流水线
  • 服务依赖关系管理
  • 统一问题跟踪调试框架 , 俗称调用链
  • 灰度发布
  • 蓝绿部署
容器(Docker)与微服务•容器够小
–解决微服务对机器数量的诉求
•容器独立
–解决多语言问题
•开发环境与生产环境相同
–单机开发、提升效率
•容器效率高
–省钱
•代码/image一体化
–可复用管理系统
•容器的横向与纵向扩容
–可复制
–可动态调节CPU与内存
容器(Docker)与微服务【阿里微服务布道师:详解微服务架构设计】•Image管理
•系统安全管理
•授权管理
•系统成熟度
•社区成熟度
开发方式影响随着持续交付概念推广以及Docker容器普及 , 微服务将这两种理念和技术结合起来 , 形成新的微服务+API + 平台的开发模式 , 提出了容器化微服务的持续交付概念 。


推荐阅读