如何设计一个优秀的分布式系统?重要因素、工具、策略都在这里
令人惊讶的是,许多开发人员在知道具体需要什么之前就开始构建东西。通常情况下,这意味着他们构建了不必要的功能,浪费了时间。引用Yogi Berra的话就是:“如果你不知道自己要去哪里,你最终会去往别的地方”。 首先需要知道要做什么,已经有哪些工具和服务可用,以及使用最终解决方案的人应该看到什么。 交互和批处理 快速响应和低延迟常常是我们的需求,因此比较明智的做法是考虑在用户等待时应该做什么,以及可以将什么放入批处理过程中,而这些批处理执行在事件驱动或时间驱动的计划中。 在考虑了功能的初始分割之后,比较好的做法是计划何时需要执行后台、批处理进程、这些功能操作哪些数据、以及如何确保这些功能是可靠的、何时可用以及如何防止数据丢失。 功能应该托管在哪里 只有在详细计划了“完成什么”之后,才应该考虑“在哪里”以及“如何做”。开发人员有各自最喜欢的工具和方法,并且经常会调用它们,即使可能不是最佳的选择。Bernard Baruch说过:“如果你只有一把锤子,那么所有东西看起来都像钉子”。 了解企业开发的企业标准也很重要。仅仅因为工具目前很流行就选择它是不明智的。这个工具可以完成这些工作,但是需要记住的是,它构建的所有东西都需要维护。如果你构建了一些只有自己才能理解或者维护的东西,那么在你职业生涯的剩下时间中,你可能已经把自己束缚在这一功能上了。我自己也有过这种经历,自认为自己创建的功能工作正常、轻量而且可靠。但在我离开那家公司后的十年里,我不断地收到关于这些功能的电话,因为后来的开发人员无法理解这些功能是如何实现的,而我写的文件又早就被丢掉了。 在分布式解决方案中,每个功能或服务都应该分别考虑。该功能应该在企业数据中心?还是使用云服务提供商?还是两者兼有?另外还要考虑到在某些行业中存在法规要求,这些要求指导我们选择需要在何处以及如何维护和存储数据。 其他需要考虑的东西还包括:
(编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |