• 关于后端系统架构的思考随笔


    关于后端系统架构的思考随笔

    // 前端 - > 服务端(网关、具体服务) -> 数据层

    个人看了一些书,写了一些代码,也做了一些架构工作。

    系统架构可以通过业务非业务两个方面来结合起来考虑。

    业务方面:

    1. 系统具体提供什么服务

    • 具体做哪些业务
    • 如何提供服务

    2. 业务模块划分

    • 处理模块与模块之间的依赖:树性结构、网状结构
    • 每个模块是否做到了高内聚、低耦合

    3. 外部入口(API或页面)是如何设计的

    • 调用是否方便
    • 业务流程是否流畅

    4. 业务可扩展性

    • 能否快速响应新增业务需求,尽量对可能变动的数据做成
    • 良好的业务抽象

    非业务方面:

    1. 可用性:

    1.1 服务可用性

    • 防单点:核心服务必须多机房部署,每个机房至少保证有2台服务。多个机房的多台机器同时挂掉可能性太小了。
    • 系统监控:又分为业务监控和服务器性能监控。业务监控主要是监控服务的TP99、可用率、调用量等;服务器性能监控主要是对服务器心跳、CPU、内存、磁盘、网络做监控,比如CPU利用率,内存利用率及是否吃SWAP,磁盘IO和剩余空间,网络丢包、连接数、重传比率等。当发现问题,还有报警。
    • 服务治理:
    • 服务熔断降级:Netflix的hystrix是一个可以参考的实现,但是基于命令模式对业务代码的入侵性比较强,所以根据具体业务特点,自己实现一些开关也是能满足需求的。
    • 过载保护:类似于信号量的,控制能同时提供服务的并行规模。限速器也能实现此功能。

    1.2 数据可用性

    • CAP原理
      • C:ZK、ETCD、CONSULE
      • A:多副本:一主多从架构
      • P:多机房,根据域名访问,失效漂移
    • 灾备
      • 数据离线备份、数据多写

    1.3 工程质量:

    • 代码Review
    • 严谨的发包流程
      • 代码合并
      • 正式版本和快照版本的区分
      • 灰度发布
    • 测试质量
      • 单元测试
      • 自动化测试

    2. 安全性

    2.1 漏洞性质:

    • SQL 注入
    • Cookie伪造
    • XSS跨站
    • CC攻击
    • DDOS攻击

    2.2 系统权限设计

    • 业务数据权限控制

    2.3 数据加密

    • 对称加密
    • 非对称加密(加盐)

    3. 性能

    3.1 集群负载均衡

    • Nginx反向代理
    • DNS轮询
    • RPC服务轮询

    3.2 MQ

    • 解耦
    • 异步
    • 削峰

    3.3 缓存

    • 堆内缓存
    • 堆外缓存
    • 一致性哈希缓存
    • 分布式主从架构缓存

    3.4 代码优化

    • 并发
    • 算法优化

    3.5 吞吐性能

    • 大文件分割存储

    3.6 JVM层面

    • GC

    3.7 数据库层面

    • 索引
    • 分库分表

    4. 水平伸缩性

    4.1 服务器无状态

    4.2 容器自动缩容扩容

  • 相关阅读:
    爬取诗词名句网数据并做简单数据分析
    python3 协程Unclosed client session client_session: <aiohttp.client.ClientSession object at 0x0918BAC0>
    scrapy框架中多个spider,tiems,pipelines的使用及运行方法
    python爬虫模拟登录的图片验证码处理和会话维持
    python使用selenium驱动chromium防止浏览器自动升级失效!
    爬虫篇-博客园搜索爬取
    复合索引,不走索引情况
    去掉Oracle连接超时限制
    C# 正则表达式
    Clean Code
  • 原文地址:https://www.cnblogs.com/liushijie/p/8792296.html
Copyright © 2020-2023  润新知