今天,从源代码的角度来看,请查看NACOS的功能,如果服务注册,服务呼叫,负载平衡和心跳检测。首先,让我们访问Github以拉动代码,https://github.com/阿里巴巴/NACOS。打开后,我们从注册实例开始作为入口。注册实例的接口在API模块中:
单击进口,发现里面有不同的方法。我们以第一个为例,
他首先初始化一个实例对象。分配值后,调用registerInstance()方法,通过clientproxy.registerservice()注册实例,然后继续跟踪以跟踪。
此NamingClientProxy()接口(根据实现类的名称,我们看到他使用战略模式来处理HTTP或RPC请求)中有多个实现类。如果处理:
注意我圈子的地方。这是心跳机制的开始。他首先创建了一个beaninfo对象,然后将其交给了beatreactor.adddbeaninfo()。这个beatreacter看起来像一个容器,所以让我们看一下他如何处理它。
该课程具有正时任务线程池。看到这一点,我们可能猜测他的心跳检测机制应该通过定时任务线程池处理。
果然,我没想到,首先创建beattask对象,然后将其移交给定时任务线程池以定期处理此实例信息,但是他的定时任务只能执行一次。他如何继续发现?看到他如何循环:
通过此代码,我们可以清楚地看到他反复执行由BeanTask的Run()方法重复执行的定时任务。然后我们返回继续注册示例
包装请求参数,调用API
最后,发送注册实例的HTTP请求,并完成了注册实例的完整链接。
当我们看到在获得示例时处理了什么NACOS
尝试首先从ServiceInfoholder获取服务信息。如果未获得,请通过客户端致电API获取所有实例列表
但是,只要我想要一个,他应该回到我身边?负载平衡的关键,
最后,从参考文献中获取一个实例,他的负载平衡有多种策略。旋转查询,重量,ip_hash,fair等。如果您有兴趣,您可以通过如何完成如何实现它你自己。
最后,如果理解有问题,欢迎每个人纠正更正并共同取得进步。我希望今天的文章对朋友有所帮助。
