服务治理与流量调度的区别是什么?流量调度主要功能有哪些?流量调度的关键技术有哪些?状态数据调度是指什么?

打卡Day5:今天学习了《26|分布式系统关键技术:流量与数据调度》,我的收获如下:

服务治理与流量调度的区别

  • 服务治理主内,是数据中心的事
  • 流量调度主内也主外,是数据中心之外的事,也就是边缘计算如CDN。

流量调度主要功能

  • 服务流控。服务的发现、路由、降级、熔断、保护。
  • 流量控制。负载均衡、流量分配、异地灾备或多活。
  • 流量管理。协议转换、请求校验、数据缓存、数据计算,这些通常由API Gateway搞定。

流量调度的关键技术

  • 高性能。使用高性能语言。
  • 扛流量。集群、通讯协议如Paxos、Raft、Gossip。
  • 业务逻辑。可注入不同语言的简单逻辑如AWS的Lambda。
  • 服务化。提供Admin API管理配置变更。

状态数据调度

一般会把有状态的服务数据存储到中间件上,比如Redis、MySQL、ZooKeeper、或是NFS、Ceph等文件系统。

数据副本是目前分布式系统解决数据丢失异常的唯一手段。让数据高可用就得写多份的,写多份就会引起一致性问题,解决一致性又会引发性能问题。

解决数据副本间的一致性问题的技术方案

  • Master-Slave
  • Master-Master
  • 两阶段和三阶段提交
  • Paxos

解决事务问题,在应用层上首选两阶段提交、在数据层上首选Paxos。

数据节点的分布式方案

状态数据调度由分布式存储系统来解决会更有效和优雅,分库分表的数据库中间件都会成为过渡技术。

因为数据存储的Scheme不同,导致有各式各样的分布式存储系统:文件对象、关系型数据库、NoSQL、时序数据、搜索数据、队列数据。

在Iaas层解决的方法:廉价的开源产品如NFS、Ceph、TiDB、CockroachDB、ElasticSearch、InfluxDB、MySQL Cluster、Redis Cluster;云计算厂商方案;更为昂贵的商业网络存储方案。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/1609