【软件架构】02-复杂度来源

1、性能

1)单机

受限于主机的CPU、网络、磁盘读写速度等影响

在多线程的互斥性、并发中的同步数据状态等;

扩展:硬件资源、增大线程池

2)集群

微服务化拆分,导致调用链过长,网络传输的消耗过多。

集群下的任务分发

分布式下的任务拆分、合并

扩展:服务、主机的水平扩展

常见的系统性能列表:

1、Nginx 负载均衡 3万

2、LVS 十万级

3、F5 百万级

4、Memcache 读写TPS 5W

5、Redis 5-10万

6、kafka百万级,

7、zookeeper写入读取2万以上

8、http请求访问大概在2万左右

9、Tomcat 2000左右并发;最大连接数为200

10、RocketMQ 10WQPS

2、高可用

1)计算高可用

冗余:通过水平扩展计算节点,每个节点都是无状态,从而达到分摊任务的目的

2)存储高可用

由于网络延迟、主机故障等问题,导致数据产生最终一致性问题。

主备模式:主节点宕机会导致不一致

双主模式:要求同步双写主节点

独裁:一主多从,要求从节点向同一个主节点发起请求,由主节点决策,典型代表有Zookeeper

协商:由多数投票通过,设立主节点。其他节点作为备节点

民主模式:各节点都参与投票,获得多数票的作为决策。存在脑裂问题(要求多数票必须大于总节点的一半以上)

3、可扩展

1)成功预测变化

多数据源的兼容、本地存储/网络存储/分布式存储、国产化服务器兼容等

2)完美封装变化

分解 变化层、稳定层,双方对外暴露接口,提供调用

构建抽象层、实现层

参考**装饰器模式**

  1. 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。
  2. 具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。
  3. 抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
  4. 具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。

4、低成本

成本与高可用、性能成相反作用,以附加的约束条件,作为备选考虑

5、安全性

功能安全:XSS、SQL注入攻击、CSRF、DDos攻击等

架构安全:地址白名单、访问鉴权、数据/权限分组隔离、防火墙等

6、规模化

量变引起质变,大规模部署引起的运维、监控复杂度不断增加

大数据治理

相关推荐
大咖分享课9 天前
如何设计一个软件项目管理系统:架构设计合集(六)
软件架构·系统设计·数据库设计·技术选型·项目管理系统设计
在未来等你22 天前
设计模式精讲 Day 22:模板方法模式(Template Method Pattern)
设计模式·模板方法模式·软件架构·java开发·面向对象设计·设计模式实战·java应用开发
在未来等你1 个月前
设计模式精讲 Day 1:单例模式(Singleton Pattern)
java·设计模式·面向对象·软件架构
摘星编程2 个月前
原型模式深度解析:Java设计模式实战指南与克隆机制优化实践
java·设计模式·性能优化·原型模式·创建型模式·软件架构·对象克隆
摘星编程2 个月前
抽象工厂模式深度解析:从原理到与应用实战
设计模式·抽象工厂模式·源码分析·软件架构·实战案例
编程在手天下我有3 个月前
REST 架构详解:从概念到应用的全面剖析
计算机科学·软件架构·网络架构·分布式系统·web 开发·api 设计
编程在手天下我有3 个月前
软件架构设计:MVC、MVP、MVVM、RIA 四大风格优劣剖析
软件开发·编程技术·软件架构·技术对比
编程在手天下我有3 个月前
构件与中间件技术:概念、复用、分类及标准全解析
软件工程·软件架构·分布式系统·软件复用·中间件技术·编程语言与技术
hope_wisdom4 个月前
实战设计模式之迭代器模式
设计模式·迭代器模式·软件工程·架构设计·软件架构
youngerwang4 个月前
【聊聊层次式架构设计:像搭乐高一样构建软件大厦】
软件架构·层次式架构设计