• 首页

  • 笑一笑

  • 相册

  • 文学

  • 日志

  • 关于页面
u f a n y
u f a n y

英杰

获取中...

11
25

国产微服务网关-Soul(真香)

发表于 2020-11-25 • 被 2,881 人看爆

What is the Soul?

一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生!

是不是很吊的一句话,站在巨人身上那么这些巨人也就变成了矮子。

整体架构如下图所示:

 

是不是很炫反正我是没看懂

部署单机版

Soul 单机部署

操作在windows环境

安装SoulAdmin

souladmin:控制台,负责维护网关的元数据、配置等等,并提供给 SoulBootstrap 网关服务读取。

在mysql数据库中执行下面图中sql,12张表

在浏览器输入https://yu199195.github.io/jar/soul-admin.jar 回车下载即可,yml文件复制一份在外部启动,用自己的数据库

启动命令:java -jar soul-admin.jar --spring.config.location=xxxxx\application-local.yml

启动成功后

通过日志看到 Soul Admin 启动在 9095 端口。使用浏览器,访问 http://127.0.0.1:9095/ 地址,进入登录页,账号密码分别是:admin 和123456

安装SoulBootstrap

SoulBootstrap:网关服务,负责启动网关,并转发请求到后端服务。

在浏览器输入https://yu199195.github.io/jar/soul-bootstrap.jar 回车下载即可,yml文件复制一份在外部启动,用自己的数据库

启动命令:java -jar soul-bootstrap.jar --soul.sync.websocket.url="ws://localhost:9095/websocket",如下图表示启动成功

使用浏览器,访问 http://127.0.0.1:9195

引入网关对http的代理插件

针对其他方式参考官方文档:https://dromara.org/website/zh-cn/docs/soul/user-http.html

官方代码gitee地址:https://github.com/Dromara/soul/tree/master

soul网关使用 divide 插件来处理http请求

 

 

SpringBoot项目

pom依赖

<properties>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.source>1.8</maven.compiler.source>
		<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
	</properties>
&lt;dependencyManagement&gt;
	&lt;dependencies&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
			&lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
			&lt;version&gt;${spring.boot.version}&lt;/version&gt;
			&lt;type&gt;pom&lt;/type&gt;
			&lt;scope&gt;import&lt;/scope&gt;
		&lt;/dependency&gt;
	&lt;/dependencies&gt;
&lt;/dependencyManagement&gt;

&lt;dependencies&gt;
	&lt;!-- 引入 SpringMVC 相关依赖,并实现对其的自动配置 --&gt;
	&lt;dependency&gt;
		&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
		&lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
	&lt;/dependency&gt;

	
	&lt;dependency&gt;
		&lt;groupId&gt;org.dromara&lt;/groupId&gt;
		&lt;artifactId&gt;soul-spring-boot-starter-client-springmvc&lt;/artifactId&gt;
		&lt;version&gt;2.2.0&lt;/version&gt;
	&lt;/dependency&gt;
	&lt;dependency&gt;
		&lt;groupId&gt;org.dromara&lt;/groupId&gt;
		&lt;artifactId&gt;soul-client-springmvc&lt;/artifactId&gt;
		&lt;version&gt;2.2.0&lt;/version&gt;
	&lt;/dependency&gt;
&lt;/dependencies&gt;

yml中solu配置

soul:
  http:
    adminUrl: http://localhost:9095
    port: 8080
    contextPath: /boot
    appName: soulboot
    full: false  

启动项

@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}

}

controller层

import org.dromara.soul.client.springmvc.annotation.SoulSpringMvcClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
@SoulSpringMvcClient(path = "/user")
public class UserController {

private Logger logger = LoggerFactory.getLogger(getClass());

@GetMapping("/get")
@SoulSpringMvcClient(path = "/get")
public String getUser(@RequestParam("id") Integer id) {
    return "DEMO:" + id;
}

@PostMapping("/create")
public Integer createUser(@RequestBody UserCreateDTO createDTO) {
    logger.info("[createUser][username({}) password({})]", createDTO.getNickname(), createDTO.getGender());
    return 1;
}

}

dao层

public class UserCreateDTO {
/**
 * 昵称
 */
private String nickname;
/**
 * 性别
 */
private Integer gender;

public String getNickname() {
    return nickname;
}

public UserCreateDTO setNickname(String nickname) {
    this.nickname = nickname;
    return this;
}

public Integer getGender() {
    return gender;
}

public UserCreateDTO setGender(Integer gender) {
    this.gender = gender;
    return this;
}

}

启动后出现下图表示成功

HTTP API 方法的元数据到 Soul Admin 控制台,启动后慧自动配置

然后在postman请求

通过网关bootstrap转发到后台

上面就是对soul对springboot配置的网关,未完待续。。。。。。

分享到:
预测师的架构入门学习总结
使用 MHA 实现 MySQL 主从复制高可用
  • 文章目录
  • 站点概览
英杰

帅哥英杰

QQ Email RSS
看爆 Top5
  • 使用 MHA 实现 MySQL 主从复制高可用 3,210次看爆
  • nginx反向代理配置去除前缀 2,957次看爆
  • 国产微服务网关-Soul(真香) 2,882次看爆
  • Kubernetes - Xshell连接虚拟机 & 搭建Kubernetes基础集群 2,662次看爆
  • 不把一切看得太重,生命才会更加洒脱 2,625次看爆

Copyright © 2025 英杰 · 冀ICP备19001756号-1

Proudly published with Halo · Theme by fyang · 站点地图