现代化团队协作开发中,需要拥有统一的开发规范,用于约束团队协作中的每个人,使得大家在同一个框架范围内向着一个统一的目标前行,避免团队成员因为各自的技术能力、项目经验的差异而在开发过程中输出与团队要求差异较大的代码。
最近团队中的一个运行时间数年、经手N多开发人员的项目,在数据量日益增大的今天频繁出现线上故障,每次经过排查,都能发现很多地方在开发相应功能时,受限于开发人员的相关能力导致表面上完成了相应的功能,但是实际上在未来的某个时机会因为一些因素触发问题,从而导致故障产生。
目前常见的问题,主要是中小型项目最常见的瓶颈所在-数据库
。大部分的CMS系统,其本身的业务逻辑对于计算方面的性能要求很少,通常都是围绕数据库表来进行的CRUD操作,从而实现一系列的业务需求。大部分的功能也都围绕数据库的SQL而展开。这点放在20年前,通过数据库的存储过程来完成业务的处理,客户端的用途仅仅只是一个视图的展示罢了;放眼今天,存储过程变成了应用系统执行SQL,仅是为了减少数据库依赖,视图换成了各式各样的前端框架。整体上其设计思路本质是没有任何变化的。
中小项目的CMS系统因为其围绕数据库进行开发,所以瓶颈也最终以产生自数据库。当数据库的单表数据量达到一个较高的量级时,就会产生因为SQL优化不好而导致的数据库资源占用过多。这种情况如果再叠加上系统的并发数量较高的情况,经常性会直接将数据库直接打死,从而导致整个系统不可用。
为了解决数据库瓶颈的问题,很多团队会引入缓存
中间件,从而降低数据库的压力。利用NoSQL数据库的天然优势,来实现热点数据的快速查询。但是缓存中间件不是万能的,同样因为团队内成员不合理使用缓存中间件,频繁读写大量无用数据,导致缓存中间件的带宽被跑满(阿里云10MB内网带宽),进而使得正常业务无法进行,最终压垮整个系统。
以上是最为常见的系统会发生的问题。当然他们的解决手段也多种多样,读写分离、分库分表、冷热分离等等手段都能解决具体的问题。但是,每当你引进一个新技术手段,就会引入更多的潜在风险,而本系列培训规范的目的,就是通过开发过程中的共识,来保证编写出的代码的可读性、稳定性、健壮性,从而降低相关故障产生的几率。
文章评论