引入分布式系统,会引入一堆技术。如果是一个一个地去做这些技术的话,就像是我们在一个个地撑开网眼,本质上这是使蛮力的做法。我们希望可以找到系统的“纲”,一把就能张开整张网。
点击查看【processon】

一、资源调度

1、核心技术

1.1、状态的维持和拟合

  • 维护:在健 康的实例数变少时,控制器会把不健康的服务给摘除,而又启动几个新的,强行维护健康 的服务实例数。
  • 拟合:从 一个状态拟合到另一个状态,断地拟合,直到达到目 的。

1.2、弹性伸缩和故障迁移

无损发布流程:

  • 底层资源伸缩
  • 服务自动化部署
  • 服务健康检查
  • 服务发现注册
  • 服务流量调

1.3、作业和应用调度

1.4、工作流和编排

2、架构管理


二、数据调度

真正解决数据结点调度的方案应该交由底层分布式存储系统自身实现。只有做到对应用透明,才能实现真正有效和优雅的。而像阿里的用于分库分表的数据库中间件 TDDL 或是别的公司叫什么 DAL之类的这样的中间件都会成为过渡技术。

1、数据可用性

数据副本是分布式系统解决数据丢失异常的唯一手段,而数据副本又会引入新的问题。

  • 要想让数据有高可用性,就得写多份数据。
  • 写多份会引起数据一致性的问题。
  • 数据一致性的问题又会引发性能问题。

2、数据一致性

image.png
迄今为止,在应用层上解决事务问题只有“两阶段提交”这样的方式,而在数据层解决事务问题一般采用Paxos、Raft 或是 NWR 这样的算法和模型来解决。


三、流量调度

流量调度和服务治理是在不同层面上的,不应该混在一起,所以在系统架构上应该把它们分开。

  • 一方面,服务治理是内部系统的事,而流量调度可以是内部的,更是外部接入层的事。
  • 另一方面,服务治理是数据中心的事,而流量调度要做得好,应该是数据中心之外的事,也就是我们常说的边缘计算,是应该在类似于 CDN 上完成的事。

    1、服务治理

    在服务城市地图(监控系统)上,可以看到城市的关键设施(关键服务)以及城市的主干道(核心依赖),同时可以了解到各条道路(链路)上的车辆(请求)的拥堵情况。通过对红绿灯控制(服务治理),可以

  • 狭义服务治理:服务注册发现、服务路由、服务熔断、服务降级、服务保护

  • 广义服务治理:服务关键程度定义、服务依赖管理。

四、应用整体监控