`
fujohnwang
  • 浏览: 156309 次
社区版块
存档分类
最新评论

Simple, Yet Powerful系列之“隔离”

阅读更多

    隔离的概念其实很简单, 但越是简单的东西, 就越不能小看。应用得当的话, 可以让我们的系统“天生丽质”, 一出生就在某些方面领先他人一步, 不信, 咱上眼瞧...

隔离以提高系统的容灾
    部门本来有一个项目可以满足其它部门的需求, 但一些架构师不想使用现有的这个项目,而要另起炉灶, 其中的一个原因是某个应用如果突发状况致使统一的服务down掉, 那么使用统一服务的其它应用也将受牵连, 让我们来看一下为什么会出现这种情况。

图1
   
    显然, 按照这样的部署, 以上架构师提出的反对意见是说得通的。但这并不应该成为不使用现有这一项目的根本因素。因为, 我们完全可以通过调整部署来规避以上问题:

图2

    现在, 即使某个应用将它对应的服务搞死, 其它应用和他们相应的服务也不会受到牵连。 通过隔离, 我们系统从一开始就具备了一定的容灾能力。

NOTE:所以,提出隔离以提高系统自身的容灾能力的反对意见, 这是可以接受的, 但如果是针对图1的部署提出这样的反对意见, 那就说不过去了, 因为即使是使用独立部署的服务, 同样可以通过调整部署结构来达到同样的目的。其实, 引入了过多的服务器增加了成本这样的异议或许更有说服力一些。 毕竟,如果其它方式能够达到同样目的, 却不需要引入更多服务器的话,这样的解决方案一定会比最初的方案更有吸引力一些。

    我不确定优雅降级这个概念是不是ebay第一次提出来的, 反正我是几年前从它的架构PPT中第一次听到这个名词。系统的优雅降级意味着当系统的某个功能或者节点之类失效或者服务能力丧失之后, 整个系统可以优雅的平缓的降低服务质量, 但不能完全丧失服务能力甚至是崩溃掉。要达到这个目的, 显而易见的方法就是剥离“坏细胞”, 隔离它, 以避免其对周边甚至整个系统造成进一步的创伤。
    这里, 隔离的概念又一次彰显威力。

    其实, 不光是在我们的软件系统设计领域, 在其它领域的设计中, 隔离的理念也同样被使用。
    比如, 船舶或者潜艇的涉及中,各种舱室的设计尤其是密封舱的引入, 其实都是通过隔离来保证整艘船只的容灾能力。即使在舰只被鱼类或者炮弹击中, 只要一定数目的密封舱可以存留, 那舰只就可以避免沉没的命运。
    再比如, 坦克的弹_药仓和成员仓通常在设计和实现上也是隔离的, 即使弹_药仓不幸中弹, 引起的爆炸也不至于波及到成员仓中同车成员的安全,伤害被隔离在一定的范围之内不至于扩散。
    说了这些多, 实际上就一个意思, 隔离, 可以帮助我们提高整个系统的容灾能力, 该用当然就得用咯, 又不是什么复杂的概念, 是不?

隔离以规避状态的冲突
    事务的隔离级别大家应该不陌生吧?那它的作用是什么那?我知道, 把它归到并发控制策略那边或许更合适一些, 可我这里要说隔离, 所以, 我就死拉硬扯地, 把它先暂且划归这里一会儿吧。 通过事务隔离级别,我们可以控制数据的可见性, 从而在一定程度上规避共享状态地某些冲突, 或者说即使有冲突, 我们也可以按照预先设定地策略进行规避(MVCC), 但扩展来讲,如果我们能够将某些关注点从一开始就隔离开来的话, 那也就从根本上规避了某些状态地冲突, 至于相应地, 系统更易于管理和维护,以及更加易于扩展之类的好处, 那自然而然就都随之而来了。 这么“一石多鸟”的事情, 可能的情况下,应该多为才对。

结束语
本来我还想胡搅蛮缠一下扩充点儿篇幅, 想将“关注点/功能/服务/系统”的治理和维护也纳入道这个topic下, 但发现“隔离”和”分离“语意上可能还是有些差异的, 所以就此作罢, 先写一部分确定的内容吧!

  • 大小: 35 KB
  • 大小: 50.2 KB
0
0
分享到:
评论

相关推荐

    呼延:Simple Yet Powerful Hadoop

    该文档来自于Schmap公司技术副总裁呼延在“我的未来无限可能”——CSDN高校俱乐部2013年北京地区巡讲第二站的演讲,呼延用通俗的语言简要了Hadoop的核心组件HDFS和MapReduce的工作原理。

    Extremely_simple_yet_powerful_header-only

    Extremely_simple_yet_powerful_header-only_C++_plot_matplotlib-cpp_C++_plot_matplotlib-cpp.zip

    Simple and powerful data access for .NET with Entity

    Simple and powerful data access for .NET with Entity

    Dbus -The Smart-Simple-Powerful IPC

    D-Bus is an inter-process communication (IPC) system that helps applications communicate with one another. This article explains D-Bus and talks about nifty tips and tricks to play with...

    SIMPLE算法-MATLAB.zip_simple_simple matlab_simple 算法_simple-matlab

    SIMPLE(Semi-Implicit Method for Pressure-Linked Equations)算法是一种在计算流体动力学(CFD)中广泛使用的数值方法,用于求解 Navier-Stokes 方程。MATLAB 是一个强大的数学计算和数据分析环境,非常适合进行...

    GOT SIMPLE系列主机使用说明书.pdf

    GOT SIMPLE系列主机使用说明书.pdf GOT SIMPLE系列主机使用说明书.pdf是工控领域的一份重要文件,旨在为用户提供GOT SIMPLE系列主机的安全使用指南。本手册主要涵盖了GOT SIMPLE系列主机的安全注意事项、设计注意...

    方腔驱动流源代码(SIMPLE算法).rar_simple 方腔流_simple 算法_方腔simple_方腔流_驱动流

    《方腔驱动流源代码基于SIMPLE算法的深入解析》 在流体力学领域,SIMPLE(Semi-Implicit Method for Pressure-Linked Equations,压力关联半隐式方法)算法是一种广泛应用于求解Navier-Stokes方程的数值方法。它在...

    SIMPLE—nonstruction_CFD_Fortran_simple算法_simple_simple算法_

    **Fortran实现**:SIMPLE算法通常用编程语言实现,Fortran作为科学计算领域常用的语言之一,因其高效的数组操作和向量化特性,非常适合处理这类问题。在Fortran中,需要定义数据结构来存储网格信息、速度、压力等,...

    Dapper.SimpleCRUD

    **Dapper.SimpleCRUD** 在保持这一优势的同时,通过提供一系列便捷的方法,使得执行基础的数据库操作变得更加直观。 以下是**Dapper.SimpleCRUD** 提供的一些关键功能和知识点: 1. **Insert()** 方法:允许开发者...

    unity assert server

    Unity Asset Server is is a simple yet powerful version control server for game assets and scripts 提交管理unity3d工程

    碰撞检测包SWIFT++

    Provided is a simple yet powerful API. There are many settings available but the basic principles are rather simple and straightforward. In addition, SWIFT++ is a test bed for active research in ...

    Simple算法算例

    SIMPLE(Semi-Implicit Method for Pressure-Linked Equations)算法是一种在计算流体动力学(CFD)中广泛使用的数值方法,用于求解连续性方程、动量方程以及能量方程等流体流动问题。这个算法的主要特点是将压力...

    Simple Waypoint System 5.4.3.rar

    Simple Waypoint System是一款针对Unity引擎的轻量级插件,它允许开发者创建一系列路径点,并让游戏对象沿着这些点自动移动。这种方式在实现AI角色移动、巡逻路线设定、物体自动导航等场景中十分常见。 2. **核心...

    Vibration.zip

    Vibrations is a simple yet powerful solution to add vibrations and haptic feedbacks to your PC, console, iPhone or Android games.

    Nice Vibrations v3.4.unitypackage

    Nice Vibrations is a simple yet powerful solution to add vibrations and haptic feedbacks to your PC, console, iPhone or Android games.

    simpleaudio-1.0.4-cp36-cp36m-win_amd64.zip

    《简单音频处理库SimpleAudio在Windows x64平台上的安装与使用详解》 在现代软件开发中,音频处理已经成为一个不可或缺的部分,无论是游戏开发、多媒体应用还是教学软件,都需要与声音进行交互。在这个背景下,...

    Learning Ratpack: Simple, Lean, and Powerful Web Applications

    Learning Ratpack: Simple, Lean, and Powerful Web Applications 2016 | ISBN: 1491921668 | English | 368 pages | EPUB | 5 MB Build robust, highly scalable reactive web applications with Ratpack, the ...

    Amazon simple DB guide

    亚马逊简单数据库(Amazon SimpleDB)是一种无模式的数据存储服务,是亚马逊云平台(Amazon Cloud Platform)开发中的一项技术。它允许用户在云中存储、查询和管理结构化数据。以下是对该文档所涉及知识点的详细解析...

    simplecalendar.js记录事件的日历插件

    《深入解析simplecalendar.js:构建记录事件的日历插件》 在现代网页设计中,日历插件已经成为不可或缺的一部分,它能帮助用户直观地管理时间安排和事件记录。"simplecalendar.js"是一款轻量级、易用且功能丰富的...

Global site tag (gtag.js) - Google Analytics