• 总结:学习 + 工作 (2020.03)


    1、代码事务中对数据库操作的顺序

      最好是查询、删除、新增操作放在代码中事务的开始,将修改放在事务将要结束的地方。

      因为修改涉及到对数据的加锁(间隙锁),所以为了尽量短时间的锁住数据,修改应该放在事务即将结束的位置。

    2、创建对象的相关问题

      之前是看了 JVM 课程,认为创建对象可以写为 User user = null; 然后在代码逻辑里可以给 user 赋值。但是会出现一个问题,如果该 user 未赋值,而直接对该对象的字段赋值,就会报空指针异常。(实际写代码遇到,try catch 中,try 会返回一个 user 实例对象,catch 里直接捕获 service 的异常,没有 user 对象,并且 user.setName()类似操作,就会报空指针异常 )

      所以以后创建对象,还是写 User user = new User(); 不写 User user = null;

    重构学习知识点

    3、微服务部署的

      以 nacos 作为注册/配置中心,相同的实例在不同的 IP 注册到 nacos 中,就是多个实例。例如两台主机上都有同一个 User 项目注册到一个 nacos 中心上,则有两个 User 实例。ribbon 负载均衡在微服务中的应用,默认都是以轮询方式访问。

      如果 nacos 注册/配置中心有多个,则形成了微服务的集群。

    4、微服务的拆分

      将公共功能部分拆分出来,这叫横向拆分,可以让下游其他微服务共用。

      按功能的聚合度拆分,叫纵向拆分,这样从页面展示到数据库数据交互都在同一个微服务中。

      微服务下的问题在单体情况下也有,但是在微服务分布式情况下就尤为突出。

      接口调用就需要服务发现与注册,服务调用;

      接口错误就需要降级和熔断处理;

      接口性能就需要扩容;

      接口调用情况就需要监控;

      问题排查就需要全链路追踪。

    5、微服务的组件

      注册中心:

        微服务的服务者提供心跳给注册中心是用 http 请求来告知注册中心。

        如果有注册提供者节点新增或者删除,注册中心探知到,就要推送到服务消费者,然后刷新缓存在本地的注册列表。

        测试节点环境和开发节点环境,在部署的时候可以直接动态修改指定的环境。例如代码里虽然指向 dev 环境,但是部署时可以指定 test 环境。该操作是通过 springboot 的 main 方法的 args 参数来动态改变。

        注册中心一般是集群部署,那么就涉及到了一致性。所以注册中心自身还会有一致性的操作。

      RPC 调用:

        要考虑支持数据结构类型的丰富度、跨语言支持、性能与可读性(压缩的数据需要的带宽更小,传输速度更快)。

      监控:

        请求量和响应时间是反应接口健康的重要指标。

      治理手段:

        实现负载均衡是 ribbon 做的事,nacos 只是动态配置算法,作为动态参数传入到 ribbon 的算法设置中。

    6、微服务的使用基础点

      在实际的项目中,某个服务调用可能超市,则我们需要使用 重试 来保证调用的成功率。但是这里也涉及到一个 幂等性。(幂等性可以使用悲观锁、乐观锁,数据库字段唯一索引等实现)

      注册中心需要考虑到的两个点:高可用(集群、多IDC部署)、一致性

     

  • 相关阅读:
    宾得镜头资料
    先感动自己才能感动别人
    关于单反相机中的APSC
    K10D和凤凰镜头
    Vista的新快捷键
    微软雅黑字体“演”字变“漠”字的bug
    Windows XP无线零配置服务
    剑走偏锋,用XP的启动管理来搞定Vista、XP双系统
    BCB中的目录选择对话框的实现
    MagicAjax 使用
  • 原文地址:https://www.cnblogs.com/AlmostWasteTime/p/12598096.html
Copyright © 2020-2023  润新知