一:垂直扩展
1 负载均衡:
算法:轮询、最小连接数、随机轮询、加权轮询、hash(通过IP生成编码,链接到服务)
2 Session共享
a:session复制(消耗更多内存)
b:session共享,统一存储(如存在redis)
c:无状态共享,生成一个标识,token,但存在安全问题(因标识放在客户端)
3 数据库性能问题
1读写分离:读多写少
2分库分表-》历史库
数据同步:延迟(若不允许延迟,放redis),mysql-master/slave
应用对数据源路由:mycat(完全与应用隔离)/sharding-jdbc(代码配置)
4 NOSQL存储或其他存储方式
hbase:列存储;mongoDB:文本存储;redis:键值存储
浏览器缓存,cpu缓存,应用缓存,数据库缓存
文件存储:oss,hdfs...
5 分布式数据库
分表分库实现数据库拆分
a.分布式数据一致性问题:
spring cloud alibaba ->fescar(seata )/
RocketMQ->分布式事务解决方案
6 分布式使用原因
部署维护困难、业务耦合度高、性能瓶颈、测试困难
多机房部署、监控部署情况
SOA(面向服务架构)-ESB(企业服务总线,中心化) 处理:服务通信、发现,协议转换,权限,限流
微服务(出ESB):去中心化,通过客户端的代理实现负载及上述功能,拆分这些上述功能;服务器把服务注册到注册中心,客户端从注册中心拿到地址,然后客户端再访问服务。(业务角度分解)
serviceMesh