zoukankan      html  css  js  c++  java
  • 系统架构--逻辑层

    逻辑层职责:

        负责整个系统 中业务逻辑的处理。

    逻辑层架构特点:

        逻辑层业务复杂;

        设计方式:

        1、All In ONE方式:所有业务一个整体、一个文件、一个类里。

            特点:简单,适合业务量小;

            问题:耦合性严重;文件内容复杂、开发维护代价高、牵一发动全身;

            适合场景:创业期、业务不复杂;

        2、业务垂直方式:按业务拆分

            特点:业务独立、耦合性降低、业务间开发互不影响、开发效率高、运维相对简单;

            缺点:业务上仍是一个模块;编译成本高;一个业务修改需重新上线;重启影响所有业务;

            适合场景:业务需求变化较大的互联网公司。

        3、业务(物理)垂直划分方式:

            特点:每个业务 形成一个独立的业务模块(或进程);

            优点:业务间完全解耦,互不影响;模块独立;单独开发、上线、运维;效率高;

        

        无状态业务逻辑层:

            什么是无状态:

                系统不存储业务的上下文信息;

                多模块(子系统)之间完全对称;

            关键特点:

                不保存请求状态;不保存数据;

                所有业务逻辑层服务器完全对称;

                高可用:请求提交到任意可用逻辑层服务器,部分宕机仍可用;负载均衡。

            负载均衡:

                可用状态实时监测机制;

                自动转移失败任务的机制;

                流量和数据分摊机制;

                心跳检测机制;

                服务器恢复可用后自动重连机制。

        业务逻辑层的纯异步调用:

            什么是同步:发出一请求调用时,在无结果返回前不进行一步处理,形成线程阻塞;

            什么是异步:调用发出,调用者立即返回。结果完成后,通过状态\通知和回调来通知调用者。这是非阻塞模式。

            异步调用特点:非阻塞不需等待,CPU利用率高,性能高;吞吐量高;  缺点:实现成本稍高;

            异步调用方案:

    1. 消息队列方案一:通过消息队列实现异步调用;

      消息队列:具备缓冲、持久化、解决异步;

            异步调用场景:

            阻塞I/O模型:

            

            轮询非阻塞I/O模型:

            

            I/O复用模型:

            

             复用模型适用于多连接

        

        逻辑层分级管理

            硬件分级:

                核心系统—使用好的机器

                边缘系统--使用差的机器

            部署层面:

                服务部署隔离;

                避免故障带来的连锁反应;

                核心系统部署在物理机上、不同的机房;

                边缘系统部署虚拟机或公用机器;

            管理分级:

                --监控分级层面:

                    

            响应分级:

                开发响应迅速;上线响应迅速;运维响应迅速;上线问题处理迅速。

            设置合理超时:

                超时时间应是平均响应延迟的2倍,避免过长时间等待。

                响应延迟高,超时时间设置长些(比如3S);

                响应延迟低,超时时间设置短些(比如1000ms);

            下游请求超时后,业务层根据预设的调度策略;

            重试次数:一般3次,多次无好处。

        业务逻辑层服务降级设计:

            降级原因:网络高峰期,并发量大,服务能力有限;性能下降甚至服务宕机,系统雪崩等;

            怎么办:服务降级。

            策略:保证核心服务可用;非核心服务弱可用,甚至不可用;

            降级设计方案:拒绝部分请求、关闭请求。

                拒绝部分请求:拒绝低优先级服务调用;减少服务调用并发数;

                         队列方式:入队、出队时间,超出一定时间就丢弃;

                         关闭部分服务:比如非核心服务直接关闭、业务逻辑层

        服务器幂等设计:

            请求失败后,会继续重试。

  • 相关阅读:
    Java代码:response压缩响应
    SpringBoot框架:第一章:基础配置和介绍
    asp.net 发送email
    .NET环境下水晶报表使用总结
    ASP.net(c#)生成条形码
    表格操作类(添加,删除,排序,上移,下移)
    NET email
    C#如何打印条形码EAN13码
    在asp.net中备份还原SQL Server数据库
    配置SQL2000数据库发送邮件
  • 原文地址:https://www.cnblogs.com/xiwang6428/p/6027319.html
Copyright © 2011-2022 走看看