一、目标
运行Soul网关SpringCloud插件并了解其背后的运行原理。
二、内容
2.1 背景
先一起来了解一下SpringCloud:
-
SpringCloud为开发者提供工具用来快速的构建分布式系统中的某些常见模式(例如,配置管理、服务发现、断路器、智能路由、微代理、控制总线,一次性令牌、全局锁、leader选举、分布式会话、集群状态)。分布式系统的协调导致了样板式样,并且使用Spring Cloud开发人员可以快速实现这些样板的服务和应用程序。它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。
-
springcloud专注于为典型用例提供良好的开箱即用体验,并提供覆盖其他用例的扩展机制。
2.2 SpringCloud插件使用
2.2.1 启动soul-admin
- 启动soul-admin服务,在后台把SpringCloud插件开启;
-
在soul-bootstrap里面引入SpringCloud插件支持,如果使用Eureka作为注册中心的话,还要加上Eureka的依赖;
<!--soul springCloud plugin start--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-springcloud</artifactId> <version>${last.version}</version> </dependency> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-httpclient</artifactId> <version>${last.version}</version> </dependency> <!--soul springCloud plugin end--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>2.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.2.0.RELEASE</vsion> </dependency>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.2.0.RELEASE</version> </dependency>
- 修改soul-bootstrap配置文件;
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true
2.2.2 启动Eureka及网关服务
- 找到项目里面的soul-examples-eureka服务,修改配置文件,然后启动服务。
配置文件如下:
eureka: instance: hostname: ${hostname:localhost} preferIpAddress: true lease-renewal-interval-in-seconds: 2 lease-expiration-duration-in-seconds: 6 server: peerEurekaNodesUpdateIntervalMs: 60000 enableSelfPreservation: false evictionIntervalTimerInMs: 5000 client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://localhost:8761/eureka/ healthcheck: enabled: true eurekaServiceUrlPollIntervalSeconds: 60
-
接下来再启动网关soul-bootstrap服务;
-
然后可以登录Eureka的管理页面,来查看服务注册情况;
http://localhost:8761/
2.3 SpringCloud服务接入网关
- 在你的项目里面引入以下依赖
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-client-springcloud</artifactId>
<version>${last.version}</version>
</dependency>
- 在你的yml配置文件中新增如下配置
soul:
springcloud:
admin-url: http://localhost:9095
context-path: /springcloud
full: true
# adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加http://
# contextPath: 为你的这个mvc项目在soul网关的路由前缀,这个你应该懂意思把? 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
# full: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller
-
在你的
controller
的接口上加上@SoulSpringCloudClient
注解。然后就可以通过网关来调用了;- 接下来我们运行Soul网关里面的soul-examples-springcloud项目,这个项目模拟的就是你的提供服务的项目,你的项目要使用SpringCloud插件,可以参考这个例子;
-
启动你的服务,然后就可以开始使用网关服务了;
-
首先用项目原地址访问:
-
然后使用网关来进行服务转发
三、总结
今天学习了SpringCloud插件的使用,明天分析插件背后的运作原理。