在日常工作中肯定会遇到各种棘手问题,需要我们去查资料、认真思考,不断充实自己,提高自己。象大地之神盖亚的儿子——乌拉诺斯,每次跌倒都能站起来,并且拥有比之前更大的能量。
-
写代码往小的方面讲是完成一个功能,往大的方面讲是做一个平台。抽象和枚举分寸拿捏恰当,做到最大通用性。需求变更和新功能接入时,做到最少的改动。做到这一点才称的上最佳程序员。
-
关注最新流行的开源框架,能快速分析其优缺点。做好技术框架选型、测试、集成,上线使用。
-
对于很多框架要知道其如何使用、然后要深入了解其原理。做到知其然,知其所以然。
-
框架设计尽量要考虑其业务场景,每个领域都有其个性特征,大而全且通用的设计很难满足需求。
-
做优化时要结合数据反馈,不能盲目瞎搞。
-
墨菲定律:任何事情都没有表面看起来那么简单。所有的事都比你预估的时间长。
-
集中式调用改为HSF分布式远程调用,走的网络调用。为了提高性能,封装client二方包,通过xml bean配置控制逻辑,先从tair中查询,然后再走远程调用。
1.流控
双11期间,对于一些重要的接口(比如帐号的查询接口,店铺首页)做流量控制,超过阈值直接返回失败。 另外对于一些不重要的业务也可以考虑采用降级方案,大促—>邮件系统。根据28原则,提前将大卖家约1W左右在缓存中预热,并设置起止时间,活动期间内这部分大卖家不发交易邮件提醒,以减轻SA邮件服务器的压力。
2.容灾
最大程度保证主链路的可用性,比如我负责交易的下单,而下单过程中有优惠的业务逻辑,此时需要考虑UMP系统挂掉,不会影响用户下单(后面可以通过修改价格弥补),采用的方式是,如果优惠挂掉,重新渲染页面,并增加ump屏蔽标记,下单时会自动屏蔽ump的代码逻辑。 另外还会记录ump系统不可用次数,一定时间内超过阈值,系统会自动报警。
3.第三方系统可能会不稳定,存在接口超时或宕机,为了增加系统的健壮性,调用接口时设置超时时间以及异常捕获处理。
4.做好容量规划、系统间强弱依赖关系梳理。
5.早期的订单采用oracle存储,随着订单的数量越来越多,查询缓慢,考虑数据迁移,引入历史表,将已归档的记录迁移到历史表中。当然最好的方法是分库分表。