zookeeper集群+服务集群+nginx负载均衡

上一篇文章我们讲了springboot+zookeeper+dubbo(https://blog.csdn.net/zjcool2012/article/details/113188910),我们搭建了一个基础的dubbo项目;

但是我们会想到,真实的生产环境,保证服务高可用肯定不是这样的架构,这就得提到分布式和集群了。

单台服务器提供的能力有限,且一但宕机整个服务就不可用了。于是,分布式架构,集群部署应运而生。

1.zookeeper集群

dubbo的使用便使zookeeper注册中心的存在至关重要,一般来说,zookeeper宕机不会影响服务的正常调用,但是新的服务提供方和消费方便无法加入,毕竟注册中心已经宕机了。于是,多台zookeeper服务的集群部署也是必要的。

2.服务集群

此处可本地模拟多个服务提供方和多个服务消费方。

2.1 多服务提供方

在上一篇文章的基础上,重新引入一个模块,zj-service-two。代码可直接复制zj-service,userService的实现类中可稍作修改,区分zj-service即可。启动后,dubbo-admin后台可看到,服务提供方变成了两个。访问client的接口,会分别访问不同的服务方。dubbo-admin后台还可以调整服务提供方的权重(dubbo作负载均衡),用于不同流量的分配,和大多数集群部署的原因一样,一般用于服务器能力不均调整使用。

2.2 多服务消费方

在上一篇文章和前一节的基础上,重新引入一个模块,zj-client-two;代码可直接复制zj-client,接口类中可稍作修改,修改端口号,这样两个不同端口的接口请求相同的服务,也是按权重分别访问到服务提供方。

如 启动 client和client-two
http://localhost:8085/tthttp://localhost:8086/tt 其实是相同的服务。

整个项目的模块如图所示

3.nginx负载均衡

本地模拟nginx负载均衡,即通过反向代理,访问nginx,由nginx分发到不同的服务消费方。

nginx本地部署大家可以参考这个 https://www.cnblogs.com/taiyonghai/p/9402734.html,写的很详细了。

然后大家可以尝试下,nginx配置好后,通过自定义的域名分别分发到client和client-two的示例接口。

nginx-conf 配置文件如下

upstream localhost{
		server localhost:8085 weight=1;
		#第一个站点
		server localhost:8086 weight=3;
		#第二个站点
	}

    server {
        listen       8800;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://localhost;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

此处也放上自己本项目的示例代码,本地部署的相关问题可留言咨询。本文都是自己的浅显见解,如有不对的,请大家指正。
https://download.csdn.net/download/zjcool2012/14953804

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值