- 浏览: 4402809 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
因为要面对高并发PUSH需求,考虑将其按队列方式实现,最终选型Kestrel。
至于Kestrel:
可支持的标准协议:
扩展协议:
经测试,支持DELETE协议!
PS:XMemcached-1.2及其以上版本已对其协议完全支持,注意使用KestrelCommandFactory。
当然,Redis也可以做消息队列,但Redis目前只是Master-Slave模式,还不能像Kestrel做到Cluster。所以,如果只是考虑队列服务,还是纯粹一点,直接用Kestrel,配合XMemcached作为客户端,保持一致性哈希,用起来更放心。因为,高可用嘛!呵呵!
想要消化Kestrel,需要做些准备工作:
本想Git下来,逐个编译一把,但始终未果,只好找兄弟copy一份来运行!
我会在附件中,追加相应的配置文件,以及kestrel-2.1.5.jar。
如果你的Server还没有安装Daemon,参考如下操作:
一、Kestrel目录结构
Kestrel目录结构如下:
Kestrel
|-kestrel-1.2.7-SNAPSHOT.jar
|-kestrel-1.2.7-SNAPSHOT.pom
|-config
|-development.conf
|-production.conf
|-libs
|-scripts
|-devel.sh
|-kestrel.sh
|-qdump.sh
libs中的jar列表:
由于附件体积限制,可能需要另行下载(Maven是个好帮手! )
我们只需要关注以下几个文件:
适用于开发环境:
适用于生产环境:
二、Kestrel脚本&配置说明
这里将Kestrel安装至/opt/servers/kestrel路径下,你可能需要对应修改路径配置。
先说用于开发环境的脚本&配置文件:
devel.sh
#!/bin/bash
APP_NAME="kestrel"
#应用路径
APP_PATH="/opt/servers/kestrel"
#版本
VERSION="1.2.7-SNAPSHOT"
echo "Starting kestrel in development mode..."
java -server -Xmx1024m -Dstage=development -jar $APP_PATH/$APP_NAME-$VERSION.jar
注意修改APP_PATH!
development.conf
# kestrel config for a production system
# where to listen for connections:
port = 22133
host = "0.0.0.0"
log {
#日志路径
filename = "/var/logs/kestrel_development.log"
roll = "daily"
level = "info"
}
queue_path = "/var/spool/kestrel"
做一个简单的测试:
进行如下操作:
telnet localhost 22133
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set x 0 0 5
12345
STORED
在另一个终端上获得该消息:
telnet localhost 22133
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
get x
VALUE x 0 5
12345
END
get x
END
如上操作,说明配置已成功。
如法炮制生产环境配置:
kestrel.sh
APP_NAME="kestrel"
VERSION="1.2.7-SNAPSHOT"
#Kestrel路径
APP_HOME="/opt/servers/$APP_NAME"
AS_USER="daemon"
DAEMON="/usr/local/bin/daemon"
QUEUE_PATH="/var/spool/kestrel"
HEAP_OPTS="-Xmx2048m -Xms1024m -XX:NewSize=256m"
JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=22134 -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"
# add JMX_OPTS below if you want jmx support.
#如果需要控制字符集,使用-Dfile.encoding=UTF8
JAVA_OPTS="-server -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+
UseConcMarkSweepGC -XX:+UseParNewGC $HEAP_OPTS"
你可能需要修改APP_HOME变量
production.conf
# kestrel config for a production system
# where to listen for connections:
port = 22133
#建议绑定主机IP
host = "0.0.0.0"
log {
filename = "/var/logs/kestrel.log"
roll = "daily"
level = "info"
}
#队列存储路径,用于存储/恢复队列消息,建议存放在磁盘较大的区域
queue_path = "/var/spool/kestrel"
建议绑定host,确保服务器安全
可以重复上述测试操作,测试服务是否可用!
或者,直接查看服务状态——STATS!
最后,拷贝kestrel.sh文件到/etc/init.d/路径下,并赋予执行权限:
后续,我们就可以通过服务方式,调用kestrel了!
service kestrel {start|stop|restart|status}
由于jar文件较大,未在附件内上传外,其余配置文件相见附件!
PS:重点说明一点,队列名称/缓存键名称,一定不要始终“-”作为连接符,请使用“_”作为连接符,避免意想不到的错误。!
相关链接:
征服 Kestrel
征服 Kestrel + XMemcached
征服 Kestrel + XMemcached + Spring TaskExecutor
至于Kestrel:
- 基于Scala语言的Twitter开源消息中间件
- 高性能(TPS 6000不成问题)、小巧(2K行代码)、持久存储(记录日志到journal)并且可靠(支持可靠获取)
- Kestrel的前身是Ruby写的Starling项目,后来twitter的开发人员尝试用Scala重新实现。
可支持的标准协议:
- SET 存
- GET 取
- FLUSH_ALL 清理
- STATS 状态
扩展协议:
- SHUTDOWN 关闭kestrel server,如果执行该操作,需强制重启Kestrel
- RELOAD 动态重新加载配置文件
- DUMP_CONFIG dump配置文件
- FLUSH queueName flush某个队列
经测试,支持DELETE协议!
PS:XMemcached-1.2及其以上版本已对其协议完全支持,注意使用KestrelCommandFactory。
当然,Redis也可以做消息队列,但Redis目前只是Master-Slave模式,还不能像Kestrel做到Cluster。所以,如果只是考虑队列服务,还是纯粹一点,直接用Kestrel,配合XMemcached作为客户端,保持一致性哈希,用起来更放心。因为,高可用嘛!呵呵!
想要消化Kestrel,需要做些准备工作:
- kestrel,必须的!这里用kestrel-2.1.7-SNAPSHOT.jar
- daemon,Linux守护进程,这里用daemon-0.6.4
本想Git下来,逐个编译一把,但始终未果,只好找兄弟copy一份来运行!
我会在附件中,追加相应的配置文件,以及kestrel-2.1.5.jar。
如果你的Server还没有安装Daemon,参考如下操作:
wget http://libslack.org/daemon/download/daemon-0.6.4.tar.gz tar zxvf daemon-0.6.4.tar.gz cd daemon-0.6.4 ./configure && make && make install
一、Kestrel目录结构
Kestrel目录结构如下:
Kestrel
|-kestrel-1.2.7-SNAPSHOT.jar
|-kestrel-1.2.7-SNAPSHOT.pom
|-config
|-development.conf
|-production.conf
|-libs
|-scripts
|-devel.sh
|-kestrel.sh
|-qdump.sh
libs中的jar列表:
- configgy-1.6.4.jar
- naggati_2.7.7-0.7.4.jar
- slf4j-jdk14-1.5.2.jar
- twitteractors_2.7.7-2.0.0.jar
- json-1.1.3.jar
- scala-library.jar
- specs-1.6.2.1.jar
- vscaladoc-1.1-md-3.jar
- mina-core-2.0.0-M6.jar
- slf4j-api-1.5.2.jar
- twitteractors-1.1.0.jar
- xrayspecs-1.0.7.jar
由于附件体积限制,可能需要另行下载(Maven是个好帮手! )
我们只需要关注以下几个文件:
适用于开发环境:
- script/devel.sh用于验证服务配置是否可用
- config/development.conf配合devel.sh进行操作的配置文件
适用于生产环境:
- scripts/kestrel.sh核心执行文件
- config/production.conf核心配置文件
二、Kestrel脚本&配置说明
这里将Kestrel安装至/opt/servers/kestrel路径下,你可能需要对应修改路径配置。
先说用于开发环境的脚本&配置文件:
devel.sh
引用
#!/bin/bash
APP_NAME="kestrel"
#应用路径
APP_PATH="/opt/servers/kestrel"
#版本
VERSION="1.2.7-SNAPSHOT"
echo "Starting kestrel in development mode..."
java -server -Xmx1024m -Dstage=development -jar $APP_PATH/$APP_NAME-$VERSION.jar
注意修改APP_PATH!
development.conf
引用
# kestrel config for a production system
# where to listen for connections:
port = 22133
host = "0.0.0.0"
log {
#日志路径
filename = "/var/logs/kestrel_development.log"
roll = "daily"
level = "info"
}
queue_path = "/var/spool/kestrel"
做一个简单的测试:
引用
./scripts/devel.sh
Starting kestrel in development mode...
Starting kestrel in development mode...
进行如下操作:
引用
telnet localhost 22133
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set x 0 0 5
12345
STORED
在另一个终端上获得该消息:
引用
telnet localhost 22133
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
get x
VALUE x 0 5
12345
END
get x
END
如上操作,说明配置已成功。
如法炮制生产环境配置:
kestrel.sh
引用
APP_NAME="kestrel"
VERSION="1.2.7-SNAPSHOT"
#Kestrel路径
APP_HOME="/opt/servers/$APP_NAME"
AS_USER="daemon"
DAEMON="/usr/local/bin/daemon"
QUEUE_PATH="/var/spool/kestrel"
HEAP_OPTS="-Xmx2048m -Xms1024m -XX:NewSize=256m"
JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=22134 -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"
# add JMX_OPTS below if you want jmx support.
#如果需要控制字符集,使用-Dfile.encoding=UTF8
JAVA_OPTS="-server -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+
UseConcMarkSweepGC -XX:+UseParNewGC $HEAP_OPTS"
你可能需要修改APP_HOME变量
production.conf
引用
# kestrel config for a production system
# where to listen for connections:
port = 22133
#建议绑定主机IP
host = "0.0.0.0"
log {
filename = "/var/logs/kestrel.log"
roll = "daily"
level = "info"
}
#队列存储路径,用于存储/恢复队列消息,建议存放在磁盘较大的区域
queue_path = "/var/spool/kestrel"
建议绑定host,确保服务器安全
可以重复上述测试操作,测试服务是否可用!
或者,直接查看服务状态——STATS!
引用
telnet localhost 22133
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
stats
STAT uptime 52568
STAT time 1343093076
STAT version 1.2.7-SNAPSHOT
STAT curr_items 0
STAT total_items 1
STAT bytes 0
STAT curr_connections 1
STAT total_connections 9
STAT cmd_get 2
STAT cmd_set 1
STAT cmd_peek 0
STAT get_hits 1
STAT get_misses 1
STAT bytes_read 91
STAT bytes_written 151
STAT queue_test_items 0
STAT queue_test_bytes 0
STAT queue_test_total_items 1
STAT queue_test_logsize 27
STAT queue_test_expired_items 0
STAT queue_test_mem_items 0
STAT queue_test_mem_bytes 0
STAT queue_test_age 0
STAT queue_test_discarded 0
STAT queue_test_waiters 0
STAT queue_test_open_transactions 0
END
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
stats
STAT uptime 52568
STAT time 1343093076
STAT version 1.2.7-SNAPSHOT
STAT curr_items 0
STAT total_items 1
STAT bytes 0
STAT curr_connections 1
STAT total_connections 9
STAT cmd_get 2
STAT cmd_set 1
STAT cmd_peek 0
STAT get_hits 1
STAT get_misses 1
STAT bytes_read 91
STAT bytes_written 151
STAT queue_test_items 0
STAT queue_test_bytes 0
STAT queue_test_total_items 1
STAT queue_test_logsize 27
STAT queue_test_expired_items 0
STAT queue_test_mem_items 0
STAT queue_test_mem_bytes 0
STAT queue_test_age 0
STAT queue_test_discarded 0
STAT queue_test_waiters 0
STAT queue_test_open_transactions 0
END
最后,拷贝kestrel.sh文件到/etc/init.d/路径下,并赋予执行权限:
cp kestrel.sh /etc/init.d/kestrel chmod +x /etc/init.d/kestrel
后续,我们就可以通过服务方式,调用kestrel了!
引用
service kestrel {start|stop|restart|status}
由于jar文件较大,未在附件内上传外,其余配置文件相见附件!
PS:重点说明一点,队列名称/缓存键名称,一定不要始终“-”作为连接符,请使用“_”作为连接符,避免意想不到的错误。!
相关链接:
征服 Kestrel
征服 Kestrel + XMemcached
征服 Kestrel + XMemcached + Spring TaskExecutor
- kestrel-2.1.5.tar.gz (1.5 MB)
- 下载次数: 122
- kestrel-config_script.zip (6.4 KB)
- 下载次数: 97
发表评论
-
Thrift小记
2013-03-14 18:37 7879Thrit用的不多,也不够深入,这里小记一笔。 关于Th ... -
征服 Redis + Jedis + Spring (三)—— 列表操作
2013-03-06 16:16 84095一开始以为Spring下操 ... -
Nginx扩展(一):nginx_tcp_proxy_module
2013-01-15 16:41 20860好东西必须持续钻研,且持续积累,尤其要做个笔记。 今天是 ... -
DisplayTag POI支持——Excel文件导出中文乱码问题&包依赖问题-解决
2012-09-29 15:11 7050DisplayTag,可能大部分人都用过,也知道他非常的方便。 ... -
Memcached笔记——(四)应对高并发攻击
2012-09-13 09:48 29065近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意 ... -
征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)
2012-08-29 18:29 82412不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然 ... -
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
2012-08-29 16:30 157642有日子没写博客了,真的是忙得要疯掉。 完成项目基础架构搭建 ... -
Redis集群服务器-高可用调研随笔
2012-08-22 22:24 28950今天改了一天的Bug,本 ... -
征服 Mongodb 之 安装与系统服务配置
2012-08-16 18:47 13638今天补点旧账,去年搭建系统时,曾想用Mongodb做 ... -
征服 Redis + Jedis
2012-08-15 17:49 83559用Memcached,对于缓存对象大小有要求,单个对象不得 ... -
征服 Redis
2012-08-13 17:05 86388大约一年多前,公司同事开始使用Redis,不清楚是配置,还是 ... -
Mountain Lion 升级后Java不可用问题补救
2012-07-31 08:10 7994升级到Mountain Lion后,让我最头痛的是原来的jdk ... -
征服 Kestrel + XMemcached + Spring TaskExecutor
2012-07-30 14:43 6268上一篇征服 Kestrel + XMemcached只是对Ke ... -
征服 Kestrel + XMemcached
2012-07-24 12:06 4738接上一篇 征服Kestrel,介绍XMemcached对于Ke ... -
Java操作Excel文件导入
2012-06-27 17:33 65154用Excel作为数据源,通过Java Web进行导入,需要PO ... -
征服 Nginx + Tomcat
2012-05-24 17:35 267982年前一直折腾Apache,现如今更习惯Nginx。 搭建网站 ... -
征服 Nginx
2012-04-25 13:12 10362赶上要配置测试服务器,赶上Nginx-1.2.0 stable ... -
JVM学习笔记——内存跟踪
2012-04-12 10:35 0引用 jmap Usage: jmap [optio ... -
Memcached笔记——(二)XMemcached&Spring集成
2012-04-01 09:55 42413今天研究Memcached的Java的Client,使用XMe ... -
Memcached笔记——(一)安装&常规错误&监控
2012-03-09 14:27 3560408年的时候接触过Memcached,当时还对它的客户端产品嗤 ...
相关推荐
标题“征服 Kestrel + XMemcached”暗示了这篇博文主要关注的是两个技术组件:Kestrel和XMemcached。Kestrel是一个高性能、异步的分布式消息队列,而XMemcached则是一个广泛使用的Java客户端,用于连接到Memcached...
标题中的“征服 Kestrel + XMemcached + Spring TaskExecutor”揭示了本次讨论的核心内容,涉及到三个关键的技术组件:Kestrel、XMemcached以及Spring的TaskExecutor。这些技术都是在构建高性能、可扩展的分布式系统...
IIS 充当起了反向代理,将流量转发给 Kestrel 并管理 Kestrel 进程。在 Linux 上,我们通常使用 NGINX 作为 Kestrel 的反向代理。 三、设置 Kestrel 在 ASP.NET Core 3.0 及更高版本,Kestrel 属于框架默认的配置...
**Kestrel持久化队列服务器详解** Kestrel是一款高性能、轻量级的消息队列系统,最初由Twitter开发并开源。它主要被设计用来处理实时流数据,提供了一个简单的基于HTTP的API来发送和接收消息。Kestrel的一个关键...
在ASP.NET Core中,如果在Kestrel中想使用HTTPS对站点进行加密传输,可以按照如下方式 申请证书 这一步就不详细说了,有免费的和收费的,申请完成之后会给你一个*.pfx结尾的文件。 添加NuGet包 nuget中...
**Kestrel框架详解** Kestrel框架是ASP.NET Core的一部分,它是一个高度可配置、高性能的Web服务器,被设计用于构建跨平台的现代Web应用。Kestrel自.NET Core 1.0版本起就已成为默认的Web服务器,支持Windows、...
资源分类:Python库 所属语言:Python 资源全名:kestrel-lang-1.0.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
addlog-kestrel
红隼节点Node.js 的 Kestrel 客户端安装 npm install kestrel.node用法 var Kestrel = require ( 'kestrel.node' ) ;var client = new Kestrel ( 'localhost:22133' ) ;// get can optionally take a timeout in ...
Kestrel以其灵活性和可靠性而著称,被广泛用于ASP.NET Core应用程序的部署。 **一、KestrelHttpServer与libuv的关系** libuv是一个跨平台的异步I/O库,它为多种操作系统提供了统一的API,用于处理网络连接和文件...
Kestrel是不是Unix或Windows的内核。
这篇文章主要是记录如何将Kestrel的服务封装在WindowService中 关于WindowsServer 请参考如下这篇文章 .netcore worker service (辅助角色服务) 的上手入门,包含linux和windows服务部署 开发服务 之前做过.net5...
在某些情况下,当 Nginx 配置不当,尤其是 `Connection` 字段设置为 `Upgrade` 时,可能会导致 Kestrel(ASP.NET Core 的内置 web 服务器)返回 400 错误。这个问题通常与 WebSocket 协议升级有关。 WebSocket 是一...
kestrel项目源文件包
"kestrel_lang-1.1.0-py3-none-any.whl"就是这样一个Python库的发行版,它适用于Python 3解释器。 首先,我们来了解一下`.whl`文件。`.whl`是Python的二进制分发格式,它是Python Wheel项目的产物。Wheel格式旨在...
2. **生产环境**:在生产环境中,Kestrel通常与IIS或Nginx等更成熟、稳定且性能强大的服务器配合使用,Kestrel作为应用服务器,处理应用程序逻辑,而反向代理服务器负责流量管理和安全保护。 3. **微服务架构**:在...
介绍和背景Kestrel项目涉及使用全自制设计的计算和自我教育的自由,直至从原理图和寄存器传输逻辑一直到OS API和用户教程的各个级别公开记录的硬件和软件。 根据我的经验,它的设计来自多种来源: 硬件工程卓越奖...