zoukankan      html  css  js  c++  java
  • 第三篇:Spring Cloud client服务集群

    1.为什么要集群?

    eureka client相当于一个订单项目 放在tomcat中。

    客户端-->Nginx-->Zuul-->eureka client ,当(eureka client)在单节点的情况下,如果宕机,会影响到客户使用,这个时候需要一个备胎做替补。

    【奇思妙想】

    可以把马路当作一个模块【订单模块的class文件】,而路灯是tomcat,我在马路上操作的时候,你的路灯得亮着,也就是tomcat得是运行状态。

    如果你只有一个tomcat在运行,那么当路灯由于天气或者人为情况导致灭了,那么作为客户就不能在马路上行走。

     但是如果你一条马路上是有多个路灯,那么就有很好的替补机制,一个坏了没事,还有其他的路灯亮着,不影响人在路上行走。

    把马路看成模块,多条马路构建一个区域,这个区域就是系统,一个完整的生态圈。

    代码演示:

    package com.cohesion.rest;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class OrderController {
        @Value("${server.port}")
        private String port;
        
        @Value("${spring.application.name}")
        private String serviceName;
        
        @RequestMapping(value="/order/helloWord")
        public String helloWord() {
            String returnStr = "您访问的是:【"+serviceName+"】服务,【端口号】"+port;
            return returnStr;
        }
    
    }

    返回结果

    如果这个order服务的8081端口服务挂了,那么客户端去请求order【订单服务】的时候,就会出现异常。做的好的用【断路器Hystrix】,来进行没必要的资源浪费和等待。

    但是【断路器Hystrix】只能起到提供友好的客户体验和节省资源浪费&客户等待时间,并不能让客户继续操作下去。

    这个时候就需要集群来弥补这个操作,也就是服务从单节点变成多节点,当一个节点出现问题,会自动转发到没问题的节点中。从而让客户能继续在系统上操作。不过可能会出现慢的问题,这个时候就需要提供一个服务报警的功能,让运维人员知道情况,安排工程师去解决损坏的节点。

    现在我们来配置多个order模块。我的方法还是创建order项目,只是端口不一样。IDEA可以直接把一个项目配置成多个端口,如果用IDEA可以这样搞。

    如项目结构图,order是2个项目,已8081,一个是8082端口的服务,切换到注册中心服务,发现有2发order服务注册进来了。

     下一篇构建zuul路由项目,来演示多节点服务宕机,系统还能运行的案例。

  • 相关阅读:
    C# 验证IP地址、Email格式、URl网址
    如何创建、安装和调试Windows服务
    C#发送Email邮件方法总结
    C#调用java类、jar包方法。
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    在已经存在的表上创建索引
    Windows下的.NET+ Memcached安装
    把表从Access2007导出到Sql Server
    FusionCharts参数说明
    Sublime Text 3 之配置package control
  • 原文地址:https://www.cnblogs.com/sz-jack/p/9377318.html
Copyright © 2011-2022 走看看