服务治理

为什么需要服务注册

服务注册和发现的基本流程

每个服务节点在启动运行的时候,会向注册中心注册服务,也就是将自己的地址信息(ip,端口,服务名字等)上报给注册中心,注册中心将地址信息保存起来。
一个服务节点如果要调用另外一个服务节点,会直接用该服务的信息到注册中心要对方的地址信息,这就服务发现。拿到地址信息之后,还会在本地缓存一份,保证在注册中心宕机时仍然可以正常调用服务。
为了保证服务地址列表中都是可用服务的地址信息,注册中心通常会通过心跳机制来检测服务是否可用。
image-20231226100852374

分布式下如何进行配置管理

为什么要用配置中心

业务的发展一般会导致服务数量的增加,从而导致程序配置增多。传统的配置文件的方式已经无法满足当前需求,主要原因:

  • 安全性得不到满足
  • 时效性不够
  • 不支持权限控制
  • 不支持配置集中管理

分布式事务解决方案有哪些

数据库事务

ACID:原子性,一致性,隔离性,持久性
只有保证了事物的原子性,隔离性,持久性之后,一致性才能得到保障。也就是说AID是手段,C是目的。AID是数据库的属性,而一致性是应用程序的属性。

数据事务的实现原理

以mysql的innodb引擎为例,使用redo log保障事务的持久性,使用undo log保障事务的原子性。通过锁机制,mvcc等手段保证事务的隔离性

分布式事务

分布式事务的终极目标是保证系统中多个相关联的数据库中的数据的一致性
两理论:CAP,BASE

分布式事务解决方案

2PC,3PC,TCC,本地消息表,MQ事务,Saga等
2PC:

  1. 准备阶段的主要目的是测试RM能否执行本地数据库事务操作(注意:这一步并不会提交事务)
  2. 提交阶段中TM会根据准备阶段中RM的消息来决定是执行事务提交还是回滚操作
  3. 提交阶段之后一定会结束当前的分布式事务
    优点:
  • 实现简单
  • 针对的是数据强一致性

缺点:

  • 同步阻塞
  • 数据不一致
  • 单点问题

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。