摘要:本文是开发工具篇第九讲:菜鸟入坑指南。针对新人上手慢的问题,写了这篇入坑指南,方便自己回顾,总结。本文分为四个部分,分别为jenkins使用技巧;常用软件操作命令;开发手册;调试手册。主要材料来自于开发过程中遇到的坑,部分内容在后续会补充。
应用模块与 jenkins 部署名称的对应关系
应用模块/简介/jenkins名称(编译时)
1、item-microservice-center
2、item-microservice-web-admin
3、item-microservice-web
4、item-center
5、item-microservice-external
6、item-platform-center
7、web-item-platform
应用模块\简介\jenkins名称(编译时)
应用模块/简介/jenkins名称(编译时)
1、agreement-center
2、aggrement-web
应用模块\简介\jenkins名称(编译时)
1、zcy_webc
2、extra-center
3、web-admin
1、若想重启应用
2、编译、开发、上线的步骤:compile→ dev-debug(自测,前后端联调) → test1(功能测试) → 预发环境→ 真线环境
操作项\步骤
1、在终端中登录日志系统
ssh developer@172.16.101.123 密码: zcy 日志中心2、查看模块位置的指令
find -name web-item* 或 find ./ -name item-mi* (模糊搜索以web-item开头的模块)3、查看错误日志
tail -f filename(filename为前一个命令查到的路径)vi filename 来查询 可以更加方便地搜索日志中的关键字注意事项
常用vi命令
命令\作用
1、git merge --no-ff feature/weide
2、git checkout -b dev
3、git branch
4、git branch -d feature/weide
5、git stash list / git stash pop list
6、git push origin release/20190704
7、git pull origin release/20190704
8、git add file
9、git commit —message “注释信息”
分支|使用时机|注意事项
hotfix/问题描述
feature/功能
release/日期
master
政府采购云平台功能 地址1、可以查看菜单的定义信息,菜单详情
2、url访问权限管理(登录访问url/匿名访问url/授权访问url)
3、角色标签树
4、菜单权限配置
old:
http://172.16.101.169:8044/#/login?_k=vr2cmshttp://confluence.cai-inc.com/pages/viewpage.action?pageId=6623436 来遍写菜单模板yml文件;http://172.16.101.169:8044/#/ymlToSql?_k=rhzdo4 由yml文件生成sql语句;new:纯界面操作,增量配置和修改配置两部分 参考文档
5、权限查询
6、redis管理
7、工作流配置
1、spu管理
作用:通过界面新增或是导入工具上传SPU时,会将数据上传到阿里库,然后每天定时任务(凌晨1点) 会将库中数据dump到本地,使用阿里开放平台可以实时查看到上传的数据。
地址:Apollo下搜索项目extra-center,查找关键字 Apollo test环境
阿里库online环境 Api名称 taobao.spu.get
spu.aliapi.appKey 24360240spu.aliapi.appSecret 87ad2f51d8d0ff163fbf7d7446a05a2echannel zcy
阿里库沙箱环境 spu.aliapi.appKey1024360240
阿里沙箱环境挂过
spu.aliapi.appSecretsandbox1d8d0ff163fbf7d7446a05a2e
channel zcy_staging
2、类目属性库
作用:拉取tmall类目属性,类目属性值
阿里环境:appkey:21008948 appsecret:0a16bd08019790b269322e000e52a19f
3、CSPU库
推荐看这篇文章,更加全面
1、传递依赖的问题
2、deploy的问题
snapshot版jar包被更新后,能实时拉取最新的代码
release版jar包必须升级版本号后,才能拉取最新代码如果dubbo接口有变动,上staging环境前必须升级pom文件版本号
如果release包deploy到dev环境失败时,必须重新打包
3、maven常用命令
| 作用 | 命令 |
|---|---|
| 清除无效jar包 | mvn clean install -U -DskipTests |
| 上传jar包到开发/测试环境 | |
| 上传jar包到预发/真线环境 |
功能:
地址:运维平台
主要功能是:查看接口的rt(response time),可以查看该调用链的依赖以及执行时间
使用时机:
功能是:查看某一接口/方法有没有成功注册,查看服务提供方与消费方
使用时机:在新增dubbo接口时查看,与磐石系统结合使用
地址 使用方法:1、填写对应的topic和pid 就可以了。
TopicPID
账号:
待整理
功能:简介
插件功能推荐程度
1、mybatis插件(mybatisCodeHelperPro)可以生成基础的domain和mapper文件,提升开发效率 *****
2、sonarLint插件代码规范检查 ****
3、Maven helper便捷查看maven的层级结构 **
4、Lombok简化domain的代码量,方便构造对象 ****
快捷键功能备注
搜索相关command+o 搜索类
command+shift+f 搜索方法
两次shift 万能搜索
command+e 搜最近更改过的文件
command+f12 搜该类中方法
代码生成.var
重构相关alt+command+m 生成方法
现象排查方向故障降低措施
1、pinpoint 打点存在大批量300ms以上排查方向:检查db是否存在慢sql/定位调用链中具体接口/pinpoint inspector查看是否存在fullGC/应用dubbo线程池是否耗尽)
2、应用 cpu突然升高排查方向:应用是否存在fullGC/检查应用流量是否突增/是否存在不合理调用(可参考监控大盘) 1、阈值标准:pinpoint最近5min出现大批量超过5s以上的打点/应用cpu 90%以上持续3min/应用内存90%以上持续3min(瞬间暴增除外)/收到上游最多两个以上业务方反馈
解决措施:打印线程栈:jstack l
内存升的很快排查方向:1、排查是否存在新版本发布的影响;2、查询下调用频率较高的接口是否存在内存缓存的使用;3、查询下日志确定应用是否存在大批量的异常抛出
3、数据库 cpu持续90%以上10分钟ops是否明显增高(是否爬虫等异常流量)/是否存在大批量数据查询(索引/动态sql) 阈值标准:数据库cpu100%持续2min且没有下降趋势/链接数一直增加没有下降的趋势,iops打满且没有下降的趋势/内存使用率80%以上持续5min
解决措施:定向业务限流/运维kill慢sql/运维kill锁进程/重启应用/升级配置(但是需要考虑升级时间的影响问题)
连接数线性增高且长时间不下查看是否存在慢sql/查看应用的数据库连接池配置/查看数据库中是否存在死锁 show engine innodb status;
iops飙高ddl操作 是否针对大表新增索引/是否存在变更大表字段,业务上是否存在大批量操作(写入或读取)
内存升高确认下数据库连接数是否异常(连接也占用内存)
4、中间件 MQ 消息堆积(基本不需要处理)
阈值标准:garafa canal delay 延迟超过用户不可接受的范围
解决措施:业务评估无影响情况下联系运维重置消费位点
canal delay延时高(排查方向:大批量数据操作,是否存在和其他业务共用canal,受其他业务影响)
table表名、有效数据量、重要字段、重要方法、备注(存在的坑)示例
spu相关
1 zcy_ali_spu spu库
2 spu审核表
3 spu快照表
品牌相关
商品相关
1 parana_items 商品表
1、status商品状态枚举(0 已发布PUBLISHED;1上架ONSHELF;-1下架;-2 冻结FROZEN;-3 删除DELETED;2 待审核;-4 审核不通过;5 解冻审核中 )
2、layer商品层级 基础ITEM:1 网超渠道:11 大宗渠道:12 疫苗渠道:13 制造馆渠道:14 协议供货渠道:15 医疗器械渠道:16 网超协议:111 大宗协议:112 疫苗协议:113 制造馆协议:114 协议供货协议:115 医疗器械协议:116
3、状态 DRAFT(10, “草稿”),PUBLISHED(0, “正常”),/** 基础 + 渠道 + 协议 共有状态 /FROZEN(-2, “冻结中”),WAIT_UNFREEZE(5, “解冻审核中”),DELETED(-3, “删除”),/* 协议 特有状态 /ONSHELF(1, “上架”),UNDERSHELF(-1, “下架”),WAIT_ONSHELF(2, “上架审核中”),WAIT_PRICE_RISE(3, “价格上涨审核中”),WAIT_PRICE_DECLINE(4, “价格下降审核中”),/* 审核不通过*/AUDITREJECT(-4, “审核不通过”);
经常被前端和运营问到商品枚举
2 商品属性表
2 parana_property_value 属性值表
3 parana_back_categories 后台类目
4 parana_front_categories 前台类目
5 parana_category_attributes attr_vals_json 属性值id化
常用sql脚本1 利用excel生成sql脚本
CONCATENATE("update user_brand_dealer_item_22 set target_item_id = ",A2,", status = 1
where task_id = 6566507514137653907 and target_item_id =0 and status=2 and reason='' and target_shop_id = 2211405 and item_id = ",B2," ;")
2 类目层级关系脚本
select a.`name` AS '一级类目', a.id, a.tag_id, b.`name` AS '二级类目', b.id, b.tag_id, c.`name` AS '三级类目', c.`id` AS cid, c.tag_id
from `db_item`.`parana_front_categories` a, `db_item`.`parana_front_categories` b, `db_item`.`parana_front_categories` c
where c.level= 3 and c.status= 1 and b.level= 2and a.level= 1 and c.pid= b.id and b.pid= a.id
工具1 FIND_IN_SET函数
SELECT * from tb_test where FIND_IN_SET("daodao",list)
序号工具类使用方法
1 beanUtils 1、copy(source,target) 将原DTO拷贝到目标DTO,缺点是:没法进行深拷贝
2 字符串处理工具1、
3 sql语法检查
4 类目、属性缓存清理 缓存清理方法
数据库连接信息查询:
1、通过Applo,可以查看各个数据库环境(ip/username/password) 地址:通过阿波罗查看数据库配置
2、通过cf链接,查看各类测试环境信息:测试环境信息
3、要想查看sql执行语句 :通过microservice center的日志 ,因为会直接连DB(center应用也能看到程序异常)
4、要想查看程序报错信息:通过web item admin的日志信息,
sql脚本维护:
1、开发过程中对数据库做了改变的地方(变更字段/索引等),需要将sql执行语句及回滚语句在运维平台进行版本维护 运维平台sql脚本维护地址
2、在“版本执行”根据版本号在不同环境下执行相应脚本
Idea 调试:
1、首先得部署好远程调试环境:在idea中配置Remote信息(host以及port),通过运维平台(资产管理 --》应用)可以查看详情运维平台地址
2、通过远程debug ,现将程序部署在dev-debug环境,然后在本地打断点,要保证远程环境和本地代码的一致性
调试技巧:
1、页面上出错后,根据关键词在后端代码中找到对应的log信息,然后根据此信息查询日志文件,快速定位;
2、容易出错的地方:mybatis中手写的Mapper文件,不会智能提示错误;
3、场景:遇到程序逻辑没问题,但是数据不能落库时,可以看item-microservice-center日志文件中的sql语句,看是否能在数据库中成功执行;也可以查看dubbo监控服务调用的信息,传入数据,看能否成功查询或插入数据。
第二种方法
1、连接要调试的环境,例如:test上海:-Denv=SH -Dapollo.cluster=test-shanghai -Dapollo.meta=http://172.19.195.201:8080
2、需要调试的类继承InitializingBean方法,然后实现该方法的afterPropertiesSet()方法,构造需要调试的对象,最后打断点执行
第三种方法:
sql调优技巧待补充
花未全开月未圆,才是人间好风景 – – – 曾国藩