Zookeeper分布式服务框架
Zookeeper是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要用于解决分布式应用中经常遇到的一些数据管理问题,比如配置管理、命名服务、分布式锁、集群管理等。刚接触zookeeper的时候有些云里雾里,不知从哪里入手好,其实简单的说zookeeper就是 文件系统 + 监听通知机制。 系统原理文件系统在zookeeper中维护了类似Unix系统的树形文件节点,可以往这个节点中存储或者获取数据,我们将这些节点称为znode,每个znode默认能够存储1Mb的数据,znode有四种不同的类型。 PERSISTENT 持久化目录节点 所谓持久节点就是指节点创建后,除非进行删除操作就一直存在,不会因创建该节点的客户端会话失效或者zookeeper服务停止而消失 PERSISTENT_SEQUENTIAL 持久化顺序编号节点 和持久节点基本特性一致,额外的特点是,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。在创建子节点的过程中,zookeeper会自动给子节点的名称后面增加一个数字后缀。例如创建名为”test”的子节点,zooke...
ZooKeeper服务注册发现
在分布式架构中,系统经常被暴漏为服务供其他系统调用,为使系统间能够相互通信,需要有一个协调系统来管理这些服务,这就是服务注册与服务发现,这个协调者也被称之为注册中心。下面基于zookeeper来实现一个简单的服务注册与发现功能 通过Maven引入需要的jar包 12345<dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.11</version></dependency> 创建服务注册类 1234567891011121314151617181920212223242526272829303132package com.wrxiang.zk.util;import org.I0Itec.zkclient.ZkClient;public class ZkServiceRegistry { private ZkClient zkClient; ...
Zookeeper统一配置管理
为什么需要统一配置?我们在开发系统时,一般会将一些信息添加到配置文件中,比如数据库信息、日志等,如果需要更改也是修改配置文件然后再发布到生产中,这种方式在集群的环境下就会显得很麻烦。那么有什么解决方法呢? 将公共配置抽取出来 提供统一的配置入口对公共配置进行修改 修改后的内容能够同步到各集群系统中 Zookeeper方案这里我们采取zookeeper实现统一配置管理,配置信息存放在zookeeper的节点中,一旦配置信息发生改变,zk会通知监听该节点的客户端系统,客户端系统获取最新的配置信息,然后进行配置信息的重新载入。下面基于zookeeper实现了一个粗略的统一配置管理通过Maven引入zkclient.jar 12345<dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.11</version></dependency> 创建配置信息实体 Conf...
linux主机通过ssh登录windows服务器启动tomcat所踩的坑
情景描述公司的Jenkins服务安装在linux系统上,但是很多应用服务器都是windows系统,那么在jenkisn上编译生成的war包如何传输到windows服务器上并且进行tomcat服务的重启呢?相对于linux的应用服务器,使用jenkins在windows上做自动发布还是遇到了一些不好解决的问题,windows系统在运维上还是有许多不便的(默默吐槽一句)。 发布步骤类比linux的应用服务器,首选是通过ssh远程登录的方式进行,这样的话jenkins的配置都不需要怎么更改,简单的发布步骤如下: jenkins中使用MAVEN编译打包,生成所需的war包 scp将war包传输到应用服务器 ssh远程执行应用服务器的部署重启脚本 发布完成 windows默认是不支持ssh服务的,这里我采用的是微软官方的解决方案OpenSSH,安装步骤可以参考:Windows安装OpenSSH服务 遇到的问题jenkisn远程调用应用服务器上的部署脚本后,tomcat服务没有启动,但是在应用服务器上手动运行脚本是能够完成项目的部署以及重启的,通过调试发现远程调用bat脚本确实将tomc...
VS Code快捷键指南
打开工程:code + 路径 打开指定文件:ctrl + p 打开/关闭终端:ctrl + ` (1左边的按键) 跳转到行:ctrl + g 按单词移动光标:ctrl + 左右 选中单词:ctrl + d (重复按可以多选) 选中行:ctrl + l (重复按会同时选择下一行) 移动行:alt + 上下 格式化代码:ctrl + shift + f 跳转到定义:f12 查看当前文件符号:ctrl + shift + o 剪切/复制当前行:ctrl + x / ctrl + c (什么都不选的时候) 切换tab:alt+数字 顺序切换tab:ctrl + pageup / pagedown 关闭文件:ctrl+w 关闭所有文件:ctrl + k w (ctrl不松手) ctrl+b 打开主侧边栏 ctrl+shift+e 打开文件管理器 ctrl+0 焦点聚焦到主侧边栏 ctrl+1 焦点聚焦到代码编辑器 ctrl+shift+space 重新出现函数信息提示 ctrl+\ 添加分屏 ctrl + d 选中当前内容,连续快捷键会逐个选...
Markdown LaTeX公式指南
在MarkDown文件中上写公式是比较头疼的事情。好在Markdown支持LaTeX公式的输入,在一定程度上缓解了输入的麻烦。 基础部分公式标记在Markdown中,有两种输入公式的方法:一是行内公式(inline),用一对美元符号$包裹。二是整行公式(displayed),用一对紧挨的两个美元符号$$包裹。 这是一个行内公式 $E=mc^2$,写法是:$E=mc^2$。这是一个整行公式:$$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$写法是 1$$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$ 希腊字母 名称 大写 Tex 小写 Tex alpha $A$ A $\alpha$ \alpha beta $B$ B $\beta$ \beta gamma $\Gamma$ \Gamma $\gamma$ \gamma delta $\Delta$ \Delta $\delta...
项目依赖库的规范探索
二方库 名称 说明 一方库 指项目内的各个模块,一般不会被项目组外所使用,通常使用的是最新版本 二方库 指公司内部公共库,会被公司的各个项目组所使用,而且每个项目组所依赖的版本不一定一致,需要严格管理版本 三方库 一般代指公司外部的公共库,由公司外的开发团队进行版本维护,版本可控性难以控制,公司引入的时候要进行严格的版本验证 在实际项目中一个订单系统最简单的分层通常会是下面的结构 order-server中是订单系统的业务代码,而order-api中会定义一些接口和入参和返回值,order-api会被同项目的其他系统所依赖,也有可能会被其他项目组的系统所依赖,所以一方库和二方库的界限一般比较模糊,下面主要探索api项目的结构规范。 为避免二方库的依赖冲突问题,二方库的发布应该遵循以下原则 精简可控原则,移除一切不必要的API和依赖,只包含Service API,必要的领域模型对象,常量、枚举等,如果依赖其他的二方库或者三方库,尽量的使用provided引入,让使用者选择具体使用的版本号。 稳定可追溯原则,每个版本的变化应该被记录,除非用户主动升级版本,否...
IntelliJ IDEA激活教程
下载工具包工具包下载地址 重要说明: 1、工具包下载后,放到本地合适的位置,存放路径不要有汉字和空格,否则可能会导致激活失败 2、工具下载后是zip格式,需要解压,然后按照下面步骤进行 3、工具安装后,不要移动或者删除工具包,否则后续IDEA打开会出现闪退,或提示找不到Jar文件 激活工具包解压后,目录结构: 破解激活工具包安装执行工具包解压后scripts目录下的脚本文件install-all-users.vbs 或者 install-current-user.vbs 脚本进行脚本文件的安装,脚本 install-all-users.vbs 和 install-current-user.vbs 的区别,只在于环境变量是为系统变量还是用户变量。 最好使用管理员权限执行,如果需要卸载只需要执行相应的卸载脚本即可 当看到如上图中提示 Done 时,表示工具安装配置完成。 检查确认:执行命令 echo %IDEA_VM_OPTIONS%,若指向 jetbra/jetbra/vmoptions/idea.vmoptions 则表示工具包安装正确。若指向不是这个,则很可能是旧有的破...
VMware 虚拟机设置
镜像下载华为云镜像下载CentOS镜像,镜像使用 CentOS-7-x86_64-Minimal-2207-02.iso镜像下载 VMware创建虚拟机版本:VMware® Workstation 16 Pro 步骤忽略,选中镜像,一直点击下一步就可以 设置固定IP虚拟机网络连接方式 配置虚拟机的NAT模式具体地址参数 选择VMnet8–取消勾选使用本地DHCP–设置子网IP–网关IP设置(记住此处设置,后面要用到),如下图 说明:修改子网IP设置,实现自由设置固定IP,IP网段最后一位0-255,子网IP占用一位,网关IP占用一位,剩余的都可以自由分配 若你想设置固定IP为192.168.2.2-255,比如192.168.2.2,则子网IP为192.168.2.0; 若你想设置固定IP为192.168.1.2-255,比如192.168.1.2,则子网IP为192.168.1.0; 也就是说,你想配置成哪个网段,IP地址最后那位为0即可。 记录一下上面的网关地址,虚拟机中设置固定IP时需要用到,这里的网关IP也可以自行设置,只要网段一致即可。 配置电脑具体VMnet8...






