如果您为轻松扩展设计分布式应用程序,或者您只是想利用Amazon,Google或Microsoft的任何新“云计算”产品,那么你通常最终会使用一些典型的概念或组件:系统架构图中的“云架构”概念
- 分布式BLOB存储(又名S3)
- 异步,耐久消息队列(又名SQS)
- 非Relational- /非事务数据库(像SimpleDB,Google BigTable,Azure SQL Services)
- 分布式背景工人池
- 负载平衡的,边缘的服务流程处理用户请求(通常虚拟化的)
- 分布式缓存(如分布式缓存)
- CDN(内容分发网络等的Akamai)
现在当涉及到使用这种模式的设计和草图架构时,有没有我可以使用的任何常用符号?甚至可以下载一些很酷的Visio模板? :)
它不一定是一个像UML这样的正式系统,但是我认为如果存在每个人都知道并理解的符号,比如我们常用的数据库或文档形状,那将会很棒。我认为不要将其与传统概念(如普通文件系统(本地或网络服务器/ SAN)或关系数据库)混合在一起非常重要。
简而言之,我希望能够通过查看系统体系结构概览图来得出有关应用程序的可伸缩性或数据一致性问题的一些结论。
更新:非常感谢您的回答。我喜欢在传统符号上放置一个小型“云符号”的想法。然而,为了防止有人找到特定的符号(可能在某本书中) - 或者上传了一些卷起来的Visio模板,我将此线程打开以防止;)
从高层次角度来看 - 为什么要划分这样的区别?数据库是一个数据库。我认为一个带有适当符号的“云”会让你意识到你的观点。更详细的观点 - 查看实际结构,将有N台机器联网。 – jim 2009-02-04 14:17:52
“数据库是一个数据库” - 我不这么认为。举一个例子,分布式数据库当然可以扩展得更好,但它可能不如事务数据库“确切”,它通常具有较少的功能(例如没有连接)等。 – realMarkusSchmidt 2009-02-08 10:02:44