jwt
header, 一个例子是:
非常简单,typ顾名思义就是type的意思,例如上面这里就指明是JWT的类型。alg顾名思义是algorithm的意思,指代一个加密算法,例如上面指代HS256(HMAC-SHA256),这个算法会在生成第三部分signature的时候用到。
payload,一个例子是:
这部分的本质是用户数据,怎么理解呢,就是JWT的目的是认证身份来源,那么你是不是得自报家门我是谁呢?所以总得往里塞点跟用户相关的信息吧,例如这里就是userId
signature,一个例子是:
signature顾名思义就是签名,签名一般就是用一些算法生成一个能够认证身份的字符串,具体算法就是上面表示的,也比较简单,不赘述,唯一说明的一点是上面hash方法用到了一个secret,这个东西需要application server和authentication server双方都知道,相当于约好了同一把验证的钥匙,最终才好做认证。
再次强调一点,别看上面做了那么多hash,其实目的不在加密保护数据,而是为了认证来源,认证来源,认证来源。JWT不保证数据不泄露,因为JWT的设计目的就不是数据加密和保护。
权限
两阶段提交
一 分布式中的CAP怎么理解
1.1 CAP定义
一个通俗简单的例子: https://baijiahao.baidu.com/s?id=1650890231453975345&wfr=spider&for=pc
C(Consistency)一致性 指的是所有节点在同一时间的数据完全一致
A(Availability)可用性 指服务一直可用,而且是正常响应时间
P(Partition Tolerance)分区容忍性 指在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务
CAP理论告诉我们,分布式系统不可能同时满足以下三种。最多只能同时满足其中的两项,因为P是必须的, 因此往往选择就在CP或者AP中
1.2 CAP组合
CA: 放弃分区容错性。非分布式架构,比如关系数据库,因为没有分区
AP: 放弃强一致性。追求最终一致性,比如Eureka. 场景类似延时转账,可以接受两小时后转账
CP: 放弃可用性。zk在leader宕机选举期间不提供服务。场景类似立即转账, 必须一进一出
结论:在分布式系统中AP运用的最多,因为他放弃的是强一致性,追求的是最终一致性,性价比最高
二阶段提交(Two-phaseCommit)
https://blog.csdn.net/lengxiao1993/article/details/88290514
3.2.1 流程
二阶段提交的算法思路可以概括为: 参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是中止操作。
二阶段是指: 第一阶段 - 请求阶段(表决阶段) 第二阶段 - 提交阶段(执行阶段)
(1) 请求阶段(表决):
事务协调者通知每个参与者准备提交或取消事务,然后进入表决过程,参与者要么在本地执行事务,写本地的redo和undo日志,但不提交,到达一种"万事俱备,只欠东风"的状态。请求阶段,参与者将告知协调者自己的决策: 同意(事务参与者本地作业执行成功)或取消(本地作业执行故障)
(2) 提交阶段(执行):
在该阶段,写调整将基于第一个阶段的投票结果进行决策: 提交或取消
当且仅当所有的参与者同意提交事务,协调者才通知所有的参与者提交事务,否则协调者将通知所有的参与者取消事务
参与者在接收到协调者发来的消息后将执行响应的操作
seata分布式事务