文档章节

oneproxy-monitor支持动态更新配置,保证前端业务不被中断

harris2016
 harris2016
发布于 2016/11/23 21:24
字数 774
阅读 106
收藏 0

    oneproxy系列产品在被使用的过程中,有部分同志要求增加在线更新配置的要求。为了满足这个要求,经过研究在oneproxy-monitor上面实现了在线更新配置的要求,从而保证前端业务不被中断更新配置或者重启的效果。下面是在线更新配置的活动图。本项目中实现的在线更新配置的方法主要利用Linux的reuseport功能,而Linux的reuseport功能需要内核版本的支持。内核版本至少需要在2.6.32-431版本以及之上。如果内核版本不支持reuseport,则如果已经存在运行的oneproxy,则再次启动的时候会报错"port already in use"的错误,并且新启动的程序会退出,旧的程序不会受到影响。

    同样如果配置文件,配置的有问题,在加载阶段解析错误,则同样新程序退出。通过下面的活动图可以得知,本方法有两个关键点:1. 必须存在pid文件。2. 连接到oneproxy上面的连接必须在合理的时间退出。

1. pid文件

    为了在启动的时候判断是否存在老的进程,本方法是通过pid文件来判断的,pid文件的命名格式为:xxxx_oneproxy_pid.pid.其中xxxx是进程id,这个由程序自动获取并且增加到配置中指定的pid文件名的前面。例如:进程的id为:6543, 配置文件中通过pidfile选项配置pid文件的名称为oneproxy_pid.pid,则最后生成的pid文件名称为6543_oneproxy_pid.pid.文件中保存的是6543.

2. oneproxy退出时机

 为了不转移旧oneproxy上面已经存在的连接,就不能直接退出oneproxy,oneproxy必须等到accept到的客户端的连接都做完后才退出。这个就需要客户端保证每个连接的有合理的退出时机,否则oneproxy会一直等待,知道连接退出为止。当然在等待中的oneproxy是不会处理新连接的。因为在接收到信号的时候已经停止了accept客户端的连接。

 

3. 功能的使用

oneproxy_monitor中已经实现此功能,使用此功能不需要额外的配置,只需要在与老进程所在的相同目录下启动即可。

4. 测试情况

    目前在oneproxy_monitor框架下面开发的oneproxy-for-sqlserveroneproxy-for-postgresql进行测试。通过jdbc编写的多线程短连接的方式测试了oneproxy-for-sqlserver, 通过pgbench每次建立连接的方式测试了oneproxy-for-postgresql.

    pgbench和jdbc端都感觉不到中间件已经重启。

 

 

 

  

© 著作权归作者所有

harris2016
粉丝 10
博文 54
码字总数 30661
作品 0
杭州
程序员
私信 提问
oneproxy-monitor 支持协议层的数据调试功能

oneproxy-monitor是平民软件开发的一款数据库监控软件框架,在oneproxy-monitor中支持客户端和服务端之间的数据包的输出。进行中间件开发或者协议开发的时候会使用到这个功能来监控前后端数据...

harris2016
2016/10/19
482
1
sql server中间件支持前后端密码分离

经过一个多月的精心分析和研究终于完成sql server的验证过程,把验证过程分开实现在sql server的中间件oneproxy-for-sqlserver中了。目前oneproxy-for-sqlserver已经实现前后端密码分离功能。...

harris2016
2016/10/25
429
0
oneproxy-monitor 1.2.5 版本发布

oneproxy-monitor的版本更新到了1.2.5了. 在这个版本中主要增加如下的功能点: 增加显示sp_who的功能:这个模拟的是sqlserver数据库中的sp_who查询的结果,显示前端主机用户与sql语句的关系。...

harris2016
2016/12/07
1K
9
oneproxy-monitor 更新,支持在线更新配置等

oneproxy-monitor 在 oneproxy-for-sqlserver 的 1.2.4 版本中增加了如下两个功能: 1. oneproxy-monitor 的在线配置的更新 通过使用 Linux 内核的 reuseport 功能实现了 oneproxy-monitor 的...

harris2016
2016/11/23
1K
0
OneProxy 监控的框架--OneProxy-Monitor

OneProxy-Monitor,OneProxy监控的框架,可以通过实现 protocolbase.h 中的接口来快速构建一个数据库的监控程序。具有如下的功能: 1. 可以指定多个端口,不同的端口转发到不同的数据库。也就...

匿名
2016/10/19
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux的基本命令

目录的操作命令(增删改查) 增: mkdir 目录名称; 查: ls 可以看到该目录下的所有的目录和文件 ls -a,可以看到该目录下的所有文件和目录,包括隐藏的 ls -l,可以看到该目录下的所有目录和...

凹凸凸
今天
2
0
在古老unix中增加新用户

Installing 4.3 BSD Quasijarus on SIMH 目标:要在4.3BSD中新增加用户dmr,指定目录/home/dmr,uid为10 gid=31(guest组,系统已建立) 4.3BSD还没有adduser或useradd 直接修改/etc/passwd...

wangxuwei
今天
2
0
Bootstrap(六)表单样式

基本样式 所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;。 将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好...

ZeroBit
昨天
3
0
SSL 证书格式转换

SSL 证书格式转换 不同服务器情况下,需要不同的证书格式。 比如 pem 转 pfx。 pem在window 平台下可以导入,但是无法正常使用。 需要转换成pfx。 推荐在线转换工具,由中国数字证书网站提供...

DrChenXX
昨天
2
0
HAProxy

xx

Canaan_
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部