如上所示,远程调用使用的是RestTemplate,不过调用的URL稍微做了修改,如上所示,我们请求的url地址是【http://eureka-kiba2/helloWorld/GetName】,可以看到,我们将ip替换为了在eureka中注册的应用名了 。
在其他的注册中心中,比如consul,也是通过应用名来调用单体服务的,这种调用模式属于潜规则了 。
下图为各个单体服务在注册中心注册的应用名 。

文章插图
在网页输入http://localhost:5183/Remote/TestRestRequest,输出结果如下图:

文章插图

文章插图
PS:Eureka还可以通过配置实现负载均衡,因为注册到注册中心的服务,使用【协议+应用名+controller】的模式请求,所以将同一个服务发布到不同服务器, 调用时,因为应用名相同,就可以进行请求分流了,进而实现负载均衡了 。
网关
网关的作用主要是将请求重新分发 。现在我们新建一个项目用于做网关 。
与上文一样,在项目上右键-->new-->Module-->Spring Initializr 。
然后在选择依赖jar包时,选择Spring Cloud Routing——Getway,如下图:

文章插图
在Eureka中,网关也是要作为客户端注册进注册中心的 。
也就是说,我们必须引用eureka-client,如下:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>还要在启动类上增加@EnableEurekaClient注解,如下:
@EnableEurekaClient@SpringBootApplicationpublic class GetwayApplication {?public static void main(String[] args) {SpringApplication.run(GetwayApplication.class, args);}?}然后,我们配置Getway中最复杂的内容,application.yml配置 。
详细配置如下:
server:port: 5184spring:application:name: getwaycloud:gateway:discovery:# locator需要打开,不然通过 lb://.. 方式请求不到locator:enabled: true #开启 Gateway 服务注册中心服务发现routes:- id: kiba1 # 路由的id,要求唯一,通常使用应用名uri: lb://eureka-kiba #lb是一个动态路由协议,后面的eureka-kiba 是要跳转的服务名称 。predicates:- Path=/kiba1/helloWorld/** # 指定匹配的controller,也可以指定到方法,比如 - Path=/helloWorld/GetName/** 这里kiba1会在下面被过滤掉,即请求的是lb://eureka-kiba/helloworldfilters:- StripPrefix=1 #过滤掉一个请求前缀# JwtAuthorization- id: kiba2uri: lb://eureka-kiba2predicates:- Path=/kiba2/helloWorld_kiba2/**filters:- StripPrefix=1eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://localhost:5180/eureka #注册中心地址#healthcheck:#enabled: true请求注册中心的服务采用【协议+应用名+controller】的模式,但在Getway里,需要把协议从http改为了lb,才能请求注册中心的服务,开启lb协议需要配置locator的enable为true 。
应用名就是在注册中心注册的应用名,
routes:指定下面就是配置路由的配置模块 。
id:路由的id,要求唯一,通常使用应用名 。
predicates:断言,就是判断请求是否符合条件,符合条件方可请求,即使用一些已经定义好的配置条件过滤 。
predicates—Path:指定匹配的controller,也可以指定到方法,比如 - Path=/helloWorld/**,这样配置的话就是要求,请求url格式必须为http://localhost:5184/helloWorld,不然就请求失败 。
经验总结扩展阅读
- MC中如何做暗门
- 怎么用qq定位一个人的位置
- 平行志愿如何填报
- 什么是超参数
- 基于Netty的TCP服务框架
- 鸡蛋饼的热量
- 一个沃柑的热量大概是多少?
- 家里有一个蟑螂就会有一窝吗
- 酸奶过期了一个月有什么用
- 一个钵仔糕多少克