consul初识
consul 简介consul 是一个支持多数据中心,加密数据交换,KV存储,健康检查的服务发现组件。官方对比了其他类似的组件,比如知名的ZooKeeper 、etcd、Eureka甚至是刚刚推出不久的Istio。总的来讲consul有如下优势:
支持多数据中心
强一致性
支持kv存储
支持健康检查(可以通过自定义脚本)
支持多节点(raft选举)
支持http(s)方式注册发现服务
支持DNS方式发现服务并提供负载均衡(高级用法)
支持外部服务注册
测试部署容易(仅一个2进制文件 go 编写,支持跨平台),同时支持server和client模式,还支持开发(dev)模式
当然其缺点也是有的,当前我认为的最大的缺点是负载均衡和故障自动转移上。简单来说,一个agent节点如果宕机,那么其上面的 所有服务都会消失,在整个集群中不可见;并且如果要将集群中的服务注销,必须通过注册的时候的agentAPI进行反注册才可以成功注销,否则虽然提示是200(成功),实际上却没有任何效果。
下载和安装官方提供了各平台的二进制文件的下载链接,可以下载对应平台的文件进行安装,这个是最简单的方式。当然也 ...
自动测试工具Gauge
Gauge 是一款轻量级、跨平台自动化测试工具集。规则文件语法可以使用markdown语法编写。另外还可以使用你喜欢的语言来编写业务规则代码比如 go、 java、ruby等语言。Gauge还提供了输出插件,可以将执行结果导出为html或者xml,甚至flash,方便查看。
Quick Start有小伙伴不喜欢翻译官方文档的内容,让我开门见山,直接实战。那我们直接按照步骤来创建一个 JAVA 版的测试项目。前提是已经安装好了 gauge ,html-report 和 JAVA 插件,如果需要安装帮助,请参考下面的安装步骤或者直接参考官网的安装文档。
创建项目命令行执行 gauge init java,执行成功后悔看到下面的日志输出:
1234Downloading java.zip...Copying Gauge template java to current directory ...Successfully initialized the project. Run specifications with "gauge specs/".
这样就创建了一个基于 ...
RESTFul API 错误的设计
不管是WEB还是移动端,如果需要调用Http接口,那么不可避免要处理各种错误,包括客户端参数完整性校验,类型校验,系统错误等。如果一个设计规范的接口错误返回值,不但可以规范调用方统一处理方式,给出更合理的提示,而且后端也有着接口返回规范的作用。这里讨论的其实并不单纯是返回的错误设计,也包括业务上的错误设计。
接口返回设计接口返回需要有http status,错误说明,并且要提供一个完整的错误列表,可以通过简单的错误说明或者错误代码查阅到详细的错误原因。简要错误说明可以只包含简短的文字描述,可以包含错误代码。如果说哪种方式更为合理,我更倾向于错误代码+简要错误说明。如果只有简要错误说明,这个错误描述可能有些描述不合理,如果后端改了说明,那么对应的错误映射也要更改,调用方也要跟着修改。如果只有错误代码,调用方难以一眼看出错误原因,需要查阅错误码,这个比较啰嗦。如果同时提供错误码和简要错误说明,调用方可以通过简要说明快速定位问题,如果要处理错误逻辑,根据错误码表映射即可,这样即使描述改变了,但是错误码是永久不变的,不会影响调用方的处理逻辑。返回的结构如下:
123456HTTP/1.1 20 ...
安装Hbase分布式集群
以下操作都是在hadoop这个用户下
下载最新版hbase,放到/home/hadoop目录下,解压,生成目录 hbase-1.2.4
下载zookeeper,放到 /home/hadoop/zookeeper-3.4.9, 解压生成 zookeeper-3.4.9 目录
编辑conf下hbase-site.xml123456789101112131415161718 <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name& ...
Gnome-Shell插件
状态栏菜单按钮
Dock
状态栏音乐控制
菜单列表
Tab 切换
任务栏
状态栏数字键+大写键状态
番茄工作法插件
系统托盘
状态栏网速
状态栏日历
SpringXD HA 配置
SpringXD官方文档 上说的不是很清楚,而且有些配置(如 配置 hadoop namenode ha )并没有在上面说明,只是简单的说明了怎么配置 namenode ,如果没有ha配置,那么在生产环境中会令人头痛。
XD Admin HA说明在 官方文档 中,有说如何配置,就是通过启动多个admin ,然后通过 zookeeper 管理。Spring XD 要求只有一个主节点来和 Container 交互,例如 Stream 发布等。同时,这些操作都是按顺序处理的。假如只有一个 admin ,那么就存在单点失败的风险,因此,在生产环境中推荐做法是启动 2 个或者多 admin 。注意:在有多个 admin 节点的时候,每个 admin 都可以处理 REST 请求,但是只有一个实例会作为 Leader 处理请求并更新运行时的状态。如果 Leader 宕掉,另一个可用的admin就会成为新的 Leader 来接管任务。当然,Spring XD 的HA不只是他自身要求ha,还需要依赖外部服务,如:zookeeper,MessageBus 等 HA 配置。
配置信息如果要配置 admin ...
sbt源配置
sbt 默认源下载有点慢,我们可以调教它,让它从我们自己配置的源下载。配置源在 .sbt (默认是在用户名下)文件夹中创建 repositories 文件,然后添加如下内容:
1234567891011121314151617181920212223[repositories] local my: http://o8r69qphn.bkt.clouddn.com/ Nexus osc: http://maven.oschina.net/content/groups/public/ Nexus osc thirdparty: http://maven.oschina.net/content/repositories/thirdparty/ central: http://central.maven.org/maven2/[ivy] local my: http://o8r69qphn.bkt.clouddn.com/ Nexus osc: http://maven.oschina.net/content/groups/public/ Nexus osc thi ...
Linux shell 命令
lsof适用于ip4
1lsof -Pnl +M -i4 | grep port
适用于ip6
1lsof -Pnl +M -i6 | grep port
awk杀掉名字一样的java进程
1jps |grep SparkSubmit | awk '{print "kill -9 " $1}' | sh
如果仅仅是打印命令,则后面的管道和sh不需要加,如下
1jps |grep SparkSubmit | awk '{print "kill -9 " $1}'
find删除找到的符合条件的文件(或者目录)
1find . -iname target -exec rm -rf {} \;
sbt-idea-入门及配置
Java 环境配置这个就不多说了,这是前提条件,请自行安装后配置正确,如果不清楚请自行搜索 java 环境变量配置 相关问题。
Scala 配置首先要要配置 scala 环境。从官方地址下载,这里我们使用scala2.10.6版本,所以从这里下载对应的平台版本。Windows请下载 scala-2.10.6.zip ,MacOS和Linux请下载 scala-2.10.6.tgz 。
下载完成后,解压到一个目录,然后配置环境变量 SCALA_HOME ,把scala的解压后的绝对路径配置到 SCALA_HOME ,然后增加 PATH 的配置。以下以 WIndows 和 Linux 举例来说,假如这里解压后得到的文件夹为 scala-2.10.6。
Windows 环境假如 scala-2.10.6 文件夹放在了 C:\目录下,那么新增 SCALA_HOME 的值为 C:\scala-2.10.6 ,然后找到 PATH 这个环境变量, 在已有的值后面添加 ;%SCALA_HOME%\bin (注意前面的分号),重新打开一个新的命令行窗口即可操作。关于windows环境变量的其他说明情自行 ...