波波分布式架构课

波波分布式架构设计

  • 难点:缺乏大规模和量级环境,更新迭代快
  • 收获:PMQ2.0 ,设计大型系统,CDS/CQRS,迁移,双活,多活,架构师成长路径指南,避免重武器,第一原则:复杂性和成本
  • 问题:service mesh
  • 分布式系统设计5个重要步骤,mq概念和原理
  • 四大难题:数据一致性分发,数据聚合join,分布式事务,单体应用解耦拆分
  • 高并发大容量可扩展cache服务
  • 精细化服务治理,service mesh选型
  • 最小可用架构
  • 架构师如何高效学习
  • 系统设计面试案例 System design interview
    • 功能和非功能需求-高可用,高性能,量级,高并发,写入到读取时延,近实时
    • 基本流式计算思想
    • 分布式计数服务:需求明确-主动沟通,谁用,如何用,量级规模,qps,tps,性能需求-时延,成本。
    • 数据存储:单个时间和聚合存储,skillset,sharding sphere,cassandra-适合时间序列数据存储-wide row
    • 详细设计:aggregation,预聚合+批处理,pull-mq流量削峰 push,dead-letter queue 重试,data enrichment,kafka stream。
    • 接收路径设计:api gateway 如何实现负载均衡,如何实现网关实时防爬虫。
    • object store 冷数据归档,distributed cache-近期热点数据
    • 进一步考量:性能,多线程问题,jvm监控,队列监控,日志监控,metrics监控,tracing,系统数据准确性,线下批处理和实时流计算-Lambda Architecture,热分区问题,监控慢消费者。欺诈检测系统,限流系统,推荐系统,今日热点。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NiqBQb9-1618535276044)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210330173906034.png)]

PMQ

  • mq核心概念和原理

  • 设计实现简化版kafka

  • mq学习和治理的最佳实践

  • 自研PMQ

    • redis内存撑爆
    • kafka慢消费
    • 微服务化
    • EDA事件驱动架构
    • 研发资源稀缺
    • 改开源代码,不要造轮子
    • 定制扩展复杂
    • 新人抓手 bigqueue luxun Hermes
    • 设计目标:简单-不丢消息-高性能-可扩展-隔离性-监控治理-日亿级消息处理能力
    • At least once 消费语义
    • topic语义 fanout扇出语义 queue语义
    • 数据存储大胆采用mysql,一个分区一个表实现隔离
    • 拉模式consumer有更好隔离性,broker无状态方便扩展,pull模式是大型分布式企业级消息消费模式的最佳实践
    • producer使用hash机制保证业务相同可以发往同一分区
    • standby消费者
    • lag堆积监控 burrow 头尾指针距离,分区扩容或者增加消费者
    • 支持主题级别的私信队列
    • 消息轨迹可视化 nice to have 需求
    • https://github.com/ppdaicorp/pmq
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZemlL50k-1618535276047)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401104435763.png)]
  • kafka动态重平衡 stw效应优化

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jujvDdir-1618535276048)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401102344746.png)]

  • batch size 治理实践:研发自主治理,lag监控告警,动态偏移调整,失败消息处理-dead letter,线上测试 + 监控 https://github.com/linkedin/kafka-monitor

微服务数据一致性和事务问题

  • 微服务的四大核心难题

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yq5mzIDI-1618535276052)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401110510967.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tXu77pF5-1618535276054)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401110613818.png)]

    • 信息量很大,技术前沿

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yh4KlyWh-1618535276056)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401142808561.png)]

    • 状态相关难题

    • 数据一致性分发:

      • CQRS 去数据库join
      • 数据分发到其他感兴趣的其他服务
      • 异构系统
      • 事务性发件箱 transactional outbox:新增outbox table – message relay定期拉取 outbox – publish mq killbill项目outbox参考实现 https://github.com/killbill/killbill-commons/tree/master/queue
        • reaper机制收割机
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VERWZ8RG-1618535276056)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401144425565.png)]
      • 变更数据捕获 change data capture CDC
        • commitlog whl
        • Transaction Log – Transaction Log Miner 高可用部署 – mq
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpd4Dy9P-1618535276057)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401144844442.png)]
        • CDC企业级开源项目:阿里canal, redhat debezium,Zendesk Maxwell,Airbnb SpinalTap
        • Eventuate-Tram:DDD,CQRS,CDC
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sySWs4g8-1618535276058)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401145015163.png)]
        • Single Source of Truth 非权威的read-only
    • 微服务聚合join问题

      • BFF 聚合服务层 Backend for Frontend
      • N+1 问题
      • 数据量问题
      • 性能开销
      • 数据分发增量数据和预聚合缓存-物化视图
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m26ylBsd-1618535276059)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401201224550.png)]
      • 命令查询职责分离模式 Command Query Responsibility Segregation
        • Denomalize
        • 关键字查询用es
        • kv用redis Cassandra
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2jRaNgsJ-1618535276061)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401201422926.png)]
      • 服务层的读写分离
    • 分布式事务

      • Atomicity Consistency Isolation Durability

      • Read Uncommitted , Read Committed , Repeatable Reads , Serializable

      • Atomikos /Apress/practical-microservices-architectural-patterns/tree/master/Christudas_Ch13

      • Consistency Availability Partitioned-多个子系统直接通过网络通信

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z24wIltz-1618535276062)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401203330201.png)]

      • 业务场景建模

      • saga:协同式-无指挥,编排式-补偿取消,大规模分布式系统推荐使用

      • cadence

        • orchestration engine 流程编排 asynchronous long-running
        • 通用的工作流引擎
        • activity worker, workflow starter,workflow worker
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G6pZftyu-1618535276062)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401205718558.png)]
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJLoyzAF-1618535276063)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401205832965.png)]
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZQdHCbxS-1618535276065)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401205932790.png)]
        • 重试策略
        • /uber/cadence-web
        • /uber/cadence-java-samples
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TUr6oIKV-1618535276066)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401210846307.png)]
        • Ringpop 组成员协议
      • seata

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jN1sfjaR-1618535276067)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401204257405.png)]

        • TC Transaction Coordinator
        • TM Transaction Manager
        • RM Resource Manager
        • XID
        • @GlobalTransactional
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rzqw95eZ-1618535276068)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401205029301.png)]
    • 解耦拆分信号

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uhYfJxkk-1618535276069)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401211853395.png)]
      • https://www.youtube.com/watch?v=zVJSTMD6zg0
      • DB迁移技术:双写
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHKmeU2P-1618535276070)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401212638993.png)]
      • 接口收口:不要直接访问数据库,增加防腐层
      • 数据分发去join:CDC 服务双写,数据补偿和比对
      • 计划,梳理,沟通,监控
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8pgDt4YE-1618535276071)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401213048138.png)]
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ESQBHFdf-1618535276071)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401213409493.png)]
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-366IVey8-1618535276072)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210401213448879.png)]
  • https://netflixtechblog.com

  • seata-强一致性短事务 uber的cadence-异步编排方案-长短事务都支持-首选

  • 分享系统拆分和CQRS/CDC技术企业落地案例

高并发无状态的会话缓存服务-携程SessionService

  • 消除粘性有状态会话-Sticky Session

    • LB负载不均衡,应用和负载均衡器耦合,单点问题,难以水平扩展,跨数据中心HA。

    • 粘性会话,cookie,共享session,集中式session

    • 增量渐进

    • 架构设计目标:

      • 消除SS,支撑Scale Out,高并发,高性能99.99%<10ms,HA,透明扩容,透明升级,支持跨数据中心,接入简单-发布机制自动更新依赖包,监控和运维友好-细粒度的监控数据是后续性能调优和容量规划的依据
      • ASP.NET State Server Protocol
      • Thrift IDL 具有跨语言特性,基于二进制通讯
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4fSaJxBt-1618535276074)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409172500864.png)]
      • 缓存写后 Async Write Behind to DB
      • Eureka Peer sync协议实现跨数据中心
      • EVCache双写 x-pipe跨数据中心双向同步
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hr05Y5lx-1618535276075)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409173428319.png)]
      • LRUCache设计
        • hashmap + 链表记录时间
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XHu14v5H-1618535276076)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409174256537.png)]
      • Yahoo HaloDB
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-woBKi65y-1618535276077)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409174627802.png)]
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hg34130A-1618535276077)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409174721446.png)]
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G4b43SeM-1618535276081)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409174958858.png)]
      • 隔离失败域
      • 单元和测试学习bigcache代码
  • healthchecks.io SAAS

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MhMt8KOE-1618535276082)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210409181252028.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SiqswQAN-1618535276084)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410203510569.png)]

    • 定时任务监控,一体化监控,定制自研健康检查服务

    • 防攻击、防爬虫措施。

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gwWsrZe0-1618535276085)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410204741039.png)]

    • https://blog.healthchecks.io

    • https://github.com/getsentry

    • 轻量级的延迟任务队列设计

    • Kagkarlsson/Db-scheduler

    • Cron-util 工具类

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sgxCW1QA-1618535276086)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410210023944.png)]

    • fencing token 栅栏令牌锁

    • Shedlock

    • 令牌桶算法弊端:流量不够平滑,可以设置固定时间内流量限制,漏桶算法可以避免

    • Hystrix滑动窗口技术器优化固定窗口技术算法

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTGLK8J0-1618535276087)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410211704468.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPRzOiaQ-1618535276088)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410211803380.png)]

    • 设计一个分布式TopK系统

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Im2pGAH-1618535276088)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410212105184.png)]

    • 近实时的流处理方案

    • 小顶堆实现topK PriorityQueue 性能远远好于全排序

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECNPx0h7-1618535276089)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410212755356.png)]

  • 精细化服务治理 ServiceMesh解析 服务网格技术

    • ServiceMesh是微服务的未来

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2gUETvC1-1618535276091)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410213040695.png)]

    • Service Governance

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTKTHm2W-1618535276092)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410213215346.png)]

    • 形成良性反馈闭环

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U1an9x5j-1618535276093)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410213412231.png)]

    • 精细化服务治理 nice to have

    • dubbo借鉴finagle

    • Airbnb SmartStack 是ServiceMesh雏形

    • 容器技术降低了边车服务部署和治理的难度

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-98X6VViR-1618535276097)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410214220561.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6VeUXS4P-1618535276097)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410214320609.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AHOWSTL-1618535276100)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210410214548900.png)]

    • 谷歌趋势

    • Envoy Proxy

      • CNCF支持高性能反向代理中间件
      • c++开发具有较好性能
      • graceful restart 热重启
      • Http filter chan
      • 基于事件环的非阻塞型线程模型 main thread 、worker threads、file flush threads
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hW3PdbXk-1618535276100)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210411064800721.png)]
      • ingress入口监听器 egress出口监听器
      • envoy在lyft的实践
      • xDS API Envoy manager service
      • Istio 是servicemesh标准的控制平面和配置管理方案
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbDHRBMq-1618535276101)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210411223020434.png)]
      • Istio v1.6
        • istiod
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffUjXrKM-1618535276102)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210411223202060.png)]
        • 精细化流量治理能力
          • 金丝雀和灰度发布,beta测试,AB测试
          • VirtualService 虚服务
          • DestinationRule 目标规则
          • kiali可视化组件
          • istio接管k8s service服务发现功能
          • ingress, istio-gateway选型
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iWbUW90E-1618535276102)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210411223940027.png)]
          • K8s 核心网略概念和组件
          • 屏蔽pod 动态ip
          • userspace Proxy mode
          • iptables mode提升转发效率
          • IPVS mode支持更大规模集群
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Ps3uol2-1618535276103)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412115858387.png)]
          • nodeport 暴露端口给外网
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BxfwTyL-1618535276107)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120001744.png)]
          • 加上四层Load balance
          • 七层反向代理Ingress,支持多种路由方式,暴露多个服务
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NqmNtqWp-1618535276108)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120229562.png)]
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VP3rIhyQ-1618535276109)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120324304.png)]
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P7okczUu-1618535276109)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120605584.png)]
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0FY1fGJv-1618535276110)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120706881.png)]
          • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1zdrX0kE-1618535276113)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120820681.png)]
          • springcloud istio k8s如何集成
            • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p32AZMO1-1618535276113)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412120929926.png)]
            • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5lRkXhey-1618535276114)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412121158672.png)]
            • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PeAUeYNt-1618535276115)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412121349295.png)]
            • 目前比较前卫的微服务技术中台架构
            • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eOXny4wv-1618535276115)(/Users/sunjc/Library/Application Support/typora-user-images/image-20210412121608255.png)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值