您现在的位置是:主页 > 数据库技术 > 数据库技术

Spring Cloud集群怎么使用Zuul

IDCBT2021-12-25服务器技术人已围观

简介这篇文章给大家分享的是有关Spring Cloud集群怎么使用Zuul的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Spring Cloud集群使用Zuul 在前面小节的例子中,

这篇文章给大家分享的是有关Spring Cloud集群怎么使用Zuul的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Spring Cloud集群使用Zuul

        在前面小节的例子中,Zuul将请求转发到一个Web项目进行处理,如果实际处理请求的不是一个Web项目,而是整个微服务集群,那么Zuul将成为整个集群的网关。在加入Zuul前,Spring Cloud集群的结构请见图7-3。

图7-3 原来的Spring Cloud集群结构

        为微服务集群加入Zuul网关后,结构如图7-4所示。

图7-4 加入Zuul后集群结构

        在深入学习Zuul前,先按图7-4的搭建本章的测试项目。

集群搭建

        假设当前需要实现一个书本销售业务,在销售模块中需要调用书本模块的服务,用来查找书本,本小节案例以此为基础,建立以下项目:

    zuul-eureka-server:Eureka服务器,应用端口为8761,读者可以到以下目录取得源代码:codes\07\03\zuul-eureka-server。

    zuul-book-service:书本模块,属于服务提供者,提供“/book/{bookId}”服务,用于查找图书,最后返回Book的JSON字符串,应用端口为9000,代码目录codes\07\03\zuul-book-service。

    zuul-sale-service:销售模块,属于服务调用者,对外发布销售服务“/sale-book/{bookId}”,该服务中会调用zuul-book-service来查找Book,应用端口为9100,代码目录codes\07\03\zuul-sale-service。

            书本模块“zuul-book-service”发布的服务,仅返回一个简单的Book对象,控制器代码如下:

        @RequestMapping(value = "/book/{bookId}", method = RequestMethod.GET, 
                produces = MediaType.APPLICATION_JSON_VALUE)
        public Book findBook(@PathVariable Integer bookId) {
            Book book = new Book();
            book.setId(bookId);
            book.setName("Workflow讲义");
            book.setAuthor("杨恩雄");
            return book;
        }

            销售模块“zuul-sale-service”发布的服务,相关代码如下:

    @FeignClient("zuul-book-service") // 声明调用书本服务
    public interface BookService {
    
        /**
         * 调用书本服务的接口,获取一个Book实例
         */
        @RequestMapping(method = RequestMethod.GET, value = "/book/{bookId}")
        Book getBook(@PathVariable("bookId") Integer bookId);
    }
    
    @RestController
    public class SaleController {
    
        @Autowired
        private BookService bookService;
    
        @RequestMapping(value = "/sale-book/{bookId}", method = RequestMethod.GET)    public String saleBook(@PathVariable Integer bookId) {
            // 调用book服务查找
            Book book = bookService.getBook(bookId);
            // 控制台输入,模拟进行销售
            System.out.println("销售模块处理销售,要销售的图书id: " + book.getId() + ", 书名:"
                    + book.getName());
            // 销售成功
            return "SUCCESS";
        }
    }

    标签:

    很赞哦! ()

本栏推荐