为什么每个软件人都要懂点系统架构?

 任何人写的代码,终究要在生产环境上运行。

01

时刻以生产环境为本

我们写的代码,终究是要在生产环境上跑的。生产环境和我们平时面对的开发环境、测试环境可不一样。生产环境上的系统必须维持业务的连续性

要做到这一点,我们必须要避免单点故障。也就是说,系统服务不能因为某台服务器、某个中间件等出现故障而中断。

系统也必须要有容灾设计,当主机房出现全面故障时,系统服务也能切换到其他机房,继续提供服务。平时也要定期进行切换演练。

系统还必须要有各种的监控和预警,在出现故障时让我们掌握先机,及时处理,避免或减少用户或业务的影响或损失。

为了应对随时变化的访问量,系统必须有一定的弹性。在访问高峰时顶得住,在访问低谷时能节省资源,从而节省成本。

另外,性能、安全等的非功能性需求都要一一满足。

要做到以上要求,我们在做软件设计时,就要以终为始,必须考虑到以上要求和系统在生产环境上运行时的各种情况。这些问题有些需要在软件设计、代码上处理,有些需要通过架构设计来处理,甚至需要代码和架构协同处理。

懂点系统架构,就能帮助我们在软件搭建初期把这些因素考虑在内。软件虽然是可变的,但变更越晚,成本越高,风险也越高。所以最好把这个过程提前。

应对前面提到的要求,我们在做系统设计、架构设计起码需要做到:

  • 避免单点故障

有两种方案:

  1. 故障转移(Failover)——把系统部署到两台服务器,其中一台服务器是主服务器,所有用户请求默认发到这台服务器;另一台服务器是备用服务器。一旦主服务器出现故障,所有用户请求切换到备用服务器,继续提供服务,为修复主服务器故障争取时间。

  2. 双活或多活(onsite resilience)——把系统部署到两台服务器,并把用户的请求均衡地分配给这两台服务器分别处理,那么不光系统的处理能力提升了,而且即使其中一台服务器出现故障,另一台服务器依然可以支撑服务,处理用户请求,这种设计叫“双活”。如果是通过多台服务器来实现这种设计,就叫“多活”。“双活”或“多活”的实现,往往需

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值