SpringCloud 技能 | 源码查看技巧
Author QiuRiMangCao 秋日芒草
- 日志配置文件:可以通过配置来在不改动配置文件来适应不同的环境
- 配置文件采用git或本地配置方式
- 有配置就读取配置文件中的值,没有就读取默认值
- 将配置中心生产配置都调整过来(configRepo),一般开发都是将配置中心放git上的
- 通过配置中心去读取和查看配置文件
- 用环境变量去运行时切换,而不是通过修改配置文件打包
- 配置文件的加载顺序,比如bootstrap.yml和application.yml
- 授权token的用途
- portainer.io容器中服务管理,删掉服务,手动加服务
- DockerHub的使用
- zipkin的使用
- 使用Feign调用不同的服务
- 降级工厂处理,根据不同服务的异常进行不同业务上的处理
- 乐观锁来控制多线程并发,一次都会更新版本号,每次都去获取版本号看版本号是否已经更新,更新过了就回滚
- 什么时候使用消息队列mq,二个系统数据交互可以通过直接调用rpc,还有就是通过mq,文件系统中间件来处理
- 使用mq可以削峰填谷,保证队列一个一个运行处理
- 接力赛有先后顺序的执行顺序,除了mq还可以用定时器-任务调度
- 通过mq去发送短信
- spring cloud stream不基于厂商的实现,自带集成rabbitmq和kafka
- 在stream通过通道去关联具体的mq或其他组件
- stream激活通道去往对用组件中发送消息,短信系统接受mq的数据,监听定义的通道信息
- 所采用的是什么序列化的,Json格式,消息编解码,发送编码,取出解码
- stream和mq是怎么集成的,通过配置文件,配置steam
- 默认序列化的设置,如编解码器,并设置每一个通道所绑定的mq,设置具体的接入mq的实现
- 实现不同的业务对应不同的mq
- 指定队列发送,并保证幂等性,因为有多个实例,可能存在多个服务消费者消费这一条数据,实现点对点的去消费
- 发完短信后,发布一个订单取消事件,没有目的地,所以只要有人监听通道就能获得事件,主要订阅就可以收到消息,实现群发
- 不同mq对应不同的特色和不同的特性
- 系统间解耦和适配
- spring cloud bus 将消息发送给mq,当配置文件中的配置修改后会通过这个mq去通知到不同的实例和系统
- springEvent 和applicationEvent 事件驱动
- bus就是Event和Mq的集成,就是发送一个事件,如远程刷新,再次发布事件,子类事件监听,收到事件(是否是自己发的),然后往mq中写入这条消息
- bus是一个全局事件,如配置文件更新,但如一般的订单业务就不能用全局事件了
- 可以配置多个mq,每个mq对应不同的业务,实现不同的通道
- springbus和mq是同一个公司的
- 使用了多种协议,所以要了解这些协议的本身才能更好的集成
- 代码阅读和文档理解的方法和思路
分布式调用链式追踪 - 2017-08-13 tony
源码查看技巧
正常情况下:
1.看demo示例 - 能做什么? 手册 demo 结合业务场景的demo
2.分析框架的背景,spring的周边-ioc aop - 方法调用 获取token 大胆猜测和分析
3.打开debug日子级别,成熟的框架,日志会打印很多。看日志的习惯,包含重要的信息,根据要查看包名去设置日志级别和分析,日志太大也无法查看并分析
4.debug代码调式
特殊方式:
5.想方法去让代码抛一个异常,并抛出堆栈信息,通过分析堆栈异常来分析代码逻辑,或者打断点看堆栈信息(这方法是知道入口的情况才使用)
6.找入口,硬啃源码(配置文件,http入口,注解入口)