系统的稳定性建设_项目管理_非技术区_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 非技术区 > 项目管理 > 系统的稳定性建设

系统的稳定性建设

 2017/12/3 16:00:42  静儿1986  程序员俱乐部  我要评论(0)
  • 摘要:静儿来面试新美大这个部门的时候,HR跟我说我们是最核心的部门,没有之一。我以为这是句夸张的招人用的玩笑。结果来了发现,额,这句话是很公正客观的。现在上上下下组成了一支牛人团队,请来了其他部门很多资深高手进行封闭开发,确保我们系统的稳定性。选择一份工作,必然要考虑的是:我们是做基础设施的,还是做平台的,还是做核心链路的。业务方面讲究领域驱动,各个领域目标也不同。基础设施最重要的指标是稳定性、性能、扩展性。平台讲究多业务,通用性,人效。所谓人效就是我这个平台有些自动化的东西不能满足需求
  • 标签:

  静儿来面试新美大这个部门的时候,HR跟我说我们是最核心的部门,没有之一。我以为这是句夸张的招人用的玩笑。结果来了发现,额,这句话是很公正客观的。现在上上下下组成了一支牛人团队,请来了其他部门很多资深高手进行封闭开发,确保我们系统的稳定性。

  选择一份工作,必然要考虑的是:我们是做基础设施的,还是做平台的,还是做核心链路的。业务方面讲究领域驱动,各个领域目标也不同。

  基础设施最重要的指标是稳定性、性能、扩展性。平台讲究多业务,通用性,人效。所谓人效就是我这个平台有些自动化的东西不能满足需求,需要靠手工来完成,这样开发人员的人效就低。如果一个平台需要输入的东西很多,而且还需要多步骤审核,审核不够自动,那么输入人效低,运营的人效也低。如果平台的用户是外部用户,他们输入繁琐,这个用漏斗分析法来分析,得出来的流失率会高。

checklist:

  核心链路最重要的是稳定性。如果拿到一手烂代码,到了非重构不可的程度。那么重构之前要弄明白几个问题:原系统TOP5的主要问题是哪些?我重构了就能解决这些问题吗?重构之后怎样保证很长一段时间内不需要再次大规模重构?

  对于任何一个系统,都要设计一个checklist。比如比较重要的:

大分类  小分类  check项目  基础组件依赖  缓存  挂了是否可用、跟其他系统共用?    MYSQL 跟其他系统共用、慢查询、大事务、连接池监控状况、大表、读写分离、主从延时敏感?    MQ  挂了是否可用、依赖消息的发送顺序?    日志  建议应用日志不超过磁盘的30%,使用日志组件的性能和稳定性?    其他组件,如databus  是否有监控?是否单点?自动fail over?  依赖内外部系统  下游系统1  timeout配置?重试次数?满足幂等性?TP99?挂掉后是否稳定?    下游系统2  timeout配置?重试次数?满足幂等性?TP99?挂掉后是否稳定?  被依赖内外部系统  上游系统1  是否限流?timeout配置?重试次数?满足幂等性?TP99?挂掉后是否稳定?    上游系统2 是否限流? timeout配置?重试次数?满足幂等性?TP99?挂掉后是否稳定?  核心接口性能 核心接口1  QPS、TP99、可用性?   核心接口2  QPS、TP99、可用性?  JVM  基本配置  堆栈配置、线程使用的监控报警、fullgc异常、无界队列、批量更新cache?    容量预估  高峰期CPU load、高峰期内存、高峰期磁盘IO、高峰期网卡、是否有两到三倍冗余?

组件和版本

  维护系统稳定性要注意选择合适组件和版本。

  比如Apache Tomcat被纰漏有高危漏洞。当在应用配置文件web.xml中显式的配置DefaultServlet的readonly属性值为false时,恶意用户能够通过PUT请求方法上传文件,如果上传的是可执行文件,将会导致远程命令被执行。

  jackson-databind2.9版本前有反序列化漏洞,它可能语序未经身份验证的用户通过将而已制作的输入发送到ObjectMapper的readValue方法来执行代码。如果服务器反序列化了不安全的数据,能造成服务器执行恶意代码。建议升级到2.9.2以上。

  比如Apache Struts发布S2-054和S2-055安全公告,两个漏洞皆是因为调用了有问题的组件而产生的漏洞。

  S2-054漏洞由于Apache Struts REST插件使用了过时的JSON-lib库,这个库很容易受到攻击,攻击者可以构造特制的JSON恶意请求造成DOS攻击。

  由于Apache Struts调用了存在反序列化漏洞的Jackson JSON库,导致了反序列化漏洞。

 外部依赖:

  外部依赖,比如我们的下游系统、或者缓存,MQ等等。都需要在系统里处理好它们出问题的情况。测试方法是:将这些依赖的端口禁用,流量打过来后观察系统。系统线程数有没有飙升,超时是否合理,有没有异步化,有没有熔断?最重要的是:事务里不允许有外部依赖。

 

跑题时间:

  幸福是件很简单的事情:幸福是可以轻快的又跑又跳,可以边走路边跳起来够到路边的树叶;幸福是无论小鲜肉受了伤还是熟睡中,只要我拥抱他,他就会紧紧的搂住我。幸福是下班很晚,回家发现男神还在客厅等我。

  周四男神发消息祝我生日快乐,说给我准备了棒棒糖。我抬头对周围的同事说:“爷爷的,我的生日是昨天。”同事说:“能想起来就不错,别管哪天想起来。”回家才发现棒棒糖是小鲜肉在幼儿园得到的礼物,拿回来送给妈妈的。我笑着说男神真无耻。

  二十几岁的时候,安逸到过段时间上班会换一条远的路线,看到不同的风景会欣喜。年轻是用来挥霍的,愿意去接受无法预估和掌控的无限可能。现在每走一步要做好规划,沿着设定的道路来走。就像二十几岁的时候想穿什么衣服都可以,而再大一点就需要讲究衣品。什么阶段做什么事情。

  做程序媛其实本身就是是很幸福的。记得大学的时候有个男孩表白,静儿没有同意。后来听别人说有他们宿舍那几个男孩子都很喜欢静儿。本来也没放在心上,后来毕业聚会的时候,其中一个男孩喝醉了拉着静儿不放。静儿才开始想这件奇怪的事情,因为静儿和他们很少接触的。后来想明白了:他们喜欢的不是静儿本人,是那个男孩子口中的静儿。不论在什么情况下,都把别人说的非常好,这不是静儿有多好,而只能说明那个男孩子的人品非常好。

  所以静儿最大的幸福是周围都是这样一群单纯善良的程序员。可能当初和谁在一起,结果都会不错。只是爱是一种天时地利的迷信。一起经历过的回忆和青春,别人是代替不了的。我问男神我在他心中长得到底是什么样子。男神只是说:一直就是当初第一次见到我的样子。终于明白为什么一些人可以接受一起变老,而不能接受第一次见面对方就不再年轻。对于我和男神,时间永远定格在了20岁我们的初见。选对人最重要的两方面而已:健康和人品。身怀感恩之心,一起创造岁月的童话。

上一篇: 新开源工具诞生!让C++秒变JavaScript 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名