第一个问题京东采用弹性架构的方式解决。当服务器的资源利用率超过一定阈值时动态扩展虚拟机。举一个例子:如在5分钟内资源使用率达到某个设定的阈值时,就会自动生成几个虚拟机,虚拟机里会自动部署好相关的应用程序,在自动发布前有一个TestServer来监测生成的虚拟机是否可以对外提供服务。云存储和云计算是分离的,云存储使用一个磁盘阵列来实现。
第二个问题京东采用桌面云的方式来解决。首先分配一批虚拟桌面池,然后客服通过权限登陆虚拟桌面,如果没有则再分配一批,虚拟桌面和人不是一一对应的,用完后就回到池子里别人可以继续申请使用,这样可以大大节约资源,当一台机器中病毒后只会影响到子网。
大对象的存储方案:大量用户登陆到聚划算,聚划算需要通过IP定位到用户的城市,像IP库这种非常大的对象,如果使用Redis存的话会有很高的网络开销,所以聚划算将这些大对象存在本地JVM的内存中,然后在不同的服务器之间通过消息同步大对象里的数据。
分布式任务系统:通过一个第三方服务器来管理所有的任务,使任务能分别在不同的机器上运行,可以通过锁来实现,拿到当前任务锁的机器才能执行当前任务。
缓存击穿攻击问题:如果有用户访问淘宝不存在的产品id,那么系统每次都会绕过缓存直接访问数据库,解决方案是可以通过在缓存里标示该商品不存在来防止。在微博里校长回复说,CDN也有这样的问题,比如使用404攻击,通常类似的问题5-20秒的cache就足够了。
冯大辉说道:。
初去丁香园,发现系统做得很烂,经常不能访问。作为CTO,面临的第一个问题是选择,重新做一套?还是基于开源的论坛进行修改?还是基于旧系统修改?。
冯大辉最后选择在旧系统的基础上进行修改。基于两点原因,重新做不一定比旧系统做得好,其次业界比较好的开源论坛很难做二次开发。
整个演讲所传达理念是:。
CTO需要谨慎和专业,把一件技术吃透再运用。用数据说话,没有任何数据支撑,不要轻易做改版和新功能。要快,避免大团队,小团队攻坚,要敏捷但不要照搬敏捷的步骤。
让团队更敏捷。让大家坐在一起,让团队成员在团队之间轮岗,减少会议,减少沟通成本。
不要轻易用新技术。因为业界大多数成熟的公司并不是不断的用新技术,而是把已有技术用得非常登封造极,新技术也会逐渐变成老技术的。
最后,不想做CTO的架构师不是好程序员。
妥协等于尊重,因为别人说的东西里有值得学习的地方。有好的想法并且能从中盈利才算创新。