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、规模化
量变引起质变,大规模部署引起的运维、监控复杂度不断增加
大数据治理