手写SpringCLoud项目地址,求个star
github:https://github.com/huangjianguo2000/spring-cloud-lightweight
gitee:https://gitee.com/huangjianguo2000/spring-cloud-lightweigh
一:什么是注册中心
1. 总结服务注册中心
我们可以理解注册中心就是一个HashMap,服务注册上去,需要用的时候去拉取,通过服务名称可以找到对应服务的IP地址和端口,我们就可以发送http请求(或者直接使用UDP/TCP)进行远程服务调用。
要实现一个微服务注册中心十分复杂, 但是大概的原理就是这样
2. 实例图
箭头处的调用可以理解为HTTP请求。事实上我们使用Nacos他也是用的http请求。
二 :注册中心的实现
接收POST请求实现服务的注册。
使用ConcurrentHashMap将注册的服务存起来。
三:服务发现
通过GET请求拉取所有的服务。这里面有服务实例对应的IP地址和端口等信息,客户端可以直接拿到这些信息去请求服务。
四:心跳检测
在上面的注册的时候开启一个定时线程去定时检测实例上一次注册心跳的时间,如果超过最大的时间,就移除该服务。
五:心跳注册
客户端开启一个定时任务定时向服务端发送心跳。 就是一个Http请求。
怎么样,原理是不是很简单, Nacos实现的原理就是这样, 但是他的实现考虑的东西十分的多,也十分复杂,有兴趣可以去查看一下Nacos源码。nacos源码地址