本篇文章主要介绍了"生态系统的稳定性 系统的稳定性建设",主要涉及到生态系统的稳定性方面的内容,对于软件工程感兴趣的同学可以参考一下:
静儿来面试新美大这个部门的时候,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、高峰期网卡、是否有两到三倍冗余? |
组件和版本:
维护系统稳定性要注意选择合适组件和版本。