

[每天学习微服务(一)] ServiceComb+SpringCloud Zuul
source link: https://www.tuicool.com/articles/iEJbeuy
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在微服务架构模式中后端服务的实例数一般是动态的,于客户端而言很难发现动态改变的服务实例的访问地址信息,服务网关能对用户提供统一的入口。
ServiceComb Java-Chassis 内置了网关服务EdgeService,开发者可以非常简单的搭建一个EdgeService服务。
具体可参考: https://docs.servicecomb.io/ja ... .html
本文将介绍ServiceComb与SpringCloud的Zuul网关组件协同工作,以构建微服务应用。ServiceComb 在自身的处理链HandlerTrain中已完成Zuul的对接,用户用极简单的方法配置后即可使微服务应用具备网关服务的能力。
为使读者更好地理解,本文将编写一个简单的 Hello 微服务,并启动2个实例来进行演示。
Hello微服务提供hello/{name}接口,只需从前端输入参数name就可从后端微服务获取到程序员百看不厌的Hello world结果。
微服务模式下的Hello应用模型
技术准备
ServiceComb 作为后端微服务核心框架
ServiceCenter 作为服务发现与注册中心
SpringCloud Zuul 组件做服务网关
环境准备
以下环境为Windows 64位系统
● 安装git,详情可参考git安装教程
● 安装JDK 1.8,详情可参考JDK安装教程。
● 安装Maven 3.x,详情可参考Maven安装教程
ServiceCenter安装
下载地址:
http://mirrors.hust.edu.cn/apa ... .1.0/
下载后解压如下▼
【2】
在该目录下双击service-center.exe即可启动,命令窗口中出现如下信息基本代表ServiceCenter启动成功,从这个信息也可以得知ServiceCenter监听的是30100端口,等下配置文件要用到。
问题点:有可能会有如下信息,这个一般是端口被占用,很可能你打开了两个ServiceCenter,都关闭后再打开就可以了。
示例
一、后端微服务 HelloService
01.添加依赖
新建maven项目HelloService,pom文件如下
02.配置
新建ServiceComb配置文件src/main/resources/microservice.yaml,内容如下
▼
03.项目入口
新建启动类HelloApplication.java,内容如下
▼
新建Controller类HelloController.java (这里我习惯SpringMvc的叫法,重点看注解)
04.启动
到此,Hello微服务就写完了。这里要启动2个实例。
1.先打包,执行mvn clean package
2.在项目根目录下target目录下将lib目录和生成的jar包复制到另一个目录中
3.复制jar包,修改其中一个jar包微服务启动端口号为8888(通过WinRar解压缩软件打开jar包并打开microservice.yaml文件修改里面的rest端口号)
4.在当前目录打开两个cmd命令窗口,分别执行命令java -jar HelloService-7777.jar和java -jar HelloService-8888.jar 。此时已经启动了2个微服务实例。
二、编写Zuul网关服务
01. 添加依赖
新建maven项目 zuulserver,pom文件如下
【12】
02.配置文件
新建springboot配置文件src/main/resources/application.yaml,内容如下
新建ServiceComb配置文件src/main/resources/microservice.yaml,内容如下
03.项目入口
新建启动类 ZuulApplication.java
新建静态文件 src/main/resources/static/index.html,内容如下 (static目录是按springboot项目规范,属于应用静态文件根目录)
【17】
04.启动
到此,网关服务器写完,如下在IDEA里面直接启动应用
三. 演示效果
浏览器访问 http://localhost:8080/ ,如下图。 在输入框中输入姓名,就可以在下面看到打招呼的信息
连续点击几次打招呼按钮,可以在启动的2个Hello微服务实例的控制台中看到被调用的信息,如下图(由于这里使用的ServiceComb默认的负载均衡策略 轮询,可见到两个实例都均被调用,关于负载均衡,我们将在后续的文章中解读)。
此时用户并不需要关心具体哪个实例被调用了,访问的是哪个后端的实例地址,它只要访问网关就可以了:)
总结
从以上的示例可以看出,通过 ServiceComb 结合SpringCloud Zuul 实现服务网关功能只需一些简单的配置。后续可以在网关服务上实现统一的鉴权,日志记录,和自定义过滤器等。
了解更多信息请访问:
官方网站 http://servicecomb.apache.org/
Github代码仓库至此,第一章节就结束咯,期待志同道合的朋友们加入,ServiceComb的大门为你们敞开~用心做开源,不忘初衷~
Recommend
-
154
引言:前面一个系列文章介绍了认证鉴权与API权限控制在微服务架构中的设计与实现 ,好多同学询问有没有完整的demo项目,笔者回答肯定有的。由于之前系列文章侧重讲解了权限前置,所以近期补上完整的后置项目,但是这最好有一个完整的微服务调用。本文主要讲下API网...
-
76
网关在微服务里的角色 在微服务架构体系里,网关是非常重要的一个环节,它主要实现了一些功能的统一处理,包括了: 统一授权 统一异常处理 路由导向 跨域处理...
-
34
-
33
今天是南方的小年 南方的小年时间为 2019年1月29日 农历腊月廿四,星期二 小蜜蜂在此恭祝大家小年...
-
47
-
31
-
77
点击蓝色文字添加关注! 推荐指数 ★★★★★ 在分布式环境中,许多服务依赖项中的一些不可避免地会失败。Hystrix是一个Java类库,可通过添加容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的...
-
28
基于 ServiceComb 和 SpringCloud Zuul 快速构建微服务系统 2 分钟 阅读 基于ServiceComb和Zuul实现微服务网关,如此一来用户只需要专注实现其业务需求。 本文将以...
-
10
至此,已实现基于Eureka的服务发现,基于Ribbon的负载均衡,Feign也为我们提供了很不错的远程调用能力,使用Hystrix后,高并发场景下应用也不会被别人拖死——咱们的微服务架构已经日趋完善! 然而,迄今为止,只讨论了微服务之间的调用,尚没讨论如何应对...
-
11
Spring Cloud之Finchley版学习(十八)-Zuul深入 作者: wencst 分类: JAVA,微服...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK