在实际的生产环境中我们一般都是集群环境部署的,同一个程序我们会部署在相同的几台服务器中,这时我们可以通过负载均衡服务器去调度,但是我们并不能很快速的获知哪台服务器挂掉了,这时我们就可以使用zookeeper来解决这个问题. zookeeper的动态感知   动态感知其实利用的就是zookeeper的watch功能,我们先来看下常规的负载均衡服务器的结构 再来看下我们用zookeeper实现的结构 文字描述: 1.感知上线   当服务器启动的时候通过程序知道后会同时在zookeeper的ser…
1. ZK的监控机制 1.1 监听数据的变化  (1)监听一次 public class ChangeDataWacher { public static void main(String[] args) throws Exception { // 连接并获取zk客户端的对象 ZooKeeper zk = new ZooKeeper("feng01:2181,feng02:2181,feng03:2181", 2000, null); zk.getData("/user&qu…
一.在具体实现之前,先来了解一下Zookeeper的监听器的原理: 图中Main()线程作为客户端,当在主线程中创建Zookeeper客户端时,会默认创建两个子线程:Listener和connect,connect线程负责将某一操作对应的的监听事件发送给Zookeeper服务集群.Zookeeper收到监听事件后会在该操作对应的监听器列表中注册该事件. 比如图中的获取节点“/”的子节点getChildren这一事件,并设置了true,表示监听此事件.那么Zookeeper就会在监听器列表中注册该…
1.Zookeeper 应用案例(上下线动态感知) 8.1 案例1--服务器上下线动态感知 8.1.1 需求描述 某分布式系统中,主节点可以有多台,可以动态上下线 任意一台客户端都能实时感知到主节点服务器的上下线 8.1.2 设计思路 8.1.3 代码开发 1.客户端实现 package cn.com.toto.zkonlineoroffline; import java.util.ArrayList; import java.util.List; import org.apache.zooke…
需求 某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线. 需求分析 具体实现 先在集群上创建/servers节点 create /servers "servers" 一些依赖 pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&q…
首先什么是观察者模式,可以看看我之前的设计模式的文章 https://www.cnblogs.com/cutter-point/p/5249780.html 确定一下,要有观察者,要有被观察者,然后要被观察者触发事件,事件发生之后,观察者触发相应的事件发生 了解了基本概念,我们来看看zookeeper是什么情况 zookeeper也是类似观察者一样,我们先把本机信息注册进入服务器,然后设置一个watch方法,这个在zookeeper节点发生变化的时候通知对应的客户端,触发对应的方法 这里先注册服…
网上关于nginx的介绍有很多,这里讲述的是上游服务(如下图的Java1服务)在没有"网关"的情况下,如何通过nginx做到动态上下线. 传统的做法是,手动修改nginx的upstream文件,将Java1的配置注释或者标记为down,然后reload nginx生效.当然可以做成脚本自动化修改,然而对于一个繁忙的nginx来说,贸然reload轻则响应缓慢,重则雪崩丢失流量. 那么怎样做到nginx动态加载upstream配置呢?网上大体有3种方案: 通过Lua脚本结合nginx,也…
-------------------------------------------------------------------------------------- [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://www.cnblogs.com/sdksdk0/p/5585192.html 作者: 朱培              ID:sdksdk0 ----------------------------------------------------------…
简介 今天主要讨论一下,对于分布式服务,站点如何平滑的上下线问题. 分布式服务 在分布式服务下,我们会用nginx做负载均衡, 业务站点访问某服务站点的时候, 统一走nginx, 然后nginx根据一定的轮询策略,将请求路由到后端一台指定的服务器上.    这样的架构是没有问题的, 但是我们这里考虑几个问题,  1. 网站上下线问题:我们网站平时更新站点的时候是直接覆盖文件,然后重启, 那这样会造成一些请求中断,如果是非核心逻辑那还好, 如果是核心逻辑,那请求中断,会影响一些数据一致性,比如资金…
使用C#动态生成Word文档/Excel文档的程序功能调试.测试通过后,部署到服务器上,不能正常使用的问题解决方案: 原因: 可能asp.net程序或iis访问excel组件时权限不够(Ps:System.ComponentModel.Win32Exception: 拒绝访问) 解决方案: .web.config添加计算机用户名.密码: <system.web> <identity impersonate="true" userName="administr…