前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1号店架构演进读后感

1号店架构演进读后感

作者头像
dys
发布2018-04-03 11:35:12
5700
发布2018-04-03 11:35:12
举报
文章被收录于专栏:性能与架构性能与架构

前几天看了一篇介绍1号店架构演进的文章,其中给我印象最深的是他们的日志系统,非常完善,我之前所在的大公司,和现在创业中的小公司都没有做到,日志是一种重要思维方式,值得关注 日志思维已经深入融入1号店的架构理念,成为重要的基础设施 早期的1号店,也是用简单的MVC架构,控制层处理业务逻辑、数据库交互,在初期,方便快捷,成本低响应快 随着业务变得复杂、人员规模爆发式增长,这种强耦合结构成了巨大的瓶颈,代码耦合度高互相冲突、出错概率和事故概率明显提升,业务需求不能快速响应,于是Service化成为第一前提 Service化的第一步首先考虑什么? 有人先想到的是采用什么RPC框架、采用什么技术,怎么让性能更高 也有人首先想的是业务怎么拆分,怎么才能更合理 1号店首先想到的是如何做监控和问题定位 怎么提前发现问题、出现问题后如何快速定位,这只能依赖日志,这是监控和问题定位的基础 仅一个下单接口就定义了135个错误编码,接口上线后至今出现的错误编码在50-60个,也就是说有50-60处不合理或错误的地方被捕获修正,这个不合理或错误既有业务的 又有程序的 也有对编码定义的不合理 对于极少出现的错误,日志是非常有用的,例如在下单接口上线近2年后,一个之前从未出现过的错误编码跳出来了,是一个很难出现的业务场景,但通过这个编码,可以马上定位问题 永远不能保证系统没有bug,bug可以藏的很深很久,但日志就像伏兵一样,一直都在,bug一出来,可以很快定位解决 一号店日志系统的设计原则: (1)进数据库 (2)分类化、层次化、错误code唯一,可以瞬间定位问题位置,可以从各个维度去做监控预警 错误编码示例 -- GOS-10111001 第一组为前3位,代表service名称,例如 101 代表createOrder 第二组为3、4位这两位,代表错误类型,大类和小类,例如 1 - 系统级错误 2 - 应用级错误(前端参数错误) 3 - 业务级错误(service自身错误) 4 - 依赖级错误(service调用第三方服务错误) 5 - 交互级业务提醒(正常业务逻辑,非错误,需告知用户,如库存不足) 99 - 未知异常

第三组为后3位,代表错误明细,如001代表参数为空

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档