主页 > 创业  > 

【软件架构】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)完美封装变化

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

构建抽象层、实现层

参考装饰器模式

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

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

5、安全性

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

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

6、规模化

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

大数据治理

标签:

【软件架构】02-复杂度来源由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【软件架构】02-复杂度来源