服务治理与流量调度的区别是什么?流量调度主要功能有哪些?流量调度的关键技术有哪些?状态数据调度是指什么?
打卡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;云计算厂商方案;更为昂贵的商业网络存储方案。