朱剑峰 网易 Spring Cloud 万级实例调优与增强

QCon大会

2019/06/25 发布于 技术 分类

QCon  QCon2019 

文字内容
1. 网易万级SpringCloud微服务实践 朱剑峰 网易研究院架构师
3. 自我介绍 朱剑峰 网易研究院架构师 10年研发与架构设计经验,专注于支撑网易内部业务服务化演进,微服务平台架构设计工作。 有大量互联网金融系统,电商系统容器与微服务化经验。
4. 服务端架构演变 服务化 初期 • Spring MVC • 垂直烟囱 Spring MVC Nginx + Lua MQ 服务化 中期 • Dubbo • 服务数量20+ Spring Boot Dubbo Zookeeper DDD 微服务 化 • Spring Cloud + Dubbo(存 量) • 服务数量 300+ Spring Boot Hystrix Guava Sleuth+zipkin Kafka ELK 服务网 格化 Spring Boot Hystrix Istio Envoy Jaeger ELK
5. 服务化初期 —— 烟囱阶段 遇到的问题 • • • • 开发难:结构复杂,频繁失忆 测试难:全量回归 迭代效率低 缺乏服务治理手段 优化思路 • 大中台,小前台架构思想 • 提高横向扩展能力 • 实现灵活服务熔断、降级策略
6. 服务化中期遇到的问题 Zk注册中心成为瓶颈 • 注册模型臃肿 • 网络开销大 • 资源利用率低 dubbo://{server_ip}:20880/org.apache.dubbo.samples.api.GreetingService?anyhost=true&ap plication=dubboannotationprovider&default.timeout=1000&dubbo=2.0.2&generic=false&in terface=org.apache.dubbo.samples.api.GreetingService&methods=sayHello&pid=27780&sid e=provider×tamp=1543201372914 consumer://{server_ip}/org.apache.dubbo.samples.api.GreetingService?application=dubboa nnotationconsumer&category=consumers&check=false&default.timeout=3000&dubbo=2.0. 2&interface=org.apache.dubbo.samples.api.GreetingService&methods=sayHello&pid=2780 7&side=consumer×tamp=1543201852989
7. 优化重构注册中心 注册中心 • 提供服务实例注册发现,健康检查等 元数据中心 • 管理服务元信息,配置信息,路由信息等 优化思路 • 服务注册与服务发现解耦 • 抽象服务注册发现模型 • CP模型转为AP模型 • 元数据改造
8. 优化后注册中心性能 5W实例规模下重启测试 耗时s 140 120 100 80 60 40 20 0 实例数 1 10000 20000 zkcache nvwa 30000 50000
9. 服务化改造遇到的问题 3. Hystrix 熔断策略动态配置难 如何动态下发实时生效?
10. NSF 微服务框架 1.0 微服务框架 注册发现 限流 熔断降级 容错 路由 动态配置 服务监控 参数分流 负载均衡 服务告警 认证鉴权 拓扑依赖 知识库 ……
11. NSF 服务治理平台 1.0 解决了哪些问题? 业务代码,框架代码解耦开发和运维; 避免重复造轮子; 完善方法级别治理粒度; 服务治理策略实时生效;
12. NSF 微服务框架实现 SpringAOP自定义注解 + 字节码增强 引入微服务框架的能力 一句话概括!
13. 问题解决 —— 服务治理策略实时生效 SpringAOP自定义注解 + 字节码增强 引入微服务框架的能力 控制面 数据面
14. 测试环境的灾难 敢怒不敢言,敏捷只是个传说,联调时间永远不够…… 环境配置 问题,新 bug互相 Block 测试需求 源源不断 微服务架构下问题不断放大…… 测试资源 永远不够 搭建越来 越繁琐
15. 优雅的解决思路 自动部署环境(开发自调环境,peer联调环境……) 生命周期控制(创建、销毁、冻结……) 同环境优先调用
16. Step1. 自动部署测试环境 部署平台 • Git • Kubernetes • Helm • Maven 代码 拉取 代码 编译 部署 分支 镜像 构建 • Jenkins • Ansible
17. Step2. 流量染色 利用分布式追踪原理携带环境来源信息 X-B3-TraceId=3b68393d31a43489 X-B3-SpanId=bbca2e4bf2db4bfa X-B3-ParentSpanId=1669bfa13d21fedf X-B3-Sampled=1 X-NSF-AccessKey:e9e850c35447442da693c5648071c X-NSF-Date:2018-08-30T08:14:03Z X-NSF-Dryrun:false X-NSF-Signaturemethod:HMAC-SHA256 X-NSF-TraceOriginENV=edu-netease-15445215 携带环境来源信息
18. Step3. 多环境流量穿梭 • 降低测试成本 • 分支环境独立 • 灵活控制
19. NSF微服务框架 2.0 持续扩展,降低微服务成本 微服务框架NSF TCC 注册发现 限流 熔断降级 容错 服务路由 负载均衡 参数分流 动态配置 服务监控 服务告警 认证鉴权 拓扑依赖 知识库 …… 性能监控 链路追踪 事务消息 自动测试 自动补偿 流量染色 流量穿梭 环境感知 JVM监控
20. Service Mesh 能为微服务带来什么? 把框架与进行业务解耦,并下沉到基础设施中 与Spring Cloud各有优劣 在L4 实现治理流控与请求消息穿梭 p 流量染色 p 流量穿梭 p 故障注入 p 区域调度 p 异构支持
21. 引入Service Mesh架构 统一控制面对接多数据面