哪做网站,新闻资讯网站备案,windows wordpress 轻量级,做宣传语的网站为什么需要隔离设计
隔离其实就是Bulkheads#xff0c;隔板。在生活中隔板的应用主要在船舱中进行设计#xff0c;目的是为了避免因一处漏水导致整个船都沉下去。可以将故障减少在一定的范围内#xff0c;而不是整个船体。 从架构演变来说的话#xff0c;大多数系统都是从…为什么需要隔离设计
隔离其实就是Bulkheads隔板。在生活中隔板的应用主要在船舱中进行设计目的是为了避免因一处漏水导致整个船都沉下去。可以将故障减少在一定的范围内而不是整个船体。 从架构演变来说的话大多数系统都是从一个系统进行拆分出多个子系统每个子系统之间通过异步通信、HTTP、RPC等方式去完成请求。当系统较多的时候本身就可以利用这种隔离机制去避免因一个功能导致整个系统的不可用避免出现多米诺骨牌效应。 具体的方式一是通过按照服务的种类来分离二是通过用户类别分离。
按服务的种类来做分离
类比一个互联网金融平台来说就可以划分成用户、订单、支付、三方系统、风控系统、大数据平台等。 而每个系统基本都会做服务冗余一般的话都是至少3台服务这样才可以做成高可用系统。这种从服务到数据库层面就可以完全隔离开。接入层应用层存储层。也禁止直接访问其他上下游系统的数据库进行数据的读取。最好是通过API的方式提供相关的数据。
虽然好处可以直接隔离开来但是如果想要获取多个数据的话需要访问多个系统进行获取响应时间会增加但是整体的吞吐量会提升。 并且多个系统之间的通讯不一定完全都是HTTP请求可能HTTP、RPC、MQ多种方式进行通信。所以梳理起来比较杂乱。
我实际的经验就是每个公司的落地方案都是不一样的基本都受限于早起的架构设计然后在此基础上进行迭代。 大多数公司都是基于这种服务种类进行隔离
按用户请求来做分离 对于付费类型APP比如视频网站电商网站 可以根据不同的用户进行提供服务比如VIP普通用户。VIP专属于特别通道而普通用户则直接进行共享同一套系统服务即使出现网站不可用也不会导致全部用户服务不可用。这种其实就是多租户模式。 对于多租户架构来说会引入一些系统设计的复杂度完全隔离资源比较浪费如果共享程序设计上会比较复杂。 实现方式的话其实就是服务是否共享数据是否共享。
1.完全独立的设计服务独立数据独立。2.数据独立服务共享。3.服务共享数据也共享。 可以看到如果服务和数据都独立那么隔离度和实现复杂度比较好但是占用成本和资源共享度比较高。如果是共享的话隔离度和共享低。开发难度比较高。 所以一般采用折中的方案采用服务共享数据分区。而今天可以采用虚拟化技术来实现物理隔离来降低成本。
隔离设计的重点
隔离设计需要考虑以下问题
**业务层面**我们需要对业务足够了解之后按照一定的拆分粒度进行设计系统系统过大或者过小都不好。**复杂度层面**无论是系统板块还是多租户的隔离都需要考虑系统的复杂度、成本、性能、资源使用的问题找到一个权衡的方案确定哪些不要哪些需要。**高可用设计层面**隔离也需要配置一些高可用设计方案比如 重试幂等限流排队降级熔断异步隔离等配套使用**运维层面**分布式系统的引入虽然提升的整体的性能和稳定性但是也因此带来了更多的问题比如系统间通讯、运维层面。因此需要配置自动化运维工具可以使用容器来管理。监控系统好的系统一定有一双眼睛可以实时监控系统的所有重要指标。这里多说一句有些人只关注系统的业务数据指标是否正常我觉得这并不够而要从系统的各个层面去观测。比如系统层面CPU、内存、磁盘、网络中间件层MySQL、MQ、Redis应用层JVM日志层面监控报警等多个角度去观测。
总结
好了今天主要介绍了弹力设计中隔离设计所谓隔离也不过是通过将系统间进行按照一定粒度拆分故障不会蔓延开来。然后聊了两种方式一种是系统板块另一种多租户方式。最后说了下隔离设计的重点。