一、注册中心基本原理
服务启动时,调用注册中心的注册接口,也就是insert into Register (1,order_name…);
1)服务内部维护了三个TimeTask(定时任务),其中TimeTask1会通过心跳接口定时发送心跳,并实时更新注册表中last_heartbeat字段信息(会做定时清理)
Update 表 set status=”down” where 当前时间-last_heatbeat>15.
2)服务通过TimeTask2会定时拉取商品服务实例ip信息存储到客户端缓存,通过Ribbon从客户端组件中拉取ip进行调用。
3)TimeTask3会清理没有心跳的实例信息
4)注册中心还要有服务stop的注销接口,注销接口的逻辑就是delete 一个字段。
二、微服务适用的场景
1、大型复杂的项目
2、一天一个版本
3、并发高(考虑扩缩容)
三、各个开源框架对应的具体内容
Springboot是用来快速开发微服务的web框架
springCloud 是微服务架构的工具集
springCloud netflix: 国外的一个开发微服务的工具集,是springcloud子项目
springCloud alibaba:阿里开源的符合中国企业的一套微服务架构解决方案,也是springcloud的子项目
Alibab:
分布式配置中心:Nacos
服务注册发现:Nacos
服务网关路由:SpringCloud gateWay
服务调用:Ribbon,feign
客户端负载均衡:Ribbon
断路器 限流:sentinel
分布式消息:Rabbitmq
四、Nacos的领域模型
1、NameSpace: 环境隔离,dev,prod
2、Group: 微服务分组 不同组之间不能调用 订单和支付 属于一个组 仓储属于一个组 ,不同组之间不能相互调用
如果调用了 会在前端有一个友好的提示 不是报错
3、Service服务: 设置后可通过代码实现避免跨集群调用,优先选择附近集群调用(Cluster Name:BJ /NJ)
底层存储介质是Map。去匹配 去找是否存在你访问的实例,进行筛选
4、元数据:
Order-center product-centerv1 v1V2 v2
让v1调用v1 让v2调用v2
金丝雀发布 不懂怎么太懂,大致意思是服务上新版本了 需要进行测试吧,但是你不能一股脑的让所有机器上的服务都是新版本,所以可以让几台机器率先是新版本,进行测试,同时测试的时候要避免v2版本的机器调服务时调到v1版本的机器上了。这里元数据可以为我们做隔离。