gydtep 发表于 2021-2-9 10:20:50
线下业务和淘宝业务实际上使用同一个版本进行应用开发和发布,它们的隔离仅仅体现在流量和部署层面。比如,它们所使用的交易服务在开发层面就是完全相同的,仅仅在部署层面将它们的流量分离到不同的服务中。这样,在以业务维度做跨节点的流量绑定时,就需要将几个服务及其节点圈出来进行分流。gydtep 发表于 2021-2-9 18:12:44
蚂蚁通常按照特性将数据分为状态型数据和流水型数据。所谓流水型数据,即每出现一条数据都将其存入数据库中。比如,订单数据就是一种流水型数据,每出现一条新订单都被存入数据库。流水型数据的大部分业务类型是将数据插入到数据库。另一种数据是状态型数据,通常可以被修改,并且具有生命周期特征,比如会员信息。gydtep 发表于 2021-2-9 18:38:25
这两种数据在进行应用层容灾设计时需要不同的处理方式,状态型数据的容灾设计通常比较困难。比如,会员信息在出现错误时通常不能再写该数据,也不能让该用户重新注册一次支付宝。状态型数据的容灾设计需要以数据库不可靠为前提。数据库通常存在主备库,这两个库通常使用异步复制的方式来保证两个库之间的同步。gydtep 发表于 2021-2-9 20:12:53
然而,这种同步通常具有时延特征。当主库宕机时,如果FO库的版本比较旧,就不能直接将FO库作为主库,因为原来的主库上已经有用户修改的内容。gydtep 发表于 2021-2-10 07:17:05
基础设施同样也得到了很好的发展。最开始,单体架构是托管式的,通常将应用程序托管给电信运营商的某个机房,在物理机上运行单体应用。后来,基础设施开始向虚拟化演进,比如VMware等公司在物理机上构建虚拟化层和虚拟机,在虚拟机上运行操作系统。gydtep 发表于 2021-2-10 07:43:30
再后来,云化结合虚拟化技术和基础设施,在虚拟机上运行Docker进程,在Docker进程中运行应用程序。现在,根据云通未来的理念,包括蚂蚁在内的很多公司都在实现上云。gydtep 发表于 2021-2-10 08:39:35
模仿是高效的学习方式,机器学习本质上也是从人类的经验中模仿。在更多领域内实践,形成更多的样板工程是做好应用的重点事项。要有清晰明确的业务领域版图、技术领域版图、工程领域版图,通过涂色的方式,一点点在版图上扩大应用的领域。gydtep 发表于 2021-2-10 18:24:29
对算法有兴趣的同学可以Google一下遗传算法和蚁群算法等,你会发现凡是鲁棒性很强的算法都超出我们的意料,说简单点儿就是人很难总结提炼出这些算法背后的模式和思想,但是,这不妨碍我们写出遗传算法和蚁群算法去在模拟或现实的环境中训练出这些具备鲁棒性的模式和算法,这种写程序的方法本来就很鲁棒了。回忆一下,以往我们在写代码的时候都是想清楚了再写,今天,用智能化思维解决问题的时候想不清楚就能写代码,这种软件开发的方式还不够鲁棒么?gydtep 发表于 2021-2-10 19:12:53
今天在面对服务端高可用问题的时候,至少10年前我就跟同事讨论过系统的“自愈性”问题,10年过去了,讲真没几个公司接近这个目标,然鹅,今天用智能化思维就可以做到!我先从智能化思维的进化性讲起,最后来分享一下我对系统“自愈性”的一些探索和思考。gydtep 发表于 2021-2-10 19:50:26
智能化思维的进化性体现在我们解决问题的方式上,以往在开发之前就确定了解题思路,开发过程中把解题思路实现掉,说白了就是Hardcode。在面对超出灵活性设计的问题时,我们还是要去写新的代码,不断给自己之前所谓的“解题思路”打补丁。