彭超:瓜子云的落地
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