43 Matching Annotations
  1. Dec 2022
  2. Aug 2022
    1. 当远程调用让李四增加金额成功了,由于网络问题远程调用并没有返回,此时本地事务提交失败就回滚了张三减少金额的操作,此时张三和李四的数据就不一致了
    1. 远程的服务在哪里(服务发现)、有多少个(负载均衡)、网络出现分区、超时或者服务出错了怎么办(熔断、隔离、降级)、方法的参数与返回结果如何表示(序列化协议)、如何传输(传输协议)、服务权限如何管理(认证、授权)、如何保证通信安全(网络安全层)、如何令调用不同机器的服务能返回相同的结果(分布式数据一致性)等一系列问题,就需要设计者耗费大量的心思

      分布式设计的核心概念

  3. Jan 2019
    1. 要注意的是,在saga模式中不能保证隔离性,因为没有锁住资源,其他事务依然可以覆盖或者影响当前事务。

      因为saga没有tcc的try阶段,try阶段要做的一件事就是锁住资源

    2. T1, T2, ..., Tj(失败), Tj(重试),..., Tn

      向后恢复:出错则撤销;

      向前恢复:出错则重试。

  4. Nov 2018
    1. 这样启动时不需要和 Zookeeper 通讯获取 Worker ID. 做到了完全的去中心化

      分布式网络内的 workerid 有些情况下是通过一个中心服务器分配的

      如果我们使用 mac 地址,或者其它机器自身唯一属性作为 workerid,则可实现去中心化

    2. snowflake生成的ID整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和workerId作区分),并且效率较高。这个算法单机每秒内理论上最多可以生成1000*(2^12),也就是400W的ID。

      41位毫秒时间戳 10位机器编号 12位毫秒内序列号

      单机 12位毫秒序列号 1 毫秒内最多生成 2^12 = 4096 个

      单机 1 秒内最多生成 409.6w 个