美文网首页
SpringCloud使用Ribbon组件完成跨服务通讯

SpringCloud使用Ribbon组件完成跨服务通讯

作者: 沐文乘光 | 来源:发表于2019-07-16 17:55 被阅读0次

    Demo源码请从下面链接获取:

    https://github.com/pengpengeveryday/SpringCloudDemo

    创建cloud-base模块

    从maven中新建一个工程,取名RibbonDemo。其中的module name写为cloud-base。(为什么用maven而不用spring intiate 向导?这样粒度更细,向导其实也是对等于maven的操作。试了后就能体会得到,不再缀叙)。按照如下操作来:

    File->New->Project。弹出New Project对话框。在其中选中maven,直接点选Next。

    在接下来的对话框中填写下面内容,然后下一步。

    再接下来的对话框中填写如下内容,然后点击finish。

    最后intelij上展示如下图所示,pom.xml什么都没有。

    pom.xml of cloud-base

    cloud-base增加Spring cloud相关依赖项目,pom.xml内容如下。这样cloud-base就算是弄好了。

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>peng.cloud</groupId>

    <artifactId>cloud-base</artifactId>

    <version>1.0-SNAPSHOT</version>

    <properties>

    <java.version>1.8</java.version>

    <spring-cloud.version>Greenwich.SR2</spring-cloud.version>

    </properties>

    <dependencies>

    <dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

    </dependency>

    <dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

    </dependency>

    <dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

    </dependency>

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-test</artifactId>

    <scope>test</scope>

    </dependency>

    </dependencies>

    <dependencyManagement>

    <dependencies>

    <dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-dependencies</artifactId>

    <version>${spring-cloud.version}</version>

    <type>pom</type>

    <scope>import</scope>

    </dependency>

    </dependencies>

    </dependencyManagement>

    <build>

    <plugins>

    <plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

    </plugin>

    </plugins>

    </build>

    </project>

    新建cloud-eureka模块,作为服务注册中心

    跟先前构建cloud-base模块类似,构建出cloud-eureka模块。构建好后,在pom.xml添加如下代码即引入了要用到的spring cloud的依赖。

    <parent>

    <groupId>peng.cloud</groupId>

    <artifactId>cloud-base</artifactId>

    <version>1.0-SNAPSHOT</version>

    <relativePath>../cloud-base</relativePath>

    </parent>

    pom.xml的所有内容如下,粗体是新加的:

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>

    <groupId>peng.cloud</groupId>

    <artifactId>cloud-base</artifactId>

    <version>1.0-SNAPSHOT</version>

    <relativePath>../cloud-base</relativePath>

    </parent>

    <groupId>peng.cloud</groupId>

    <artifactId>cloud-eureka</artifactId>

    <version>1.0-SNAPSHOT</version>

    </project>

    入口java文件内容如下截图所示

    java application entry file

    在resource目录下的application.yml文件的内容如下:

    application.yml

    到这一步,cloud-eureka就可以正常起来了。它用来完成服务的发现和关联相关事情。后面我们就能体会到它的用处。

    构建cloud-shopping服务

    这个服务是购物的服务,构建的步骤方式跟cloud-eureka类似。

    java文件如下:

    app

    application.yml文件如下:

    application.yml

    可以看到,这个服务会挂到8802端口。

    构建cloud-express服务

    这个服务是快递服务。就是购物之后,会将物品快递出来。

    方法和文件内容都差不多,都略过不截图了。

    案例逻辑关系说明

    这里有两个服务,cloud-shopping负责购物处理,cloud-express负责快递处理。就是购物完了之后,会将物品快递到客户家去。因此,

    cloud-shopping

    cloud-shopping模块,有一个controller来响应客户的服务请求,实现截图如下:

    ShoppingController.java

    响应buy请求。

    ShoppingService的实现截图如下:

    ShoppingService.java

    @Service的注解意味着可以用系统AutoWired方式来自动创建出来,而不用new。 ShoppingService会调用cloud-service的服务来获取一个快递地址。(case不太合理,不过大家知道我的意思就行,就是了解服务之间的交互方法)

    cloud-express

    cloud-express也是有两个类。一个controller,一个service。因为都简单,直接上图,不再左说明。

    ExpressController.java ExpressService.java

    所有的代码都介绍完毕了。下图是工程的模块摆放截图:

    下面就启动下面图中的三个服务来看看效果吧。

    三个module对应三个配置启动项目

    先启动EruekaApplication,再启动后面两个。

    运行效果图如下:

    浏览器访问截图

    用postman访问的结果展示

    postman访问截图

    相关文章

      网友评论

          本文标题:SpringCloud使用Ribbon组件完成跨服务通讯

          本文链接:https://www.haomeiwen.com/subject/mnltlctx.html