动态负载均衡有哪些实现方案?
何谓动态: (增加节点 调整权重 修改配置文件)
属于架构的知识: 传统的配置都放在项目中, 这样的化就有弊端(如果生产环境中发现配置文件配置有误), 重新修改项目配置文件, 重新打包
分布式领域: 分布式配置中心(配置统一管理) 扩展性及高
动态化: 可变化 灵活 Dubbo
2. 动态负载均衡 大型互联网公司中(动态配置), 如果需要频繁的发布版本, 提高扩展性 传统方式的Nginx配置负载均衡upstream扩展新的节点 要重启nginx服务器才能获取到最新的配置, 所以存不存在这样的一种方式, 在不重启nginx的前提下, 修改了upstream配置, 能实现动态获取nginx_upstream配置
upstream wwwbackend {
server 10.15.200.101:80 weight=1;
server 10.15.200.102:80 weight=1;
server 10.15.200.103:80 weight=1 backup;
}
server {
server_name www.example.cn;
access_log /dev/shm/www.example.cn.access.log main;
error_log /dev/shm/www.example.cn.error.log;
location / {
proxy_pass http://wwwbackend;
}
}
- 一台服务器专门的存放动态upstream配置服务器
- 可配置化: 灵活的扩展( 不要写死 ) 分布化配置中心 设置jdbc懒加载
一般常见如下三种方式:
1. Consul+Consl-template: 需要reload
2. Consul+OpenResty: 无需reload
3. Consul+UpSync: 无需reload
Nginx+Consul+UpSync: 实现动态负载均衡
实验思路:
每个知识点 哪个环节 及 其作用
Nginx: 反向代理和负载均衡
Consul: 实现分布式服务注册与发现功能(go)
UpSync:
微服务:
1)服务注册与发现应用场景: 微服务rpc远程调用(对服务实现服务治理(注册中心))
会员项目: 10.15.200.101
IP地址+端口号 (http://10.15.200.102:8081)
订单项目: 10.15.200.102:8081
注册中心: 专门存和IP地址和端口号
会员项目: vip.example.cn
IP地址+端口号 (http://order.example.cn)
订单项目: order.example.cn
SpringCloud: 支持zookeeper Eureka Cons