整体架构

在分布式架构中,各模块采用多节点部署,对外提供服务,节点数量和服务地址不断会有变化,因此,对于服务调用者,需要动态获取服务地址。ZooKeeper(http://zookeeper.apache.org/)提供分布式协调服务,服务提供者可以将服务注册至ZooKeeper规定路径中,服务调用者再从ZooKeeper规定路径中动态发现服务,如图所示:
注册发现服务架构

服务注册

Curator(http://curator.apache.org/)进一步封装了ZooKeeper API,提供了许多高级功能,包括服务注册和发现。ZooKeeper使用版本3.4.6,Curator使用版本2.9.1,在pom.xml中增加Curator依赖,如下所示:

使用Curator进行服务注册,代码如下所示:

启动进程,在ZooKeeper中可以查看到注册的服务,在服务“service1”所在路径“/test/service1”下有一个临时节点“ffd66440-e0b0-41a5-b93a-c558c527b3bc”,表示刚启动、注册的服务,如图所示:
1
30秒后进程关闭,在ZooKeeper中可以查看到,注册的服务因是临时节点而被删除,说明服务已不可用,如图所示:
1

服务发现

调用ServiceDiscovery实例的queryForInstances方法可以发现服务,代码如下所示:

启动进程,发现服务,如图所示:
1

基于WebSocket实现微信小程序的消息推送

微信小程序支持通过基于WebSocket进行消息推送,提供了相应的API,例如创建连接示例代码: JavaScript wx.connectSocket({ ...

阅读全文

基于nginx-sticky-module-ng实现会话保持(Sticky Sessions)

对服务进行集群部署,前端进行负载均衡时,需要实现会话保持,对于同一会话的多个请求,通过集群中的一个节点来提供服务。系统的部署结构如图所示,通过Resin...

阅读全文

ActiveMQ基于Zookeeper和LevelDB实现Master/Slave

ActiveMQ的Master/Slave目前支持三种实现方式: 1)Shared File System Master Slave; 2)JDBC Master Slave; 3)Replicated LevelDB Store。 对于第三种方...

阅读全文