【青训营】2月2日总结

67 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第16天 写了半个月的go了,学会儿java

谷粒商城技术选型:

结合SpringCloud Alibaba选择的技术搭配方案及作用:

  1. SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
  2. SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
  3. SpringCloud - Ribbon:负载均衡
  4. SpringCloud - Feign:声明式HTTP客户端(调用远程服务)
  5. SpringCloud Alibaba - Sentinel:服务容错(限流、降级、熔断)
  6. SpringCloud - Gateway:API 网关(webflux 编程模式)
  7. SpringCloud - Sleuth:调用链监控
  8. SpringCloud Alibaba - Seata:原 Fescar,即分布式事务解决方案

整合MyBatis-plus

  1. 导入依赖
  2. 配置
    1. 配置数据源
      1. 导入数据库驱动
      2. 在application.yml配置数据源相关信息
    2. 配置MyBatis-Plus
      1. 使用@MapperScan
      2. 指定sql映射文件位置

远程调用的步骤

  1. 引入open-feign
  2. 编写一个接口,告诉springCloud这个接口需要调用远程服务
    1. 声明接口的每一个方法都是调用哪个远程服务的哪个请求
  3. 开启远程调用功能@EnableFeignClients(basePackages = "接口所在的包名")

拜占庭问题

口头协议:

  1. 将军-副官模型,将军是第一个提出建议的节点,其余为副官
    1. 忠诚的副官会遵守同一个命令
    2. 如果将军是忠诚的,所有忠诚的副官必须执行他的命令

书面协议: 之所以会出现在口头传达中的那些错误是因为一些叛徒可以说谎,这里通过签名就是为了防止说谎。

TCP目的是数据传输,拜占庭问题目的是达成共识 TCP是三次握手加超时重试解决问题,三次握手加超时重试正是拜占庭将军问题中两将军的工程解法,但并不是理论解法 拜占庭问题没有考虑网络延迟,1999年新提出的PBFT拜占庭容错算法解决了在有网络延迟下的网络一致性和准确性问题