文章插图
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,不然就请求失败 。
filters:过滤,可以过滤请求信息 , 这里只用到了过滤路由的路径 。
filters—StripPrefix:过滤掉请求地址总的路径,每个【/】分割一对路径,这个功能非常有用 , 因为配置路径时,通常会加上前缀来区分服务,这个过滤可以过滤掉前缀 。
配置完成后启动项目,访问如下地址,结果如下:
http://localhost:5184/kiba1/helloWorld/GetName
文章插图
http://localhost:5184/kiba2/helloWorld_kiba2/GetAge
文章插图
如上图 , 我们已经实现了微服务的网关+注册中心+单体服务注册了 。
结语
Java的微服务真的非常便捷,通过一篇比较好的文章即可学会,通过简单的配置,就可以搭建完成 。真是微服务界的王者 。
----------------------------------------------------------------------------------------------------
到此,SpringCloud搭建微服务已经介绍完了 。
代码已经传到Github上了,欢迎大家下载 。
Github地址:https://github.com/kiba518/kibacloud
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!若您觉得这篇文章还不错 , 请点击下方的【推荐】,非常感谢!
https://www.cnblogs.com/kiba/p/16738718.html
文章插图
推荐阅读
- 基于Netty的TCP服务框架
- 干嘛和怎么了的意思有什么区别(咋的了和怎么了是一个意思吗)
- Ruoyi字典源码学习
- [CG从零开始] 6. 加载一个柴犬模型学习UV贴图
- 女生说怎么了什么意思(一个女人能忍住几天不找你聊天)
- 记Windows的一个存在了十多年的bug
- iPad Air 3 深度评测
- 八 Netty 学习:新连接接入源码说明
- 学习记录-Python的局部变量和全局变量
- webpack打包思路与流程解析