负载均衡算法
- 轮询
- 加权轮询
- 随机算法
- 最小连接数
- hash 根据客户端ip计算出hash值,hash%2取模来决定分发目标
数据库演变
1. 数据库性能提升
1.1 方案1: 引入搜索引擎:
- 提高检索速度
- 减轻读数据库的压力
- lucence,solr,elk
- 索引构建:
基于原始数据构建索引
全量构建->第一次构建
增量构建->增量同步
非实时(异步/定时任务)、实时
1.2 方案2:缓存
- 缓存: 为了降低低速设备和高速设备间的差异。
- Nosql存储或其他存储方式
Nosql:hbase、mongoDB、Redis....
其他缓存:浏览器缓存、应用缓存、db缓存、cpu缓存,文件存储,etc
2.分布式数据库
2.1 事务的作用?
2.2 分布式数据库:
通过分库分表实现数据库拆分:
根据服务特性(业务量、类型etc)分别配置数据库性能
应用的演变
传统单应用的问题:
- 部署和维护困难
- 业务耦合度很高
- 性能瓶颈
测试
1. 应用根据功能模块拆分:
1.1 如:会员服务、交易服务、商品服务
RPC在分布式中的作用?
1.2 服务分块
优势:
- 专人维护专门服务
- 根据不同的吞吐量要求,做针对性的扩容
劣势:
高可用方案
1. 单点故障
1.1 多机房部署
监控
1. 链路监控
2.硬件监控
cpu、内架构存、磁盘
架构的发展过程
1. SOA-ESB
- 客户端1、客户端2....
- ESB:
服务的通信、发现
协议转化
安全
限流
- 服务端集群
2. 微服务
注册中心:eureka、zookeeper、consoul
3. 容器+k8s调度
4. serviceMesh(服务网格)
sidecar解决了:服务熔断、调用、发现,负载均衡
分布式架构的发展演进
原文:https://www.cnblogs.com/initx/p/11257128.html