springCloud
服务注册中心【Eureka】
- 启动就注册自己
- 服务注册[将自己注册到注册中心]
- 服务发现[拉取注册中心表]
流程
- 注册[清空ReadWrite缓存]
- 30S拉取数据[拉取ReadOnly数据],如果ReadWrite是空的则会将注册表的数据同步到ReadWrite和ReadOnly
- ReadWrite缓存
- ReadOnly缓存
- 定时任务将ReadWrite缓存中的数据放入ReadOnly
- 30S定时任务检测心跳,如果心跳不正常则会注册表中删除并且ReadWrite清空
为什么需要多级缓存
- 提高并发,减少加锁操作
- 缺陷,服务发现很慢,服务失效很慢[可以改配置来优化]
服务调用【feign、ribbon】
- 生成动态代理
- 使用Ribbo从本地注册表选择对应机器
- 通过http调用远程框架
网关【zuul】
- 配置不同的请求路径和服务的关系
链路追踪
Dubbo
10层架构
网络通信原理
Dubbo采用netty/mina来实现网络通信
- 服务提供者通过ServerSocketChannel监听端口通过轮询来判断是否有连接建立
- 服