彭超:瓜子云的落地

2020-03-01 58浏览

  • 1.瓜子二手车 – 彭超 2 C C A S 7 1 0
  • 2.2 C C A S 7 1 0
  • 3.背景介绍      节点数:1000+ 微服务:200+ 总QPS:1000k+ 语言:golang, php, java, nodejs, python, c++, scala 每周上线:1000+ 2 C C A S 7 1 0
  • 4.我们的问题     服务混合部署 资源利用不合理 上线流程繁琐 测试和线上环境不一致 2 C C A S 7 1 0
  • 5.2 C C A S 7 1 0
  • 6.目录      持续化集成 任务调度 日志收集 监控报警 Service Mesh 2 C C A S 7 1 0
  • 7.2 C C A S 7 1 0
  • 8.瓜子的特点和问题 特点 问题  多种语言  框架繁多  快速迭代     2 C C A S 7 1 0 如何构建的问题 快速部署的问题 权限管理的问题 如何方便程序员使用
  • 9.构建问题的解决 Prepare Fromgolang:1.8ADD ./ $GOPATH/ RUN go get 准备依赖  为项目搭建依赖环境 Build 2 C C A S Fromprepare:v17 1 0 Release From ubuntu ADD ./ $GOPATH/ RUN go install COPY --from=build app /med/ 编译代码 构建镜像     添加最新代码 Build二进制包 copy二进制包 构建镜像
  • 10.快速部署问题的解决 Docker Registry med set env 2 C C A S med prepare med deploy 7 1 0 med build med release metastore med-sdk kubectl create –f deploy.yml K8S
  • 11.权限管理和测试流程的解决 Laptop CLI med-sdk > med status > med log > med enter K8S Cloud Manager 7 1 0 Console 2 C C A S Auth K8S api
  • 12.基于VM的med-sdk 使用方式 遇到问题  在电脑上装一个虚拟机  Vagrant管理  挂载代码目录  回收磁盘问题  太耗资源  使用不便 2 C C A S 7 1 0
  • 13.基于docker的med-sdk Laptop docker run --rm medsdk build med-sdk Med med upgrade 2 C C A S Docker Daemon med build 7 1 0 med-sdk docker build docker pullmedsdk:latestDocker Registry
  • 14.2 C C A S Airflow on kubernetes 7 1 0
  • 15.起因和功能 起因 功能      数据仓库复杂依赖  自动扩容缩容  多种环境支持 需要自己维护环境 资源利用不合理 机器回收 代码更新,部署麻烦 2 C C A S 7 1 0
  • 16.Airflow原始架构 RabbitMQ Worker Node 1 Executor 2 C C A S 7 1 0 Master Node Scheduler Mysql Web
  • 17.Airflow上云的主要问题 Master Node Worker Node  不支持多个scheduler  代码更新问题  Web需要通过worker的 hostname获取日志  不同环境  新的任务环境如何搭建 2 C C A S 7 1 0
  • 18.Worker问题的解决  Worker里面没有任何环境  只负责启动和监控kubernetes job  job由给定的image和script来生成 2 C C A S 7 1 0
  • 19.Airflow云上架构 RabbitMQ kjob --imagemyimage:latest\ --script:‘hive –e test.sql’ 2 C C A S Scheduler Pod Zookeeper 7 1 0 Worker Pod kjob: 1. Generate k8s job.yml 2. kubectl create –f job.yml 3. kubectl logs -f podname 4. Get job status Job 1 Job 2
  • 20.任务部署流程 2 C C A S Docker Registry Scheduler 7 1 0 Job Code Job Config med-sdk Git Worker med-sdk Job K8S
  • 21.2 C C A S 7 1 0
  • 22.日志收集问题 瓜子需求 主要难点      文件日志如何收集  结构化日志结构改变  实时报警 采集存档 实时查询 批量处理 报警监控 2 C C A S 7 1 0
  • 23.文件日志收集的解决 解决方案 我们的选择  软链接到stdout  挂载盘  写到日志收集服务  挂载盘 2 C C A S 7 1 0
  • 24.如何挂载盘 1. 2. 3. 4. 统一挂载/var/log/k8s 在ENTRYPOINT中创建$POD_NAME目录,放在/var/log/k8s下 软链接该目录到/med/log下 日志文件全部写入/med/log 2 C C A S 7 1 0
  • 25.结构化日志的解决 主要功能 解决方案         实时检索 历史sql查询 常常会改日志结构 日志报警 2 C C A S 7 1 0 通过avro来做序列化 引入schema registry 引入log agent 使用spark streaming
  • 26.结构化日志收集 Avro Schema Registry App A 2 C C A S App B Avro Log Log Agent Avro Log Kafka 7 1 0 HDFS/Hive Gobblin ES/Kibana Spark Streaming Alert
  • 27.2 C C A S 7 1 0
  • 28.Service Mesh是什么  专属基础设施层  提供安全的、快速的、可靠地服务间通信  轻量级高性能网络代理 2 C C A S 7 1 0
  • 29.Service Mesh的爆发 2017.5 Istio 发布0.1版 2017.1 Linkerd 加入CNCF 2 C C A S 7 1 0 2017.9 Envoy加入CNCF 2017.7 Linkerd发布1.1.1 支持Istio 2017.9 Nginx发布Nginmesh 支持Istio
  • 30.Service Mesh能做什么       服务发现 延迟感知的负载均衡 熔断机制 连接重试和终止 安全性 灰度发布 2 C C A S 7 1 0
  • 31.2 C C A S 7 1 0
  • 32.Istio架构 2 C C A S 7 1 0
  • 33.Istio 组件 Envoy Pilot            支持TLS HTTP 2.0/gRPC 服务发现 负载均衡 监控检查 Metrics 2 C C A S 7 1 0 流量管理 请求路由 服务发现 负载均衡 规则配置
  • 34.Istio 组件 Pilot Pilot           流量管理 请求路由 服务发现 负载均衡 规则配置 2 C C A S 7 1 0 流量管理 请求路由 服务发现 负载均衡 规则配置
  • 35.Istio 组件 Mixer  前提条件检查  配额管理  遥测报告 7 1 0  用户认证 2 C C A S
  • 36.Envoy替代品 Linkerd Nginmesh      源自Nginx 源自Twitter 大厂验证过 Linkerd Ingress Per-host/Sidecar 2 C C A S 7 1 0
  • 37.欢迎加入瓜子二手车 瓜子招聘公众号 2 C C A S 瓜子简历投递 7 1 0
  • 38.2 C C A S 7作者微信 1 0