传统SSH项目集成到Springcloud
Posted 程序员超时空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传统SSH项目集成到Springcloud相关的知识,希望对你有一定的参考价值。
通过sidecar模式,将ssh、或非java的web应用接入springcloud集群上。
1、独立出一个springboot,用于sidecar。
@EnableSidecar
@SpringBootApplication
public class SidecarApplication
public static void main(String[] args)
SpringApplication.run(SidecarApplication.class, args);
application.yml:
server:
port: 5678
spring:
application:
name: sidecar
sidecar:
# 配置接入web的端口
port: 8090
home-page-uri: http://localhost:$sidecar.port/sshweb
# 配置接入web的健康检查rest接口,sidecar将请求该url,用以确定接入应用是否存活.
health-uri: http://localhost:$sidecar.port/sshweb/api/health/status
2、接入web应用自行实现该rest方法
@RequestMapping(value = "/api/health/status", method = RequestMethod.GET)
@ResponseBody<br>
public String status()
return "status":"UP";
security配置文件上,将该rest接口作为非拦截项目
3、springboot访问接入web项目时,使用Feign方式
@FeignClient(name = "sidecar")
public interface SidecarDemoFeignClient
@RequestMapping("/sshweb/api/boottest/get")
public String get(@RequestParam("name") String name);
4、接入项目访问spring-boot-client的方法
HttpClientUtil.synchGet(new URI(“http://localhost:5678/springboot-service-id/api/demo/invoke”));
接入项目请求springboot-client应用时,host和port配置为sidecar的,请求会经由sidecar进行请求转接到对应的boot-client上。
假定springboot-service-id上有如下应用
@RequestMapping("/api/invoke/web")
@ResponseBody
public String invokeByNormalWeb()
return "这是个神马";
5、负载还是有点问题。
如果接入应用非java应用、或者由于版本过低无法引用DiscoveryManager来获取eureka上的服务器列表的话,甚至于eurekaserver屏蔽了服务列表的rest接口,那么只能使用nginx等反向代理工具,形成web项目<->nginx-<->sidecar模式了。如果eurekaserver没屏蔽服务列表获取的rest接口,自己做个balance选择器也没毛病
以上是关于传统SSH项目集成到Springcloud的主要内容,如果未能解决你的问题,请参考以下文章