备注:摘抄自我的同事张明可

主要内容

斗鱼微服务发展历程
jupiter介绍
jupiter功能点

斗鱼微服务发展历程

单体应用时代

  • 单一代码库
  • 多人开发效率低下
  • 回归测试困难
    斗鱼微服务框架-jupiter

垂直应用时期

  • 核心业务按组垂直拆分
  • 核心业务代码隔离
  • 一个团队负责一整个项目的生命周期

斗鱼微服务框架-jupiter

微服务时代

  • 服务完全隔离
  • 项目之间不共用数据源
  • 各个服务之间通过rpc接口通信
    斗鱼微服务框架-jupiter

微服务冰山模型
斗鱼微服务框架-jupiter

斗鱼微服务框架-jupiter介绍

Golang微服务框架痛点

斗鱼微服务框架-jupiter

jupiter 架构

  • 开发效率
  • 治理效率
  • 多场景应用
  • 服务治理平台

斗鱼微服务框架-jupiter

  1. 服务注册与发现

基于ETCD实现的注册发现服务。服务启动时将服务自身注册到ETCD集群,客户端调用服务时,从ETCD集群获取实例列表,在客户端进行负载均衡调用。

2.服务治理

针对服务的版本进行治理
解析服务依赖拓扑关系
增强服务可观测行
规定统一错误码
动态配置等

3.过载保护

为了防止业务因为访问量突增或服务器故障造成系统整体的繁忙,进而导致全部服务的不可用,框架内部针对服务进行了服务流控与标签分组,以及限流熔断措施

4.IDC/SET分组

为了减少网络资源消耗及网络故障带来的影响,框架提供了跨地区、跨机房、就近接入的IDC分组功能。框架提供了互不干扰、故障隔离的Set部署能力。

5.配置中心

通过ETCD集群+Agent的方式管理和更新配置文件,支持多格式多文件,对现有业务无侵入。
同时支持配置热更新,动态修改配置,提供配置长轮训机制

6.指标、链路、日志

基于prometheus+grafana搭建服务可视化监控系统,通过定义统一的指标格式规范、收敛错误码

Go微服务框架对比

斗鱼微服务框架-jupiter

斗鱼微服务框架-jupiter功能点

斗鱼微服务框架-服务注册与发现

1.etcd实现服务注册与发现
2.etcdProxy代理记录注册节点信息并且异步探活
3.客户端实时获取注册节点信息

斗鱼微服务框架-jupiter

斗鱼微服务框架-服务注册与发现治理

斗鱼微服务框架-jupiter
1.观测服务注册节点信息情况
2.提供服务节点的管理(启动,重启,停止等)

斗鱼微服务框架-多机房部署

支持多region,多zone注册方式
服务端可以动态切换注册节点,实现服务调度
斗鱼微服务框架-jupiter

etcd的value记录了注册节点的region,zone等元数据信息
斗鱼微服务框架-jupiter

斗鱼微服务框架-服务负载均衡1.0

1.无法快速摘除有问题的节点
2.无法均衡后端负载
3.无法降低总体负载
斗鱼微服务框架-jupiter

斗鱼微服务框架-服务负载均衡2.0

1.平滑服务端CPU的负载
2.快速剔除有问题的节点
3.同城多活
斗鱼微服务框架-jupiter
斗鱼微服务框架-jupiter

斗鱼微服务框架-配置驱动开发

先看以下代码存在的问题
斗鱼微服务框架-jupiter
1.每次发送请求都会创建一次连接
2.请求结束后没有及时释放掉连接
3.持续调用会导致tcp连接数暴涨

使用jupiter后

斗鱼微服务框架-jupiter
斗鱼微服务框架-jupiter
1.统一所有包的使用方式
2.统一由配置驱动组件启动

斗鱼微服务框架-监控、日志与链路追踪

斗鱼微服务框架-jupiter
1.服务监控
2.服务日志
3.服务链路追踪

斗鱼微服务框架-日志错误收敛

斗鱼微服务框架-jupiter

斗鱼微服务框架-jupiter

统一错误码信息
统一索引信息
区分系统和业务
区分重要信息和非重要信息
代码即是文档

斗鱼微服务框架-监控指标

斗鱼微服务框架-jupiter斗鱼微服务框架-jupiter斗鱼微服务框架-jupiter斗鱼微服务框架-jupiter

google sre四个黄金指标

斗鱼微服务框架-监控总览

斗鱼微服务框架-jupiter

1.响应时间
2.QPS
3.成功率

斗鱼微服务框架-jupiter

1.实例纬度记录服务的基础监控数据信息
2.服务健康状态
3.QPS
4.响应时间

斗鱼微服务框架-服务饱和度

斗鱼微服务框架-jupiter

1.全链路压测获取服务端的整体承载容量
2.记录服务的实时qps饱和度
3.根据实际情况进行服务扩缩容

斗鱼微服务框架-监控错误收敛

斗鱼微服务框架-jupiter

1.全链路压测获取服务端的整体承载容量
2.记录服务的实时qps饱和度
3.根据实际情况进行服务扩缩容

斗鱼微服务框架-快速定位问题

斗鱼微服务框架-jupiter

1.通过服务响应时间判断哪一个服务出现问题
2.通过TOP指标与上下游链路解析快速定位问题
3.结合服务上下文监控数据、profiling和错误日志进行分析
4.快速定位并且解决问题

斗鱼微服务框架-限流熔断

斗鱼微服务框架-jupiter

1.贡献sentinel代码
2.juno管理后台配置熔断规则
3.将配置规则写入etcd中
4.应用获取对应配置规则进行限流熔断

斗鱼微服务框架-动态日志级别配置

斗鱼微服务框架-jupiter

1.使用官方开源zap
2.监听应用配置信息及时修改zap的autolevel级别
3.实现动态调整日志级别
4.及时针对线上项目进行debug

斗鱼微服务框架-在线profiling

斗鱼微服务框架-jupiter

1.CPU分析
2.内存分析
3.协程分析
4.阻塞同步分析

最后

欢迎成为jupiter的开发者

https://github.com/douyu/jupiter

分类:

技术点:

相关文章: