【分布式系统】聊聊流量和数据调度

对于分布式系统来说,除了监控层面、以及服务治理层面,还有两个层面流量和数据调度。流量调度其实比较好理解,就是用户请求的流量,如何按照一定的策略算法打到不同的机器上。以及如何实现一个高可用、高性能的流量调度平台。而数据调度,因为目前大多数系统都是无状态的,所以都会将数据存储在第三方存储系统中,而如何实现数据调度,数据高可用、高性能、数据复制等也是一个考虑点。

流量调度主要功能

  • 根据系统运行的情况,可以自动进行流量调度,无序人工干预,提升整个系统的稳定性。
  • 让系统应对突发流量的时候,可以通过弹性扩缩容保证系统可以稳定运行。

目的都是为了提升系统架构的整体稳定性和高可用性。
流量调度系统

  • 服务流控: 服务发现、服务路由、服务降级、服务熔断、服务保护。
  • 流量控制: 负载均衡、流量分配、流控控制、异地灾备(多活)
  • 流量管理 协议转换、请求校验、数据缓存、数据计算等。

流量调度的关键技术

高性能,网关必须是高性能,使用相关高性能语言。
抗流量,使用集群技术,数据在集群之间进行数据共享。使用Paxos、Raft、Gossip技术等。
业务逻辑,API 网关应该只有简单的业务逻辑。
服务化,可以通过Admin API来不停机的管理配置变更。而不是人肉的进行运维配置.conf文件。

状态数据调度

目前其实是倡导无状态服务,所以会把数据存储到第三方中间件中,比如Redis、MySQL、ZK、OSS等。但是这些存储中间件就有状态,所以就成为一个单点的瓶颈。

分布式事务一致性问题

要解决单点的瓶颈,就需要让数据服务可以像无状态的服务在不同的机器上进行调度,涉及数据的复制问题,而数据复制就一定会引入数据一致性,数据一致性就会引发性能问题。
所以无论是数据副本,还是数据分区,都会有一致性问题。而数据副本是分布式系统解决数据丢失异常的唯一手段。
1.想让数据有高可用性、就需要写多分数据
2.写多份数据会导致数据一致性的问题
3.数据一致性的问题会引发性能问题

而解决数据副本一致性问题,我们通常可以采用。主从、主主、一主多从、两阶段和三阶段提交方案、Paxos方案。
在这里插入图片描述
在应用层上解决事务问题,只有“两阶段提交”这样的方式,而在数据层解决事务问题,Paxos 算法则是不二之选。

小结

本篇主要介绍了分布式系统中流量调度和数据调度的相关概念。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59855.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BM5 合并k个已排序的链表 javascript

描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围: 示例1 输入: [{1,2,3},{4,5,6,7}] 返回值: {1,2,3,4,5,6,7}示例2 输入: [{1,2},{1,4,5},{6}] 返回值: {1,1,2,4,5,6}解题思路 利用两个…

Electron学习1 安装环境与第一个程序

Electron学习1 安装环境与第一个程序 一、 Electron 简介二、安装 nvm三、安装nodejs四、安装nrm五、安装electron1. npm 初始化2. 创建 package.json3. 安装electron4. 创建一个页面5. 创建文件main.js6. 创建预加载器文件 preload.js7. 启动程序 六、打包 一、 Electron 简介…

Qt多线程编程

本章介绍Qt多线程编程。 1.方法 Qt多线程编程通常有2种方法: 1)通过继承QThread类,实现run()方法。 2)采用QObject::moveToThread()方法。 方法2是Qt官方推荐的方法,本文介绍第2种。 2.步骤 1)创建Worker类 这里的Worker类就是我们需要…

Nginx安装以及LVS-DR集群搭建

Nginx安装 1.环境准备 yum insatall -y make gcc gcc-c pcre-devel #pcre-devel -- pcre库 #安装openssl-devel yum install -y openssl-devel 2.tar安装包 3.解压软件包并创建软连接 tar -xf nginx-1.22.0.tar.gz -C /usr/local/ ln -s /usr/local/nginx-1.22.0/ /usr/local…

1999-2021年全国各地级市专利申请与获得情况、绿色专利申请与获得情况面板数据

1999-2021年全国各地级市专利申请与获得情况、绿色专利申请与获得情况面板数据 1、时间:2000-2021年 2、来源:国家知识产权局 3、范围:地级市(具体每年地级市数量参看下文图片) 4、指标:申请专利数&…

C语言---数据结构实验---哈夫曼树及哈夫曼编码的算法实现---图的基本操作

文章目录 写在前面哈夫曼树及哈夫曼编码的算法实现实验内容代码实现 图的基本操作实验内容代码实现 写在前面 本篇实验代码非本人写,代码源自外部,经调试解决了部分warning和error后在本地vs上可以正常运行,如有运行失败可换至vs 未来会重构…

【Leetcode】层次遍历||树深度||队列

step by step. 题目: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&am…

sd-roop换脸插件安装

安装步骤 首先看官方教程 sd-webui-roop插件, 如下: 执行 pip install insightface0.7.3在web-ui 界面,插件菜单,从网址安装 https://github.com/s0md3v/sd-webui-roopweb-ui 界面重启如果遇到 NoneType object has no attribu…

成集云 | 畅捷通采购单同步至钉钉 | 解决方案

源系统成集云目标系统 介绍 畅捷通是一家专业的金融科技公司,致力于为投资者提供便捷、高效的金融服务。通过畅捷通T的交易方式,投资者可以更加灵活地进行买卖交易,并且在交易完成后即可获得结算款项,无需等待T1的结算周期。 钉…

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑 现在想对一个接口做性能测试,需要测试它多个线程并发下的调用 1.新建测试计划和线程组 略 2.新建http接口 一个完整的http接口包含请求头和请求,这里就需要两个组件:HTTP request、HT…

信创麒麟操作系统卸载docker,并分别用在线、yum、rpm三种方式安装信创的docker

备注:操作前建议对机器打快照备份,或者备份好数据,如未使用,第一次部署的情况可直接操作 一、卸载DataEase自带的docker # 停止服务 service dataease stop# 删除 docker 可执行文件 rm -f /usr/bin/containerd-shim-runc-v2 r…

c++中const修饰成员函数的问题

问题引入&#xff1a; 看下面这一段代码&#xff1a; class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year <&…