查看: 816|回复: 0
收起左侧

[架构设计] 133-去哪儿网的java开发生态环境 中文PDF版 2.13MB 电子书 下载.pdf【43页】

[复制链接]

567

主题

712

帖子

3743

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3743
发表于 2017-3-15 00:23:16 | 显示全部楼层 |阅读模式
133-去哪儿网的java开发生态环境 中文PDF版 2.13MB 电子书 下载.pdf【43页】

20170315002035.jpg

@InfoQ infoqchina孙立@qunar.com
weibo.com@sunli1223
去哪儿网的java开发生态环境主题内容
l自劢化发布系统
l可靠消息系统QMQ
l mock平台
l自劢化测试Qunit
l代码Review
l监控报警体系自劢化发布系统eclipse编译,手工上传class文件到服务器
写脚本多机上传
避免重启,大量使用jsp来完成逻辑
线上直接改配置文件,改jsp代码
没有发布系统的发布带来的问题
◇编译环境丌一致
◇机器之间代码并丌完全一致
◇生产环境不svn仓库代码丌一致
◇多个分支并行开发,极易出现发布故障
◇测试通过,发布上去有问题
◇发布重启过程中有5xx失败访问
◇很难执行固定的流程规范
◇多语言,多形式的发布支持公司进行了一次全面的maven化运劢,为
自劢化发布系统做准备
maven的统一已经成为qunar网所有系统的发布标准
qunar网上千个系统全部由它负责管理发布
基于Jenkins的自劢化发布系统多环境支持u一键发布
u支持灰度发布
u支持分批并行发布
u支持发布不同的环境
u发布与代码仓库的关系管理
u前端js和css的版本和后台的关联管理
u发布权限控制
u可执行的规范统一的发布流程
自劢化发布系统的核心功能开发人员从
trunk打分支,
进行开发
分支发布到
beta,生成btag
发布btag到生产
环境,生成rtag
通过rtag进行回
滚发布
java项目开发和发布的主流程检查分支
merge过trunk
检查分支能否
merge到trunk 分支打btag
从btag
checkout 代码
重复类/依赖冲
编译beta war 突解决
发布到beta
发布beta环境流程检查btag是否
可以merge到
trunk
把btag Merge
到trunk
Merge后的
trunk打一个
rtag
Checkout
rtag代码
重复类/依赖检

编译生产环境
war
关闭nagios报

摘掉
nginx/RPC请

发布代码并重
启tomcat
检查一个url测
试重启是否完

开放nginx/rpc
请求
发布完成,进
行下一批
发布生产环境流程消息系统QMQ去哪儿网的实时搜索依赖于消息系统AMQ
1.历叱上由于AMQ出过好几次故障
2.在故障基础之上,我们的经验让AMQ现在运行
非常稳定了。
3.只要丌宕机,偶尔丢失消息对于搜索丌会有任何
问题。在交易系统中,我们面临了新的挑战
1.消息系统本身丌能丢消息。
2.如何让业务系统把消息可靠的送达消息系统
3.我们也有自己的一些特殊业务需要扩展时,丌
好满足?
我们在消息系统上遇到的问题先做业务操作,然后发送消息
先发消息,然后进行业务操作
分布式事务?
消息的可靠性自己劢手丰衣足食
调研方案
1、可靠
2、对业务系统侵入少
3、集中式管理本地事务域
PRODUCER
MYSQL INSTANCE
业务
QMQ
本地事务域
事务提交
BROKER BROKER DB
QMQ_TASK
1
2
3
4
5
6
7 DELETE
8
9
QMQ消息系统结构Mock平台mock平台支持表达式的参数标识
$param.orderNo=123 & payNo = 456
$host自劢化测试Qunit为什么要开发自劢化测试框架Qunit
◇ Qunit的测试用例只需要准备xml文件数据即可
◇ Qunit无需关心接口的访问和结果比较逻辑代码
◇ Qunit可以保证同样的测试逻辑,10个人写的基本一
致◇
测试报表,并集成被测系统的日志展示
长久的经验,用程序写的测试用例很难大规模的维护好!!Qunit的简单示例演示
<case id="qTax_db_tax_sameday" desc="同一天" tag="reviewed">
<include file="case/include/include.xml" />
<call service="qtax">
<param from="KA937_PEK_HKG_2012-08-30_Y" />
</call>
<assert>
<callback value="XQScript_9" />
<status value="200" />
<body>
<![CDATA[
{"fee":330,"childFee":0,"isQFee":0,"alreadyContain":false}
]]>
</body>
</assert>
</case>Qunit的简单示例演示
Qunit测试
应用程序A
➀ mock平台
➁ ➂


<mock source="192.168.126.54" target="SMS"
service="/sms" key="13333333333">
<return>
<body>1</body>
<callback>
<url>http://www.qunar.com/callback.js
<body>0</body>
</callback>
</return>
</mock>自劢化测试平台Qunit自劢化测试平台代码Review与trunk的code diff review
Review的问题跟踪
代码review系统
跨版本批量code diff review
IDE集成监控报警体系监控系统
业务系统
业务系统
业务系统
业务系统
监控收集 cacti
nagios
多机数据合并
qmonitor组件
短信/邮件报警
电话语音报警谢谢
加入我们吧
各种技术人员,简历投递到 li.sun@qunar.com
微博联系: http://weibo.com/sunli1223特别感谢合作伙伴特别感谢媒体伙伴(部分)


百度云盘私密分享地址:
链接:http://pan.baidu.com/s/1pKMmoIJ
密码:sr30



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 打开微信扫一扫