美文网首页框架类Java互联网技术交流
微服务系统架构系列2——服务注册

微服务系统架构系列2——服务注册

作者: 窝牛狂奔 | 来源:发表于2017-05-15 14:32 被阅读162次

上文,我们讲到了微服务框架应该实现的功能,并且列出了主要的1、2、3、4点。因为第1点是根据定义好的schema生成不用语言的client和service,我们暂时是可以替代的。所以,我们首先从第2点也就是服务的注册开始。


一、前言

服务的注册,毫无疑问是服务启动的时候,将服务注册到一个地方,然后其他人就能发现这个服务。

注册的内容:服务的名字,服务的地址(包括端口)。其中,服务的名字我们可以作为主键来查找。

至于服务注册的时机,毋庸置疑最好是web容器启动的时候。

唯一不同的可能就是服务注册的方式。

比如,我想到的方案就有如下两个:

1、有一个服务注册中心,服务启动的时候,将自己的注册信息发过去,同时服务注册中心给每台机器的每个服务开一个长连接,定期检测心跳。服务挂了就从注册中心移除,恢复了就加入到注册中心。

2、直接用zookeeper的znode进行管理。服务名称存为路径,服务的地址存为内容。

其实两个方案本质都一样:服务挂了就移除,服务活了就新增,而且要保证近乎实时。

《轻量级微服务架构》这本书里面讲的是方法2, 我们也用方法2来实践一遍。

二、服务准备

我用的是IDEA14.1.4+jdk1.7。

首先是zookeeper集群的搭建。网上教程很多,我就不重复写了。

学习的时候,可以根据这个博客,搭了个windows的伪集群。

http://blog.csdn.net/morning99/article/details/40426133

然后我建一个springboot的HelloService服务。

首先是Application.java

然后是HelloController.java

启动服务,通过8080端口访问。

启动参数:-Dserver.port=8080

http://localhost:8080/hello

启动服务,通过8082端口访问。

启动参数:-Dserver.port=8082

http://localhost:8082/hello

三、定义服务注册接口

ServiceRegistry.java

四、使用ZooKeeper实现服务注册

在实现服务之前 , 我们需要准备一些配置

在资源文件里新建application.properties

文件内容如下:

server.address=127.0.0.1

server.port=8080

registry.servers=127.0.0.1:2181

然后我们实现下ServiceRegistry接口ServiceRegistryImpl.java

RegisteryConfig.java

最后是WebListener.java


五、使用ZooKeeper客户端查看结果

首先启动zookeeper服务端。

修改application.properties文件里的

server.port=8080

用8080端口启动一次springboot

修改application.properties文件里的

server.port=8082

用8082端口启动一次springboot

最后 , 我们用命令zkCli.cmd -server 127.0.0.1:2181看下zookeeper的情况.

我们再来观察一下节点的内容:

然后, 我们关掉用8082端口开启的springboot。

再次查看的时候,发现只有一个节点了

然后,再次开启8082端口的springboot。

又出来了两个节点

到这里 , 我们就基本实现了微服务的注册。

下一节,我们将实现微服务的node.js网关

相关文章

网友评论

    本文标题:微服务系统架构系列2——服务注册

    本文链接:https://www.haomeiwen.com/subject/verhxxtx.html